Нужна помощь с состоянием кнопки
Я создаю программу, которая работает как фортепиано. У меня четыре кнопки, пьезо-жучок и ЖК-экран. У меня небольшая проблема с состоянием кнопки.
Вот моя программа: когда я ее запускаю, пьезо-жужжание не перестает издавать звук. Предполагается, что это должно работать так: когда я нажимаю зеленую кнопку, пьезоэлемент должен издавать звук «до», но это не так. Кто-нибудь может сказать мне, что я сделал не так?
код:
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
int buttonyellow = 3;
int buttonred = 4;
int buttongreen = 5;
int buttonblue = 6;
int C,D,E,F;
int buzz = 7;
int buttonstate;
void setup()
{
lcd.begin(16, 2);
lcd.print("hello, world!");
Serial.begin(9600);
pinMode(buttonyellow,INPUT);
pinMode(buttonred,INPUT);
pinMode(buttongreen,INPUT);
pinMode(buttonblue,INPUT);
}
void loop()
{
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
C = digitalRead(buttonyellow);
D = digitalRead(buttonred);
E = digitalRead(buttongreen);
F = digitalRead(buttonblue);
buttonstate = digitalRead(C);
if(buttonstate == HIGH){
tone(buzz,523);
} else if ( buttonstate == LOW) {
tone(buzz,1000);
}else{
noTone(buzz);
}
delay(50);
}
@Chase, 👍0
Обсуждение1 ответ
▲ 1
Как указал jsotola, в вашем коде есть ошибка. Удалить строку
buttonstate = digitalRead(C)
и заменить
if(buttonstate == HIGH)
с
if(C == HIGH)
Более того, предлагаю вам взглянуть на пример устранения дребезга, чтобы сделать звук «более плавным», т.е. не трястись из-за кнопки
,
@user2912328
Смотрите также:
- Как переключить светодиод при нажатии кнопки?
- Определение того, была ли нажата и отпущена кнопка
- Нажать клавишу Windows, используя «keyboard.press();»
- Устранение дребезга кнопки с помощью прерывания
- Хорошая кнопка debouncing/Библиотека StateChange
- Напряжение меняется, но цифровой поток всегда HIGH
- Остановить мигание светодиодов
- Интеграция 2 кнопок для включения и выключения светодиода.
что такое «buttonstate = digitalRead(C);»?
if (C == HIGH){
был план?, @Jurajвнимательно посмотрите на свой блок
if-else
..... какое значениеbuttonstate
позволит запуститьnoTone(buzz);
?, @jsotola