// даём разумное имя для пинов, к которым подключены кнопки #define BUTTON_PIN_YELLOW A4 #define BUTTON_PIN_BLUE A3 // была ли жёлтая кнопка отпущена? boolean buttonStateYellow = true; // была ли синяя кнопка отпущена? boolean buttonStateBlue = true; // состояние жёлтого светодиода boolean ledStateYellow = false; // состояние синего светодиода boolean ledStateBlue = false; void setup() { // открываем последовательный порт на Serial Serial.begin(9600); // открываем последовательный порт на пинах 1 и 0 Serial1.begin(9600); // 5 пин в режим выхода pinMode(5, OUTPUT); // подаём высокий уровень на 5 пин // значит устройство будет передавать данные digitalWrite(5, HIGH); } void loop() { // отпущена ли кнопка прямо сейчас boolean buttonStateNowYellow = digitalRead(BUTTON_PIN_YELLOW); boolean buttonStateNowBlue = digitalRead(BUTTON_PIN_BLUE); // если кнопка была отпущена и не отпущена сейчас if (buttonStateYellow && !buttonStateNowYellow) { delay(10); // считываем сигнал снова buttonStateNowYellow = digitalRead(BUTTON_PIN_YELLOW); if (!buttonStateYellow) { // если она всё ещё нажата // значит это клик! Инвертируем сигнал светодиода ledStateYellow = !ledStateYellow; if (ledStateYellow) { // посылаем на модули RS-485 символ «a» Serial1.print('a'); } else { // посылаем на модули RS-485 символ «b» Serial1.print('b'); } } } // запоминаем последнее состояние кнопки для новой итерации buttonStateYellow = buttonStateNowYellow; // если кнопка была отпущена и не отпущена сейчас if (buttonStateBlue && !buttonStateNowBlue) { delay(10); // считываем сигнал снова buttonStateNowBlue = digitalRead(BUTTON_PIN_BLUE); if (!buttonStateNowBlue) { // если она всё ещё нажата // значит это клик! Инвертируем сигнал светодиода ledStateBlue = !ledStateBlue; if (ledStateBlue) { // посылаем на модули RS-485 символ «y» Serial1.print('y'); } else { // посылаем на модули RS-485 символ «z» Serial1.print('z'); } } } // запоминаем последнее состояние кнопки для новой итерации buttonStateBlue = buttonStateNowBlue; }