Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2018-01-30 | 5062 |
5.00
из
|
Заказать работу |
|
|
Оператор X % Y дает остаток от деления X на Y. Если X меньше Y, т.е. целая часть результата деления равна 0, оператор % будет возвращать X. Таким образом:
· Пока brightness + 1 меньше 256, в brightness записывается значение brightness + 1
· Как только brightness + 1 принимает значение 256, результатом (brightness + 1) % 256становится 0 и на следующей итерации loop() всё начинается сначала.
Задания для самостоятельного решения
Измените программу так, чтобы яркость шкалы росла только до половины от максимальной.
#define CONTROL_PIN 9
int brightness = 0;
void setup()
{
pinMode(13, OUTPUT);
pinMode(CONTROL_PIN, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
brightness = (brightness + 1)% 128;
analogWrite (CONTROL_PIN, brightness);
delay (10);
}
Измените программу так, чтобы шкала становилась максимально яркой в три раза быстрее, без изменения функции delay.
#define CONTROL_PIN 9
int brightness = 0;
void setup()
{
pinMode(13, OUTPUT);
pinMode(CONTROL_PIN, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
brightness = (brightness + 3)% 256;
analogWrite (CONTROL_PIN, brightness);
delay (10);
}
3.Измените исходную программу так, чтобы такой же результат был получен без использования операции %, но с применением условного оператора if.
#define CONTROL_PIN 9
int brightness = 0;
void setup()
{
pinMode(13, OUTPUT);
pinMode(CONTROL_PIN, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
if (brightness <= 255)
{
analogWrite (CONTROL_PIN, brightness);
delay (10);
++brightness;
}
else
brightness=0;
}
Эксперимент 7. Бегущий огонёк
В этом эксперименте мы заставляем огонёк бежать по светодиодной шкале.
Схема
Код
#define FIRST_LED_PIN 2
#define LAST_LED_PIN 11
void setup()
{
for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; ++pin)
pinMode(pin, OUTPUT);
}
void loop()
{
unsigned int ms = millis();
int pin = FIRST_LED_PIN + (ms / 120) % 10;
digitalWrite(pin, HIGH);
delay(10);
digitalWrite(pin, LOW);
}
Вопросы для проверки себя
Почему в данном эксперименте мы подключаем светодиодную шкалу, не используя транзистор?
Так как светодиоды в шкале будут включаться не все вместе, а по отдельности, и не будут потреблять большой ток.
|
Если бы мы включали светодиоды только на портах 5, 6, 7, 8, 9, что нужно было бы изменить в программе?
#define FIRST_LED_PIN 5
#define LAST_LED_PIN 9
void setup()
{
for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; ++pin)
pinMode(pin, OUTPUT);
}
void loop()
{
unsigned int ms = millis();
int pin = FIRST_LED_PIN + (ms / 120) % 5;
digitalWrite(pin, HIGH);
delay(10);
digitalWrite(pin, LOW);
}
3.С помощью какой другой инструкции можно выполнить действие, эквивалентное ++pin?
pin = pin + 1
В чем разница между переменными типов int и unsigned int?
Тип данных unsigned int используют для хранения целых чисел без знака, т.е. только неотрицательных. За счет лишнего бита, который теперь не используется для хранения знака, мы можем хранить в переменной такого типа значения до 65 535.
Что возвращает функция millis()?
Функция millis возвращает количество миллисекунд, прошедших с момента включения или перезагрузки микроконтроллера. Здесь мы используем ее для отсчета времени между переключениями светодиодов.
Как в данном эксперименте мы вычисляем номер порта, на котором нужно включить светодиод?
С помощью выражения (ms / 120) % 10 мы определяем, который из 10 светодиодов должен гореть сейчас. Перефразируя, мы определяем какой отрезок длиной в 120 мс идет сейчас и каков его номер внутри текущего десятка. Мы добавляем порядковый номер отрезка к номеру того порта, который в текущем наборе выступает первым.
Задания для самостоятельного решения
Измените код так, чтобы светодиоды переключались раз в секунду.
#define FIRST_LED_PIN 2
#define LAST_LED_PIN 11
void setup()
{
for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; ++pin)
pinMode(pin, OUTPUT);
}
void loop()
{
unsigned int ms = millis();
int pin = FIRST_LED_PIN + (ms / 1000) % 10;
digitalWrite(pin, HIGH);
delay(10);
digitalWrite(pin, LOW);
}
Не выключая порты, сделайте так, чтобы огонёк бежал только по средним четырем делениям шкалы.
#define FIRST_LED_PIN 2
#define LAST_LED_PIN 11
void setup()
{
for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; ++pin)
pinMode(pin, OUTPUT);
}
void loop()
{
unsigned int ms = millis();
int pin = FIRST_LED_PIN + 3 + (ms / 120) % 4;
digitalWrite(pin, HIGH);
delay(10);
|
digitalWrite(pin, LOW);
}
3.Переделайте программу так, чтобы вместо int pin = FIRST_LED_PIN + (ms / 120) % 10перемещением огонька управлял цикл for
|
|
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!