Занятие 39-40
Эксперименты с линейкой светодиодов
Сегодня мы будем производить эксперименты с кнопкой и светодиодной шкалой.
Создадим электронное устройство в соответствии со схемой:
Задача 1
Напишите программу, которая бы выводила на экран монитора номер нажатия на кнопку.
Для решения этой задачи нам потребуется определить переменные для кнопки BUTTON_PIN , для первого и последнего пина p1 и p10, количества нажатий k:
int BUTTON_PIN=13;
int p1=2;
int p10=11;
int k=0;
В void setup() мы должны настроить монитор последовательного доступа, кнопку, как элемент нажатия, и все пины с p1 по p10, как цифровые входы:
void setup()
{
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
for (int pin = p1; pin <= p10; pin++)
pinMode(pin, OUTPUT);
}
В void loop() проверяем условие: если кнопка нажата и не отпущена, то ждем 100мс, если отпущена, то увеличиваем число нажатий: k=k+1. Но так как надо учитывать время общей задержки, то k будем считать по формуле: k=(k+1)%100;
Печать k будем выполнять так:
Serial.print (" k=");
Serial.print (k);
Serial.print ("\n");
После выполнения данной программы при нажатии на кнопку на экране монитора должно получиться:
Задача 2
Напишите программу, которая бы позволяла зажигать светодиод на шкале, соответствующий номеру нажатия кнопки. Если кнопка нажата 11 раз, то снова зажигается 1 светодиод и т.д.
Задача 3
Напишите программу, которая бы выдавала бегущие огни в одну сторону при четном нажатии и в другую сторону при нечетном нажатии.
Для реализации бегущего огонька будем использовать цикл:
for (pin=p1; pin<=p10; pin++)
{
digitalWrite(pin, HIGH);
delay(100);
digitalWrite(pin, LOW);
delay(100);
}
Подумайте, что изменится в цикле, когда огонек побежит в другую сторону?