СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Проект «Счётчик нажатий»

Категория: Прочее

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Проект «Счётчик нажатий»»

Проект «Счётчик нажатий»

#define DATA_PIN 13 // пин данных (англ. data)

#define LATCH_PIN 12 // пин строба (англ. latch)

#define CLOCK_PIN 11 // пин такта (англ. clock)

#define BUTTON_PIN 10

 

int clicks = 0;

boolean buttonWasUp = true;

byte segments[10] = {

0b01111101, 0b00100100, 0b01111010, 0b01110110, 0b00100111,

0b01010111, 0b01011111, 0b01100100, 0b01111111, 0b01110111

};

 

void setup()

{

pinMode(DATA_PIN, OUTPUT);

pinMode(CLOCK_PIN, OUTPUT);

pinMode(LATCH_PIN, OUTPUT);

pinMode(BUTTON_PIN, INPUT_PULLUP);

}

 

void loop()

{

// считаем клики кнопки, как уже делали это раньше

if (buttonWasUp && !digitalRead(BUTTON_PIN)) {

delay(10);

if (!digitalRead(BUTTON_PIN))

clicks = (clicks + 1) % 10;

}

buttonWasUp = digitalRead(BUTTON_PIN);

// для записи в 74HC595 нужно притянуть пин строба к земле

digitalWrite(LATCH_PIN, LOW);

// задвигаем (англ. shift out) байт-маску бит за битом,

// начиная с младшего (англ. Least Significant Bit first)

shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, segments[clicks]);

// чтобы переданный байт отразился на выходах Qx, нужно

// подать на пин строба высокий сигнал

digitalWrite(LATCH_PIN, HIGH);

}





Список деталей для эксперимента
  • 1 плата Arduino Uno

  • 1 беспаечная макетная плата

  • 1 тактовая кнопка

  • 1 выходной сдвиговый регистр 74HC595

  • 1 семисегментный индикатор

  • 7 резисторов номиналом 220 Ом

  • 24 провода «папа-папа»









Обратите внимание
  • В этом эксперименте мы впервые используем микросхему, в данном случае — выходной сдвиговый регистр 74HC595. Микросхемы полезны тем, что позволяют решать определенную задачу, не собирая каждый раз стандартную схему.

  • Выходной сдвиговый регистр дает нам возможность «сэкономить» цифровые выходы, использовав всего 3 вместо 8. Каскад регистров позволил бы давать 16 и т.д. сигналов через те же три пина.

  • Перед использованием микросхемы нужно внимательно изучить схему ее подключения в datasheet’е. Для того, чтобы понять, откуда считать ножки микросхемы, на них с одной стороны есть полукруглая выемка. Если мы расположим нашу 74HC595 выемкой влево, то в нижнем ряду будут ножки 1—8, а в верхнем 16—9.

  • На принципиальной схеме нашего эксперимента ножки расположены в другом порядке, чтобы не вышло путаницы в соединениях. Назначения выводов согласно datasheet’у подписаны внутри изображения микросхемы, номера ножек — снаружи.

  • Напомним, что на изображении семисегментного индикатора подписаны номера его ножек и их соответствие сегментам.




Пояснения к коду
  • Обратите внимание, что в этом эксперименте кодировки символов отличаются от кодировок из эксперимента «Секундомер»

  • Для того, чтобы передать порцию данных, которые будут отправлены через сдвиговый регистр далее, нам нужно подать LOW на latch pin (вход STcp микросхемы), затем передать данные, а затем отправить HIGH на latch pin, после чего на соответствующих выходах 74HC595 появится переданная комбинация высоких и низких уровней сигнала.

  • Для передачи данных мы использовали функцию shiftOut(dataPin, clockPin, bitOrder, value). Функция ничего не возвращает, а в качестве параметров ей нужно сообщить

    • пин Arduino, который подключен ко входу DS микросхемы (data pin),

    • пин Arduino, соединенный со входом SHcp (clock pin),

    • порядок записи битов: LSBFIRST (least significant bit first) — начиная с младшего, или MSBFIRST (most significant bit first) — начиная со старшего,

    • байт данных, который нужно передать. Функция работает с порциями данных в один байт, так что если вам нужно передать больше, придется вызывать ее несколько раз.





Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!