Есть схема из UNO Slot+Expander Slot(43). К плате ехпандер подключил 2 светодиода и 2 кнопки(Led1-Key1 и Led2-Key2) На плате Uno подключен бузер. Нужно рандомно зажигать светодиод. Изменение состояния порта светодиода(1 й или 2й) запускают таймер Реакция(3 секунды) Если нажата кнопка которая соответствует своему светодиоду то свето диод гаснет. Если кнопка не нажата или нажата не та кнопка то таймер Реакция включает бузер. Как сделать рандом из порта А0 и как включить и выключить светодиод от кнопки на плате ехпандер я знаю. А как от рандома включить порт светодиода на плате ехспандер а выключить кнопкой понять не могу.
Набираем рандомный код из А0, если этот код соответствует коду СД, то зажигаем. Повторяем с нужным периодом.
из порта A0 рандома не будет. Он сильно коррелирован с выполняемым кодом. Настоящий рандом берется из радиоэфира.
[ Код (C++): // библиотека для работы I²C #include <Wire.h> // библиотека для работы с модулем GPIO Expander (I²C IO) #include <GpioExpander.h> // создаём объект adio класса GpioExpander по адресу 43 GpioExpander adio1(43); // создаём объект adio класса GpioExpander по адресу 44 GpioExpander adio2(44); // создаём объект adio класса GpioExpander по адресу 45 GpioExpander adio3(45); // создаём объект adio класса GpioExpander по адресу 45 GpioExpander adio4(46); long randNumber; #define BuzzeOut 3 void setup() { randomSeed(analogRead(0)); // Инициализируем объекты expander. Для Arduino Due - adio.begin(&Wire1); adio1.begin(); adio2.begin(); adio3.begin(); adio4.begin(); // включаем I²C. Для Arduino Due - Wire1.begin(); Wire.begin(); // Инициализируем объект adio. Для Arduino Due - adio.begin(&Wire1); adio1.begin(); // настраиваем пин 5 на модуле GPIO Expander в режим выхода adio1.pinMode(5, OUTPUT); // настраиваем пин 2 на модуле GPIO Expander в режим входа adio1.pinMode(2, OUTPUT); // настраиваем пин 0 на модуле GPIO Expander в режим выхода adio1.pinMode(0, INPUT); // настраиваем пин 3 на модуле GPIO Expander в режим входа adio1.pinMode(3, INPUT); // включаем I²C. Для Arduino Due - Wire1.begin(); Wire.begin(); // Инициализируем объект adio. Для Arduino Due - adio.begin(&Wire1); adio2.begin(); // настраиваем пин 5 на модуле GPIO Expander в режим выхода adio2.pinMode(5, OUTPUT); // настраиваем пин 2 на модуле GPIO Expander в режим входа adio2.pinMode(2, OUTPUT); // настраиваем пин 0 на модуле GPIO Expander в режим выхода adio2.pinMode(0, INPUT); // настраиваем пин 3 на модуле GPIO Expander в режим входа adio2.pinMode(3, INPUT); // включаем I²C. Для Arduino Due - Wire1.begin(); Wire.begin(); // Инициализируем объект adio. Для Arduino Due - adio.begin(&Wire1); adio3.begin(); // настраиваем пин 5 на модуле GPIO Expander в режим выхода adio3.pinMode(5, OUTPUT); // настраиваем пин 2 на модуле GPIO Expander в режим входа adio3.pinMode(2, OUTPUT); // настраиваем пин 0 на модуле GPIO Expander в режим выхода adio3.pinMode(0, INPUT); // настраиваем пин 3 на модуле GPIO Expander в режим входа adio3.pinMode(3, INPUT); // включаем I²C. Для Arduino Due - Wire1.begin(); Wire.begin(); // Инициализируем объект adio. Для Arduino Due - adio.begin(&Wire1); adio4.begin(); // настраиваем пин 5 на модуле GPIO Expander в режим выхода adio4.pinMode(5, OUTPUT); // настраиваем пин 2 на модуле GPIO Expander в режим входа adio4.pinMode(2, OUTPUT); // настраиваем пин 0 на модуле GPIO Expander в режим выхода adio4.pinMode(0, INPUT); // настраиваем пин 3 на модуле GPIO Expander в режим входа adio4.pinMode(3, INPUT); } void loop() { randNumber = random(1, 8); digitalWrite(randNumber, HIGH); // считываем состояние кнопки с 0 пина на модуле GPIO Expander if (!adio1.digitalRead(0)) { // подаём на пин 2 модуля GPIO Expander «высокий сигнал» adio1.digitalWrite(2, HIGH); } else { // подаём на пин 2 модуля GPIO Expander «низкий сигнал» adio1.digitalWrite(2, LOW); } // считываем состояние кнопки с 3 пина на модуле GPIO Expander if (!adio1.digitalRead(3)) { // подаём на пин 5 модуля GPIO Expander «высокий сигнал» adio1.digitalWrite(5, HIGH); } else { // подаём на пин 5 модуля GPIO Expander «низкий сигнал» adio1.digitalWrite(5, LOW); } // считываем состояние кнопки с 0 пина на модуле GPIO Expander if (!adio2.digitalRead(0)) { // подаём на пин 2 модуля GPIO Expander «высокий сигнал» adio2.digitalWrite(2, HIGH); } else { // подаём на пин 2 модуля GPIO Expander «низкий сигнал» adio2.digitalWrite(2, LOW); } // считываем состояние кнопки с 3 пина на модуле GPIO Expander if (!adio2.digitalRead(3)) { // подаём на пин 5 модуля GPIO Expander «высокий сигнал» adio2.digitalWrite(5, HIGH); } else { // подаём на пин 5 модуля GPIO Expander «низкий сигнал» adio2.digitalWrite(5, LOW); } // считываем состояние кнопки с 0 пина на модуле GPIO Expander if (!adio3.digitalRead(0)) { // подаём на пин 2 модуля GPIO Expander «высокий сигнал» adio3.digitalWrite(2, HIGH); } else { // подаём на пин 2 модуля GPIO Expander «низкий сигнал» adio3.digitalWrite(2, LOW); } // считываем состояние кнопки с 3 пина на модуле GPIO Expander if (!adio3.digitalRead(3)) { // подаём на пин 5 модуля GPIO Expander «высокий сигнал» adio3.digitalWrite(5, HIGH); } else { // подаём на пин 5 модуля GPIO Expander «низкий сигнал» adio3.digitalWrite(5, LOW); } // считываем состояние кнопки с 0 пина на модуле GPIO Expander if (!adio4.digitalRead(0)) { // подаём на пин 2 модуля GPIO Expander «высокий сигнал» adio4.digitalWrite(2, HIGH); } else { // подаём на пин 2 модуля GPIO Expander «низкий сигнал» adio4.digitalWrite(2, LOW); } // считываем состояние кнопки с 3 пина на модуле GPIO Expander if (!adio4.digitalRead(3)) { // подаём на пин 5 модуля GPIO Expander «высокий сигнал» adio4.digitalWrite(5, HIGH); } else { // подаём на пин 5 модуля GPIO Expander «низкий сигнал» adio4.digitalWrite(5, LOW); } } Добрый день.Собрал схему из UNO Slot+ Slot Expander(43)+Slot Expander(44)+Slot Expander(45)+Slot Expander(46). К пинам 2 и 5 подключил светодиоды. К пинам 0 и 3 подключил кнопки. Помогите новичку.Слепил скетч из примеров амперки. Научился включать светодиоды от кнопок. Теперь хочу научиться как зажигать рандомно светодиоды. Проекты и инета показывают как это сделать на UNO и прочих платах. Мне нужно что бы рандомно светодиоды включались. А выключить светодиод нужно кнопкой. Если в течении 3 секунд не "погасил светодиод " то сигнал бузера. И потом цикл повторяем. Вот такую простую игрушку делаю племяннику.