Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Дисциплины:
2018-01-30 | 5058 |
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
|
|
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!