К какому аналоговому входу не важно, главное в скейтче в двух местах поменять с А0 на А4. Номиналы от 1 кОм до 5 кОм только что бы все три резистора были одинакого номинала.
Режимы не от кнопок включаются, а кнопками из меню выбирается нужный режим. Опишите подробнее, что не так? дисплей работает? названия режимов выводится? режимы переключаются? выбираются?
В стандартных примерех есть скейтч AnalogReadSerial, меняете А0 на свой вход (А4) заливаете скейтч в дуину, запускаете сериал монитор и смотрите - при нажатии на кнопки значения в сериал мониторе должно меняться, составляете такую табличку:
полсе создания новых значений на кнопке нажал сработала кнопка "DigitalReadSerial" и все потом ни каких действий переделал на пин А0 без разницы ни каких событий первая надпись висит и все привет мир
Так естественно, именно так и должно работать. Выбираешь режим и дуина работает по заданной программе пока ее не перезагрузишь. Кнопка 2 не возвращает меню в начальное состояние, кнопка 2 листает режимы обратно. То что когда вы запускаете сериал монитор и дуина перезагружается и переходит в выбор режимов это тоже естественно - ведь скейтч DigitalReadSerial там только для примера, но вы ведь сами писали, что дуина не будет подключаться к компу.
Так как значения у вас колеблятся я подправил код, что бы кнопки постабильнее работали:
#include <LiquidCrystalRus.h>
LiquidCrystalRus lcd(12, 11, 5, 4, 3, 2);
int mode = 0;
void setup() {
lcd.begin(16, 2);
lcd.print("Привет, мир!");
SETUP();
switch(mode){
case 1:
setup1();
break;
case 2:
setup2();
break;
case 3:
setup3();
break;
}
}
void loop() {
switch(mode){
case 1:
loop1();
break;
case 2:
loop2();
break;
case 3:
loop3();
break;
}
}
void SETUP(){
boolean setup_end = 0;
int button, buttonState = 0;
while(!setup_end){
int buttonRead = analogRead(A4);
delay(100);
if(analogRead(A4) > buttonRead-10 && analogRead(A4) < buttonRead+10){
if(buttonRead > 290 && buttonRead < 390){
button = 1;
}
else if(buttonRead > 460 && buttonRead < 560){
button = 2;
}
else if(buttonRead > 950 && buttonRead < 1024){
button = 3;
}
else{
button = 0;
}
}
if(button != buttonState){
switch(button){
case 1:
mode++;
break;
case 2:
mode--;
break;
case 3:
setup_end = 1;
break;
}
mode = constrain(mode, 0, 3);
switch(mode){
case 1:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Blink");
break;
case 2:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Analog Input");
break;
case 3:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Button");
break;
}
buttonState = button;
}
}
}
//--------------------- Скейтч Blink ------------------------
void setup1() {
pinMode(13, OUTPUT);
}
void loop1() {
digitalWrite(13, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000); // wait for a second
}
//--------------------------------------------------------------
//------------------ Скейтч Analog Input ------------------
int sensorPin = A0;
int led = 13;
int sensorValue = 0;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin);
digitalWrite(led, HIGH);
delay(sensorValue);
digitalWrite(led, LOW);
delay(sensorValue);
}
//--------------------------------------------------------------
//------------------ Скейтч Button ------------------
const int buttonPin = 6;
const int ledPin = 13;
int buttonState = 0;
void setup3() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop3(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
//--------------------------------------------------------------
Попробуйте так
Кнопки как подключены?
на аналоговом порту а4
А как вы их подключаете?
подключать так
понял я только подключал без сопротивления на землю
А для чего А0 использовать для кнопок
я к А4 вроде цеплялся или есть разница?
и номинал сопротивлений чет не понял
К какому аналоговому входу не важно, главное в скейтче в двух местах поменять с А0 на А4. Номиналы от 1 кОм до 5 кОм только что бы все три резистора были одинакого номинала.
Ок я понял спасибо как проверю отпишусь
подключил но что то не так включился только блинк и то не понял от какой кнопки
сопротивления нашел по 3.3 кО
Режимы не от кнопок включаются, а кнопками из меню выбирается нужный режим. Опишите подробнее, что не так? дисплей работает? названия режимов выводится? режимы переключаются? выбираются?
дисплей работает. в начале пишет привет мир потом блинк при нажатии кнопок тишина пишет блинк и все и ни каких действий
через какоето время вкючается режим буттон
А не кто не пробывал с меню использовать LCD 1202 от Nokia&&&&?????
А не кто не пробывал с меню использовать LCD 1202 от Nokia&&&&?????
Ой ссорри это у меня чет опера глючит!!! Эт мой вопрос=)
Скорее всего , что то не так с кнопками.
В стандартных примерех есть скейтч AnalogReadSerial, меняете А0 на свой вход (А4) заливаете скейтч в дуину, запускаете сериал монитор и смотрите - при нажатии на кнопки значения в сериал мониторе должно меняться, составляете такую табличку:
ничего не нажато - 0
нажата 1 кнопка - 340
нажата 2 кнопка - 510
нажата 3 кнопка - 1020
ок ща попробуем
ничего не нажато - 0
нажата 1 кнопка - 340
нажата 2 кнопка - 510
нажата 3 кнопка - 1020
Почему именно эти цифры я так понимаю они дожны меняться от номинала сопротивления
Как вы подключаете кнопки?
полсе создания новых значений на кнопке нажал сработала кнопка "DigitalReadSerial" и все потом ни каких действий переделал на пин А0 без разницы ни каких событий первая надпись висит и все привет мир
как по схеме нарисовано
а поробовал в примере который посоветовали от туда и взял значения
Так какие значения? Где таблица с вашими значениями?
вот код я немного подправил делай с 100 на 1 и поставил значения от до какго срабатывания
Я вас не понимаю.
Если вы подключили все по схеме, которую я вам дал, то значения в коде должны быть имеено такие, которые я вам написал.
И еще раз:
1. Подключаете дуину к компу;
2. Запускаете Arduino IDE;
3. Выбираете File --> Examples --> 1.Basics --> AnalogReadSerial;
4. Меняете A0 на свой вход или не меняете если подключились к А0;
5. Нажимаете Upload;
7. Ждете пока прошьется:
7. Нажимаете Sirial Monitor;
8. Поочередно нажимаете кнопки и записываете в таблицу как у меня;
9. Выкладываете результаты сюда на форум.
Что не понятного???
У меня резисторы 3.3 кОм значение меняются найду 1к резюки отпишусь что да как
Не надо искать резисторы на 1 кОм, я вам написал, что нужно сделать выше!
У меня резисторы 3.3 кОм значение меняются найду 1к резюки отпишусь что да как
Номиналы от 1 кОм до 5 кОм только что бы все три резистора были одинакого номинала.
Мне нужна таблица, которая должна выглядеть вот так!!!! только с вашими значениями!!!
ничего не нажато - 0
нажата 1 кнопка - 340
нажата 2 кнопка - 510
нажата 3 кнопка - 1020
Что не понятного??????????
ок будет
Мне нужна таблица, которая должна выглядеть вот так!!!! только с вашими значениями!!!
ничего не нажато - 0
нажата 1 кнопка - 340
нажата 2 кнопка - 510
нажата 3 кнопка - 1020
Что не понятного??????????
ты прав так и получается только значение идет не стабильное оно колеблится "+"" -" 5
а если не нажато то 0-1 иногда до 5 поднимается
данный код повисает
Описываю.
перезагружаю дуино нано
нажимаю кнопку 1 ею выбераю режим
нажимаю кнопку 3 режим включатся
если выбрать режим блинк то он работает но выключить никак его не получается
если выбрать DigitalReadSerial тогда включаю монитор дуина перегружается
режим кнопка работает как блин тоесть работает но выйти и этого режима только через перезагрузку дуины
при последующих режимах как его включил так и выключить не можешь
кнопка 2 это возврат меню в начальное положение
Так естественно, именно так и должно работать. Выбираешь режим и дуина работает по заданной программе пока ее не перезагрузишь. Кнопка 2 не возвращает меню в начальное состояние, кнопка 2 листает режимы обратно. То что когда вы запускаете сериал монитор и дуина перезагружается и переходит в выбор режимов это тоже естественно - ведь скейтч DigitalReadSerial там только для примера, но вы ведь сами писали, что дуина не будет подключаться к компу.
Так как значения у вас колеблятся я подправил код, что бы кнопки постабильнее работали:
Спасибо за пример теперь начну собирать далее. да Вы правы кнопка перелистывает обратно не правильно отписал