Как расширить скетч для нескольких входов и выходов
В своем проекте я использую 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
Обсуждение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;
,
@Dat Ha
Смотрите также:
- Есть ли какой-нибудь способ загрузить скетч с ардуино?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Асинхронные вызовы функций в скетче ардуино
- Проблема с загрузкой моего скетча на Ардуино
- Что произойдет, если возникнет ошибка времени выполнения?
- Проблема: "stray '#' in program"
- Двигатель постоянного тока шумит, но не вращается
- Цикл While не прерывается
Возможный дубликат [Эскиз Arduino Debounce](http://arduinoprosto.ru/q/29920/arduino-debounce-sketch), @gre_gor