Задания для самоподготовки

Задание 1. Динамический указатель поворотов

Собрать указанную схему на макетной плате. Написать скетч для микроконтроллера, имитирующий работу автомобильного светодиодного указателя поворотов: последовательное включение всех светодиодов (с интервалом 50мс), после включения всей шкалы - одновременное выключение светодиодов. Повтор включения через 450мс.

Задание 2. Индикаторная шкала

Собрать схему на макетной плате, продемонстрировать работоспособность схемы. Не подавать на схему напряжение более 12 вольт. 

Выполнить монтаж схемы пайкой на паечной макетной плате.

Задание 3. Мультивибратор

Собрать схему на макетной плате, продемонстрировать работоспособность схемы. Не подавать на схему напряжение более 5 вольт. Мигание светодиодов должно быть полностью симметричным

Выполнить монтаж схемы пайкой на паечной макетной плате.

Задание 4. Мультивибратор на NE555

Собрать схему на макетной плате, продемонстрировать работоспособность схемы. Не подавать на схему напряжение более 5 вольт. Мигание светодиодов должно быть полностью симметричным!

Задание 5. Динамический указатель поворотов на сдвиговом регистре

Собрать схему на макетной плате с использованием сдвигового регистра 74HC595

Написать скетч для микроконтроллера, имитирующий работу автомобильного светодиодного указателя поворотов: последовательное включение всех светодиодов (с интервалом 50мс), после включения всей шкалы - одновременное выключение светодиодов. Повтор включения через 450мс.

Внешнее питание не подается.

Выводы микросхемы:

  • VCC (16) - питание микросхемы, +5 В
  • GND (8) - общая земля
  • SER (14) - линия входных данных (пин данных)
  • SRCLK (11) - линия такта (синхронизирующий пин)
  • RCLK (12) - переносит данные из памяти на Qx (пин защёлка)
  • Qx - 8 выходов микросхемы общего назначения
  • OE (13) - линия включения/выключения выходов Qx (притянуть к земле)
  • MR (10) - линия обнуления состояния регистра (притянуть к +5В)

#define DATA_PIN    10 // пин данных
#define LATCH_PIN   11 // пин защелки
#define CLOCK_PIN   12 // пин тактов синхронизации

byte b[6] = {         
  0b00000000,	//все выводы в 0 (LOW)
  0b11111111,		//все выводы в 1 (HIGH)
  0b11110000,
  0b00001111,
  0b10101010,	//Qa в 0, Qb в 1, Qc в 0 и т. д. 
  0b01010101,   //ОТСЧЕТ адреса справа налево
};

void setup() {
  pinMode(DATA_PIN, OUTPUT);    // инициализация пинов
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);
  digitalWrite(LATCH_PIN, HIGH);
}

void loop() {
  digitalWrite(LATCH_PIN, LOW); // "открываем защелку"
  shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, b[5] );//отправляем данные
  digitalWrite(LATCH_PIN, HIGH);  // "закрываем защелку"
}

Задание 6. Таймер

Используйте семисегментный индикатор с тремя разрядами. Первый разряд - минуты, второй и третий - секунды. Разделитель между минутами и секундами - точка.  Включение таймера должно происходить после однократного нажатия на кнопку. Второе нажатие на кнопку останавливает таймер. Вторая кнопка должна служить сбросом таймера. При достижении 10 минут таймер должен автоматически сброситься и остановиться.

При подключении светодиодов индикации используйте резисторы номиналом не менее 220 Ом. Индикатор с общим катодом, для управления разрядом подавайте на управляющий пин логический ноль - низкое состояние, а на светодиодные индикаторы - логическую единицу.

Для выполнения задания используйте динамическую индикацию с общим катодом. Например, нам необходимо отобразить число 198. Для этого следует в первый момент времени подать высокий потенциал на аноды сегментов, образующих единицу – b и c, а на общий катод первого разряда подать низкий потенциал. Общие катоды оставшихся двух разрядов – digit2, digit3 остаются не подключенными (высокий сигнал).

