Как расширить скетч для нескольких входов и выходов

В своем проекте я использую 4 кнопки и 4 светодиода. Здесь скетч предназначен только для одной кнопки и одного светодиода. Я хочу расширить свой скетч до 4 кнопок и 4 светодиодов. Расскажите, пожалуйста, какие изменения я внес в свой скетч. Пожалуйста, любой может внести изменения в мой скетч . вот скетч:

const int buttonPin =2;    // номер контакта кнопки
const int ledPin = 13;      // номер контакта светодиода

// Переменные изменятся:
int ledState = HIGH;         // текущее состояние выходного контакта
int buttonState;             // текущее чтение с входного контакта
int lastButtonState = LOW;   // предыдущее чтение с входного контакта
long lastDebounceTime = 0;  // последний раз, когда выходной контакт был переключен
long debounceDelay = 50;   

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, ledState);
}

void loop() {
  int reading = digitalRead(buttonPin);
  if (reading != lastButtonState) {
    // сбрасываем таймер устранения дребезжания
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    // на каком бы месте ни было показание, оно существует уже давно
    // чем задержка устранения дребезга, поэтому примите ее за фактическое текущее состояние:

    // если состояние кнопки изменилось:
    if (reading != buttonState) {
      buttonState = reading;

      // переключаем светодиод только в том случае, если состояние новой кнопки ВЫСОКОЕ
      if (buttonState == HIGH) {
        ledState = !ledState;
      }
    }
  }

  // устанавливаем светодиод:
  digitalWrite(ledPin, ledState);
  lastButtonState = reading;
}

, 👍0

Обсуждение

Возможный дубликат [Эскиз Arduino Debounce](http://arduinoprosto.ru/q/29920/arduino-debounce-sketch), @gre_gor


1 ответ


1

Я покажу вам длинный, но простой путь. Просто следуйте этой логике в вашей настройке и цикле, и все будет в порядке. Если вы все еще не понимаете и хотите больше, скажите мне, и я добавлю больше кода для вас.

Сделайте что-то вроде этого:

const int buttonPin1 = 2;    // контакт, к которому подключена кнопка
const int buttonPin2 = 3;
const int buttonPin3 = 4;
const int buttonPin4 = 5;

const int ledPin = 6;        // контакт, к которому подключен светодиод
const int ledPin = 7;
const int ledPin = 8;
const int ledPin = 9;

int ledState1 = HIGH;         // текущее состояние выходного контакта
int buttonState1;             // текущее показание с входного контакта
int lastButtonState1 = LOW;   // предыдущее показание с входного контакта
long lastDebounceTime1 = 0;  // последний раз, когда выходной контакт был переключен
long debounceDelay1 = 50;  

int ledState2 = HIGH;         // текущее состояние выходного контакта
int buttonState2;             // текущее показание с входного контакта
int lastButtonState2 = LOW;   // предыдущее показание с входного контакта
long lastDebounceTime2 = 0;  // последний раз, когда выходной контакт был переключен
long debounceDelay2 = 50;  


int ledState3 = HIGH;         // текущее состояние выходного контакта
int buttonState3;             // текущее показание с входного контакта
int lastButtonState3 = LOW;   // предыдущее показание с входного контакта
long lastDebounceTime3 = 0;  // последний раз, когда выходной контакт был переключен
long debounceDelay3 = 50;  

int ledState4 = HIGH;         // текущее состояние выходного контакта
int buttonState4;             // текущее показание с входного контакта
int lastButtonState4 = LOW;   // предыдущее показание с входного контакта
long lastDebounceTime4 = 0;  // последний раз, когда выходной контакт был переключен
long debounceDelay4 = 50;
,