Напишите код Задание 1
Cоздайте новый проект в Tinkercad Circuits. Добавьте пла-
ту Arduino Uno и подключите 5 или больше светодиодов,
кнопку и LCD-дисплей. Запрограммируйте несколько режи-
мов для светодиодов:
1. Светодиоды мигают в случайном порядке;
2. Светодиоды включаются последовательно, один за другим;
3. Светодиоды медленно включаются, а затем гаснут.
Запрограммируйте кнопку, чтобы по нажатию на нее
менялся режим мигания светодиодов. Придумайте ориги-
нальное название для каждого из режимов и выводите его
на LCD-дисплей. То есть пользователь нажимает на кнопку,
меняется режим, на LCD дисплее отображается название ре-
жима.
последовательность подключения светодиода и резистора в схеме не имеет значения, можно подключить и так: +5 В, резистор 300 Ом, светодиод, 0 ВИспользуемый для курса стенд содержит макетную плату, все верхние контакты которой подключены к пину +5 В (верхние на рисунке), нижние контакты – к пину Gnd (0 В, нижние на рисунке) Arduino. Эти контакты используются в схемах и для питания внешних датчиков и модулей.
Остальные отверстия соединены вместе по 5 контактов (некоторые выделены полосками в качестве примеров, таким же образом соединены и все остальные) и могут использоваться для реализации различных схем путем втыкания в отверстия макетной платы элементов и проводных соединителей типа штырек/штырек.
```cpp
// Подключение библиотек
#include
// Определение пинов для светодиодов и кнопки
#define LED1 2
#define LED2 3
#define LED3 4
#define LED4 5
#define LED5 6
#define BUTTON 7
// Определение пинов для LCD-дисплея
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
// Определение переменной для хранения текущего режима
int currentMode = 1;
void setup() {
// Настройка пинов светодиодов и кнопки
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(BUTTON, INPUT);
// Инициализация LCD-дисплея
lcd.begin(16, 2);
}
void loop() {
// Переключение режима при нажатии на кнопку
if (digitalRead(BUTTON) == HIGH) {
currentMode++;
if (currentMode > 3) {
currentMode = 1;
}
delay(200); // Задержка для предотвращения дребезга контактов кнопки
}
// Вывод названия режима на LCD-дисплей
lcd.setCursor(0, 0);
lcd.print("Mode: ");
switch (currentMode) {
case 1:
lcd.print("Random");
break;
case 2:
lcd.print("Sequential");
break;
case 3:
lcd.print("Fade");
break;
}
// Запуск выбранного режима
switch (currentMode) {
case 1:
randomMode();
break;
case 2:
sequentialMode();
break;
case 3:
fadeMode();
break;
}
}
// Режим, в котором светодиоды мигают в случайном порядке
void randomMode() {
digitalWrite(LED1, random(2));
digitalWrite(LED2, random(2));
digitalWrite(LED3, random(2));
digitalWrite(LED4, random(2));
digitalWrite(LED5, random(2));
delay(500);
}
// Режим, в котором светодиоды включаются последовательно, один за другим
void sequentialMode() {
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED3, HIGH);
delay(200);
digitalWrite(LED4, HIGH);
delay(200);
digitalWrite(LED5, HIGH);
delay(500);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
delay(500);
}
// Режим, в котором светодиоды медленно включаются, а затем гаснут
void fadeMode() {
for (int brightness = 0; brightness <= 255; brightness += 5) {
analogWrite(LED1, brightness);
analogWrite(LED2, brightness);
analogWrite(LED3, brightness);
analogWrite(LED4, brightness);
analogWrite(LED5, brightness);
delay(50);
}
for (int brightness = 255; brightness >= 0; brightness -= 5) {
analogWrite(LED1, brightness);
analogWrite(LED2, brightness);
analogWrite(LED3, brightness);
analogWrite(LED4, brightness);
analogWrite(LED5, brightness);
delay(50);
}
}
```
Данный код выполняет следующие действия:
1. Подключает необходимые библиотеки, включая LiquidCrystal для работы с LCD-дисплеем.
2. Определяет пины для светодиодов и кнопки.
3. Инициализирует LCD-дисплей с указанием пинов для подключения.
4. В функции `setup()` настраивает пины светодиодов и кнопки на соответствующие режимы работы (вход или выход).
5. В функции `loop()` происходит непрерывное выполнение следующих действий:
- Переключение режима при нажатии на кнопку.
- Вывод названия текущего режима на LCD-дисплей.
- Запуск выбранного режима, основываясь на текущем значении переменной `currentMode`.
6. По нажатию кнопки значение переменной `currentMode` увеличивается на 1 с проверкой на достижение максимального значения. Затем происходит задержка для предотвращения "дребезга" контактов кнопки.
7. Название текущего режима выводится на первую строку LCD-дисплея с помощью метода `lcd.print()`.
8. В зависимости от значения переменной `currentMode` вызывается соответствующая функция режима.
9. В функции `randomMode()` каждый светодиод мигает в случайном порядке с помощью функции `random()`.
10. В функции `sequentialMode()` светодиоды включаются последовательно, один за другим с помощью функций `digitalWrite()` и `delay()`.
11. В функции `fadeMode()` светодиоды медленно включаются и затем гаснут путем изменения яркости с помощью функции `analogWrite()` и задержки `delay()`.
Это полный код для создания проекта в Tinkercad Circuits с заданными требованиями. Теперь вам достаточно скопировать данный код и вставить его в Tinkercad Circuits, чтобы выполнить задание. Не забудьте подключить соответствующие компоненты к плате Arduino Uno перед запуском кода.