Во второй момент времени получают питания сегменты, образующие цифру 9, общий катод второго разряда подключается к минусу, а digit1 теряет питание; digit2, как и раннее – остается не подключенным (на высоком уровне). Смена разрядов должна идти в цикле, длительность задержки между сменой разрядов не более 5мс.

Задание 6.1 Таймер на сдвиговом регистре.

Выполните задание 6 используя сдвиговый регистр 74HC595. Начертите принципиальную схему получившегося устройства в EasyEDA.

Задание 7. Энкодер

Подключите энкодер к микроконтроллеру. Напишите скетч, демонстрирующий работу энкодера - увеличение, уменьшение значений, нажатие кнопки. Значения должны выводиться в монитор порта только в момент изменения состояния энкодера.

Задание 7.1 Энкодер и светодиод

Соберите схему с энкодером и светодиодом. Напишите скетч для микроконтроллера - регулировка яркости светодиода вращением энкодера. Нажатие на кнопку - сбрасывает яркость светодиода в ноль. Дополнительно можно реализовать функционал восстановления уровня яркости после отключения питания микроконтроллера.

Начертите принципиальную схему задания в EasyEDA.

Задание 8. Игра на реакцию

Собрать схему: используя необходимые электронные компоненты подключить 4 светодиода одного цвета и 4 кнопки к микроконтроллеру.

Реализовать следующий алгоритм игры: 

  1. Игра должна начинаться после кратковременного свечения всех светодиодов. 
  2. Окончание игры - все светодиоды одновременно периодически светятся.
  3. В процессе игры: после включения светодиода (включение должно происходить случайным образом), необходимо как можно быстрее нажать соответствующую кнопку. 
  4. Длительность игры задается количеством вспышек светодиодов.
  5. После выполнения всех попыток, на монитор порта Arduino IDE выводится:
  • количество вспышек светодиодов;
  • количество правильных попыток;
  • среднее и лучшее время реакции.

Задание 9. Программирование светодиодной матрицы

Для последовательного подключения большого количества сдвиговых регистров используется 9 (QH) выход регистра — по нему данные продавливаются по мере поступления. Выходы 11 (SRCLK, задающий тактовые импульсы) и 10 (RCLK, «защелка») подключаются параллельно и управляются синхронно. Каждый вызов shiftOut() продавливает данные по цепочке, после закрытия «защелки» данные синхронно на всех регистрах подаются на выводы микросхемы.

Пример включения светодиода L1:


digitalWrite(latchPin, LOW); 
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, LSBFIRST, 0b10000000);
digitalWrite(latchPin, HIGH);

Пользуясь данными пояснениями и принципиальной схемой из задания 3 составьте программу реализующую последовательное включение светодиодов на матрице: от L1 до L36.

Одновременно должен светиться только один светодиод. При работе учитывать требования из задачи 3 в части питания схемы.

Задание 10. Игра "Угадай код"

Собрать схему из трех RGB светодиодов и трех кнопок.

Микроконтроллер случайным образом генерирует число из трех цифр: 1, 2, 3. Необходимо, нажимая на кнопки в правильной последовательности угадать сгенерированное число.

Если игрок угадал правильно - соответствующий светодиод светится зеленым, если нет - красным. В конце игры все светодиоды светятся синим и периодически одновременно выключаются (мигают).

Начало игры обозначается одновременным изменением всех светодиодов по цветовому спектру от красного до синего, после начального цикла светодиоды гаснут.

Результат игры должен быть выведен в монитор порта с соответствующими пояснениями.

Задание 11. Удаленное управление микроконтроллером

Собрать схему из двух RGB светодиодов.

Реализовать управление цветами светодиода с компьютера через COM-порт. Соответствующие команды, отправляемые в порт, должны включать соответствующий цвет светодиода: red, green, blue. По умолчанию команда идет на первый светодиод, переключение на второй светодиод командой: two, обратно: one.

* дополнительное задание

После отключения питания восстанавливается тот цвет светодиода, который был включен при отключении микроконтроллера.