Занятие 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);

 }

Подумайте, что изменится в цикле, когда огонек побежит в другую сторону?