Аналоговые входы
- Войдите на сайт для отправки комментариев
Пт, 10/05/2019 - 13:40
Уважаемые жители этого форума, абсолютно недавно начал изучать вселенную программирования и мир Arduino.
Пытаюсь разобраться с аналоговыми входами и RGB-светодиами , но ничего не выходит :(
Подскажите , пожалуйста, какие команды необходимо использовать, дабы при каждом следующем нажатии кнопки , подключенной к аналоговому входу , RGB-светодиод изменял цвет с красного на зеленый, и , само собой, с зеленого на красный.
На цифровых входах исполнить это не составило труда вообще.
const int green=8; const int green1=7; const int red=13; const int red1=12; const int BUTTON=2; boolean lastButton = LOW; boolean currentButton = LOW; int ledMode = 0; void setup() { pinMode (green, OUTPUT); pinMode (green1, OUTPUT); pinMode (red, OUTPUT); pinMode (red1, OUTPUT); pinMode (BUTTON, INPUT); } void loop() { currentButton = debounce(lastButton); if (lastButton == LOW && currentButton == HIGH) { ledMode++; } lastButton = currentButton; if (ledMode == 3) ledMode = 1; setMode(ledMode); } boolean debounce(boolean last) { boolean current = digitalRead(BUTTON); if (last != current) { delay(5); current = digitalRead(BUTTON); } return current; } void setMode(int mode) { if (mode == 1) { digitalWrite(red,LOW); digitalWrite(red1,LOW); digitalWrite(green, HIGH); delay(1000); digitalWrite(green1, HIGH); } else if (mode == 2) { digitalWrite(green,LOW); digitalWrite(green1,LOW); digitalWrite(red, HIGH); delay(1000); digitalWrite(red1,HIGH); } }Выше, собственно, скетч для цифровых входом платы. Каким образом можно доработать под аналоговые входы ?
Причем, не указал главный момент! К одному аналоговому входу будет подключено несколько кнопок...Вот! Ключевой момент.. То есть суть заключается в том, что я к одному аналоговому входу подключаю , допустим, 2е кнопки. И одна из этих кнопок зажигает один RBG-светодиод в начале красным светом, а после повторного нажатия зеленым , и затем при следующем нажатии опять зажигает его красным.
Вторая же кнопка делает всё тоже самое, только с другим светодиодом
А как Вы пробовали обрабатывать кнопки на аналоговом входе? Насколько я помню - никакого rocket science в этом нет, всё изжёвано давно и даже на этом форуме несколько постов было посвящено "проблеме".
Как подключать несколько кнопок к аналоговму входу я знаю. Причем есть скетч. Проблема заключается в том, что я не понимаю как мне сделать конкретные обращения к каждой кнопке. подключенной к одному аналоговому входу.
void setup () { Serial.begin(9600); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); } void loop() { int sensorValue = analogRead(A0); if (sensorValue >=100 && sensorValue <300) { digitalWrite(8,HIGH); digitalWrite(7,LOW); digitalWrite(6,LOW); digitalWrite(5,LOW); } else if (sensorValue >= 300 && sensorValue < 450) { digitalWrite(8,LOW); digitalWrite(7,HIGH); digitalWrite(6,LOW); digitalWrite(5,LOW); } else if (sensorValue >= 450 && sensorValue < 700) { digitalWrite(8,LOW); digitalWrite(7,LOW); digitalWrite(6,HIGH); digitalWrite(5,LOW); } else if (sensorValue >= 700 && sensorValue < 1023) { digitalWrite(8,LOW); digitalWrite(7,LOW); digitalWrite(6,LOW); digitalWrite(5,HIGH); } else { digitalWrite(8,LOW); digitalWrite(7,LOW); digitalWrite(6,LOW); digitalWrite(5,LOW); } delay(20); }Я тоже не понимаю, что такое "конкретные обращения к каждой кнопке". Код запостили - это хорошо. Но не пояснили что он делает "не так" - это плохо. По мне так нормальный код.
Кнопки должны иметь индивидуальные резисторы, тогда ардуина сможет их различать. Если их просто подключить и пронумеровать, то вряд-ли ардуина поймет ваш замысел.
Прочитай статью и посмотри скетч. Там есть всё что ты хочешь.
https://arduinomaster.ru/platy-arduino/arduino-lcd-keypad-shield/
Так. замысел такой - я подключаю несколько кнопок к аналоговому входу. Каждая же кнопка в свою очередь зажигает определенный RBG-светодиод. Причем , первое нажатие кнопки зажигает светоид красным цветом, следующее нажатие - зеленым , затем опять красный и так далее... Остальные же кнопки делают всё тоже самое, только с другими светодиодами!
И вот реализовать это на кнопках , подключенных к аналоговым входам не выходит, когда с цифровыми входами проблем нет.
резисторы имеются. Эти нюансы учитывал
Благодарю, сейчас изучу
Вывдите значение sensorValue в монитор.
Найдите главное отличие кода для цифровых от кода для аналоговых. Подсказка - для чего в первом коде служить переменная ledMode, в чем ее назначение? Что выполняет ее функцию во втором коде?