Пожалуйста,объясните чайнику про кнопки!!!!
- Войдите на сайт для отправки комментариев
Пожалуйста,не пинайте!!! Только приобрел Leonardo. Пытаюсь понять азы программирования.Переписал с видеоурока скетч про кнопку и светодиод.Нажал-горит,еще раз нажал-не горит.Залил-отлично работает! Но!!! Никак не могу понять,как в этом скетче сделать вторую кнопку и светодиод. Ну чтобы каждая кнопка включала при нажатии и выключала при повторном нажатии свой светодиод. Допустим мне нужно включать-выключать восемь реле. Очень прошу,объясните! Нигде не найду про несколько каналов.Прилагаю скетч на один канал.Спасибо всем,кто поможет!
int switchPin = 8;
int ledPin = 13;
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;
void setup()
{
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
}
boolean debounce(boolean last)
{
boolean current = digitalRead(switchPin);
if (last != current)
{
delay(5);
current = digitalRead(switchPin);
}
return current;
}
void loop()
{
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
{
ledOn = !ledOn;
}
lastButton = currentButton;
digitalWrite(ledPin, ledOn);
}
Очень жаль.Помощи,видимо,ждать не от кого. Вот так и пропадает желание заниматься чем-то новым.Выкину эту Дуину и буду дальше автомобили шить.... Обидно!!!
Удачи!
Спасибо Вам, Добрый человек...
Очень жаль.Помощи,видимо,ждать не от кого. Вот так и пропадает желание заниматься чем-то новым.Выкину эту Дуину и буду дальше автомобили шить.... Обидно!!!
не, ну совсем чайнеги окуели.
дядька, ты когда дуино покупал, о чём думал?, что в течении суток тебе бесплатную техподдержку окажут?
автомобили шить за полдня научился?
Да нет . не сразу . И это покруче ардуино. А Вы . окуевший . давно чайником были?
Пусть вам так же помогают . как вы .
Ну что? Есть еще желающие попинать? Или есть кто-то,кто подскажет как вторую кнопку и второй светодиод в скетч воткнуть.Я бы понял и дальше было бы немного легче. Просмотрел кучу уроков,почитал книжки.Везде все примитивное (про кнопку).По примитивному они срабатывают через раз,а этот скетч просто клас! Учить С++ неохота и некогда. Вообще повелся на рекламу. Якобы не надо никаких особых знаний. Надеюсь на форуме есть нормальные люди,а не такие ..... как мне уже отвечали. Спасибо.
пусть...
Ну что? Есть еще желающие попинать? Или есть кто-то,кто подскажет как вторую кнопку и второй светодиод в скетч воткнуть.Я бы понял и дальше было бы немного легче. Просмотрел кучу уроков,почитал книжки.Везде все примитивное (про кнопку).По примитивному они срабатывают через раз,а этот скетч просто клас! Учить С++ неохота и некогда. Вообще повелся на рекламу. Якобы не надо никаких особых знаний. Надеюсь на форуме есть нормальные люди,а не такие ..... как мне уже отвечали. Спасибо.
нормальных нет - один я тут... ненормальный.
что за муть про рекламу? - предъявляйте рекламодателям, а не мне и читающим ваше попадалово.
по скетчу - ну, масштабируйте все переменные: было int switchPin = 8; пусть будет int switchPin1 =...; int switchPin2 =...; int switchPin3 = ...; и далее по тексту. эмоции - при себе оставьте, потому как или сами разбирайтесь, или ждите, пока у кого возникнет желание и время разбираться.
Спасибо и на этом. Так я уже пробывал. Не получается. Я думал здесь на форуме для крутых программеров это раз плюнуть.
vadnik140 - просто перед тем как задавать такие вопросы - надо хотя бы немного почитать форум... ведь о кнопках тут ну ооочеь много говорилось... Не говорю уже о гугле.. Вы же, даже код не смогли по правилам форума правильно вставить. А реагируют тут на вас так, потому что вы совсем ленитесь... "Я бы понял и дальше было бы немного легче." - )))) вы даже не представляете себе, что "кнопка" - это самое простое, что может быть в ардуино.. ))
исходя из подхода
Учить С++ неохота и некогда
единственная здравая мысль уже прозвучала
Выкину эту Дуиную и буду дальше автомобили шить.... Обидно!!!
мир вообще очень суровая штука, малыш!
:)
где можно посмотреть рекламу дуино?
[...]
Надеюсь на форуме есть нормальные люди,а не такие ..... как мне уже отвечали. Спасибо.
Мне при прочтении этих опусов что-то micgelly вспомнился...
Попробуйте обратиться к нему. Вдвоем вы - сила!
Во как напали! Админ, закройте тему,боюсь заклюют!
пусть тогда весь форум закрывает, раз пошла такая пьянка... за геноцид чайнегов.
Слыш,ты,умник! Я смотрю.ты самый деловой тут на форуме. Нечего сказать то теме-заткни хлебало.
Только чайник понимает чайника.
Пример Button из EXAMPLES:
ТОЖЕ самое продублированое:
const int buttonAPin = 2; // the number of the pushbuttonA pin const int ledAPin = 12; // the number of the LEDA pin const int buttonBPin = 3; // the number of the pushbuttonB pin const int ledBPin = 13; // the number of the LEDB pin // variables will change: int buttonAState = 0; // variable for reading the pushbutton status int buttonBState = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(ledAPin, OUTPUT); pinMode(ledBPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonAPin, INPUT); pinMode(buttonBPin, INPUT); } void loop(){ // read the state of the pushbutton value: buttonAState = digitalRead(buttonAPin); buttonBState = digitalRead(buttonBPin); // check if the pushbuttonA is pressed. // if it is, the buttonAState is HIGH: if (buttonAState == HIGH) { // turn LED on: digitalWrite(ledAPin, HIGH); } else { // turn LEDA off: digitalWrite(ledAPin, LOW); } // check if the pushbuttonB is pressed. // if it is, the buttonBState is HIGH: if (buttonBState == HIGH) { // turn LEDB on: digitalWrite(ledBPin, HIGH); } else { // turn LEDB off: digitalWrite(ledBPin, LOW); } }Не обижайся на форумчан-они не злые, они всегда помогают .Им просто не хватает общения.
Спасибо Вам огромное! Хоть кто-то не злой нашелся. Я так уже делал.Присутствует дребезг кнопки. Тот скетч,что я показал хорош тем,что бребезга нет. Но вот как все эти булены к добавленым кнопкам прикрутить я не въеду(пока!). Пробывал по-разному то два сразу включает то вообще ошибки.Ну ничего,буду понемногу разбираться.Спасибо Вам еще раз.
Выложи тот скетч где сразу два включает
Ну если не въеду все-таки,то подавлю дребезг "железным" методом.Но всеже хотелось бы разобраться.
Кажется этот.
int switch1 = 8; int led1 = 13; int switch2 = 7; int led2 = 12; boolean lastButton1 = LOW; boolean currentButton1 = LOW; boolean led1On = false; boolean lastButton2 = LOW; boolean currentButton2 = LOW; boolean led2On = false; void setup() { pinMode(led1, OUTPUT); pinMode(switch1, INPUT); pinMode(led2, OUTPUT); pinMode(switch2, INPUT); } boolean debounce(boolean last1); { boolean current1 = digitalRead(switch1); if (last1 != current1) { delay(5); current1 = digitalRead(switch1); } return current1; boolean debounce(boolean last2) { boolean current2 = digitalRead(switch2); if (last2 != current2) { delay(5); current2 = digitalRead(switch2); } return current2; } void loop() { currentButton1 = debounce(lastButton1); if (lastButton1 == LOW && currentButton1 == HIGH) { led1On = !led1On; } lastButton1 = currentButton1; digitalWrite(led1, led1On); currentButton2 = debounce(lastButton2); if (lastButton2 == LOW && currentButton2 == HIGH) { led2On = !led2On; } lastButton2 = currentButton2; digitalWrite(led2, led2On); }Я их столько уже понаделал,что уже запутался.
Посмотри примеры ТУТ.В некоторых примерах дребезг минимален.Попробуй на практике примерчики и выбири то что тебе нужно и делай на сколько каналов хватит ног.
доберусь домой - гляну твой скетч
Спасибо!
А борьбу с дребезгом нужно вести в loop() , а не в setup(). Сейчас боретесь с дребезгом кнопок один раз при запуске программки. Перебросьте в loop() и всё будет работать как надо.
Спасибо! Попробую!
Спасибо!
[...]
Надеюсь на форуме есть нормальные люди,а не такие ..... как мне уже отвечали. Спасибо.
Мне при прочтении этих опусов что-то micgelly вспомнился...
Попробуйте обратиться к нему. Вдвоем вы - сила!
А Вы вдвоем с Клапауцием ...........
Это код с первого поста. На две кнопки и два выхода.Работает. А за остальное -молчу....
int switchAPin = 2; int ledAPin = 13; int switchBPin = 3; int ledBPin = 12; boolean lastAButton = LOW; boolean currentAButton = LOW; boolean ledAOn = false; boolean lastBButton = LOW; boolean currentBButton = LOW; boolean ledBOn = false; void setup() { pinMode(switchAPin, INPUT); pinMode(ledAPin, OUTPUT); pinMode(switchBPin, INPUT); pinMode(ledBPin, OUTPUT); } void loop() { currentAButton = debounceA(lastAButton); currentBButton = debounceB(lastBButton); if (lastAButton == LOW && currentAButton == HIGH) { ledAOn = !ledAOn; } lastAButton = currentAButton; digitalWrite(ledAPin, ledAOn); if (lastBButton == LOW && currentBButton == HIGH) { ledBOn = !ledBOn; } lastBButton = currentBButton; digitalWrite(ledBPin, ledBOn); } boolean debounceA(boolean lastA) { boolean currentA = digitalRead(switchAPin); if (lastA != currentA) { delay(5); currentA = digitalRead(switchAPin); } return currentA; } boolean debounceB(boolean lastB) { boolean currentB = digitalRead(switchBPin); if (lastB != currentB) { delay(5); currentB = digitalRead(switchBPin); } return currentB; }Спасибо большое!!!
Это код с первого поста. На две кнопки и два выхода.Работает. А за остальное -молчу....
int switchAPin = 2; int ledAPin = 13; int switchBPin = 3; int ledBPin = 12; boolean lastAButton = LOW; boolean currentAButton = LOW; boolean ledAOn = false; boolean lastBButton = LOW; boolean currentBButton = LOW; boolean ledBOn = false; void setup() { pinMode(switchAPin, INPUT); pinMode(ledAPin, OUTPUT); pinMode(switchBPin, INPUT); pinMode(ledBPin, OUTPUT); } void loop() { currentAButton = debounceA(lastAButton); currentBButton = debounceB(lastBButton); if (lastAButton == LOW && currentAButton == HIGH) { ledAOn = !ledAOn; } lastAButton = currentAButton; digitalWrite(ledAPin, ledAOn); if (lastBButton == LOW && currentBButton == HIGH) { ledBOn = !ledBOn; } lastBButton = currentBButton; digitalWrite(ledBPin, ledBOn); } boolean debounceA(boolean lastA) { boolean currentA = digitalRead(switchAPin); if (lastA != currentA) { delay(5); currentA = digitalRead(switchAPin); } return currentA; } boolean debounceB(boolean lastB) { boolean currentB = digitalRead(switchBPin); if (lastB != currentB) { delay(5); currentB = digitalRead(switchBPin); } return currentB; }ТЕПЕРЬ Я ПОНЯЛ !!!!!!!!!!
Я переделал один из примеров "Работа с кнопками .В помощ новичку" и получил вот это(работает так же):
byte flagA=0; byte flagB=0; byte vklA=0; byte vklB=0; void setup() { pinMode(13, OUTPUT); pinMode(12, OUTPUT); } void loop() { if(digitalRead(2)==LOW) { delay(10); vklA=0; } if(digitalRead(2)==HIGH&&vklA==0) { delay(10); flagA=1-flagA; vklA=1; } if(flagA==1) { digitalWrite(13,HIGH); } else { digitalWrite(13,LOW); } if(digitalRead(3)==LOW) { delay(10); vklB=0; } if(digitalRead(3)==HIGH&&vklB==0) { delay(10); flagB=1-flagB; vklB=1; } if(flagB==1) { digitalWrite(12,HIGH); } else { digitalWrite(12,LOW); } }Я переделал один из примеров "Работа с кнопками .В помощ новичку" и получил вот это(работает так же):
byte flagA=0; byte flagB=0; byte vklA=0; byte vklB=0; void setup() { pinMode(13, OUTPUT); pinMode(12, OUTPUT); } void loop() { if(digitalRead(2)==LOW) { delay(10); vklA=0; } if(digitalRead(2)==HIGH&&vklA==0) { delay(10); flagA=1-flagA; vklA=1; } if(flagA==1) { digitalWrite(13,HIGH); } else { digitalWrite(13,LOW); } if(digitalRead(3)==LOW) { delay(10); vklB=0; } if(digitalRead(3)==HIGH&&vklB==0) { delay(10); flagB=1-flagB; vklB=1; } if(flagB==1) { digitalWrite(12,HIGH); } else { digitalWrite(12,LOW); } }Спасибо!!!
Это код с первого поста. На две кнопки и два выхода.Работает. А за остальное -молчу....
int switchAPin = 2; int ledAPin = 13; int switchBPin = 3; int ledBPin = 12; boolean lastAButton = LOW; boolean currentAButton = LOW; boolean ledAOn = false; boolean lastBButton = LOW; boolean currentBButton = LOW; boolean ledBOn = false; void setup() { pinMode(switchAPin, INPUT); pinMode(ledAPin, OUTPUT); pinMode(switchBPin, INPUT); pinMode(ledBPin, OUTPUT); } void loop() { currentAButton = debounceA(lastAButton); currentBButton = debounceB(lastBButton); if (lastAButton == LOW && currentAButton == HIGH) { ledAOn = !ledAOn; } lastAButton = currentAButton; digitalWrite(ledAPin, ledAOn); if (lastBButton == LOW && currentBButton == HIGH) { ledBOn = !ledBOn; } lastBButton = currentBButton; digitalWrite(ledBPin, ledBOn); } boolean debounceA(boolean lastA) { boolean currentA = digitalRead(switchAPin); if (lastA != currentA) { delay(5); currentA = digitalRead(switchAPin); } return currentA; } boolean debounceB(boolean lastB) { boolean currentB = digitalRead(switchBPin); if (lastB != currentB) { delay(5); currentB = digitalRead(switchBPin); } return currentB; }ТЕПЕРЬ Я ПОНЯЛ !!!!!!!!!!
Спасибо Вам большое! Переделал на 6 кнопок . Отлично все работает! Дребезга нет! Но самое главное- понял что я делал не так. И понял структуру этих боленов. Буду потихоньку осваивать дальше.
Ну вот помогли разобраться. Огромное спасибо NIKOLAKI!
Выкладываю скетч для всех чайников. Управление 6 кнопками 6 светодиодами или реле через плату реле. Нажал кнопку включилось, еще раз нажал выключилось.Без дребезга контактов. Может кому пригодится. Еще раз спасибо NIKOLAKI !
int switch1Pin = 2; int led1Pin = 13; int switch2Pin = 3; int led2Pin = 12; int switch3Pin = 4; int led3Pin = 11; int switch4Pin = 5; int led4Pin = 10; int switch5Pin = 6; int led5Pin = 9; int switch6Pin = 7; int led6Pin = 8; boolean last1Button = LOW; boolean current1Button = LOW; boolean led1On = false; boolean last2Button = LOW; boolean current2Button = LOW; boolean led2On = false; boolean last3Button = LOW; boolean current3Button = LOW; boolean led3On = false; boolean last4Button = LOW; boolean current4Button = LOW; boolean led4On = false; boolean last5Button = LOW; boolean current5Button = LOW; boolean led5On = false; boolean last6Button = LOW; boolean current6Button = LOW; boolean led6On = false; void setup() { pinMode(switch1Pin, INPUT); pinMode(led1Pin, OUTPUT); pinMode(switch2Pin, INPUT); pinMode(led2Pin, OUTPUT); pinMode(switch3Pin, INPUT); pinMode(led3Pin, OUTPUT); pinMode(switch4Pin, INPUT); pinMode(led4Pin, OUTPUT); pinMode(switch5Pin, INPUT); pinMode(led5Pin, OUTPUT); pinMode(switch6Pin, INPUT); pinMode(led6Pin, OUTPUT); } void loop() { current1Button = debounce1(last1Button); current2Button = debounce2(last2Button); current3Button = debounce3(last3Button); current4Button = debounce4(last4Button); current5Button = debounce5(last5Button); current6Button = debounce6(last6Button); if (last1Button == LOW && current1Button == HIGH) { led1On = !led1On; } last1Button = current1Button; digitalWrite(led1Pin, led1On); if (last2Button == LOW && current2Button == HIGH) { led2On = !led2On; } last2Button = current2Button; digitalWrite(led2Pin, led2On); if (last3Button == LOW && current3Button == HIGH) { led3On = !led3On; } last3Button = current3Button; digitalWrite(led3Pin, led3On); if (last4Button == LOW && current4Button == HIGH) { led4On = !led4On; } last4Button = current4Button; digitalWrite(led4Pin, led4On); if (last5Button == LOW && current5Button == HIGH) { led5On = !led5On; } last5Button = current5Button; digitalWrite(led5Pin, led5On); if (last6Button == LOW && current6Button == HIGH) { led6On = !led6On; } last6Button = current6Button; digitalWrite(led6Pin, led6On); } boolean debounce1(boolean last1) { boolean current1 = digitalRead(switch1Pin); if (last1 != current1) { delay(5); current1 = digitalRead(switch1Pin); } return current1; } boolean debounce2(boolean last2) { boolean current2 = digitalRead(switch2Pin); if (last2 != current2) { delay(5); current2 = digitalRead(switch2Pin); } return current2; } boolean debounce3(boolean last3) { boolean current3 = digitalRead(switch3Pin); if (last3 != current3) { delay(5); current3 = digitalRead(switch3Pin); } return current3; } boolean debounce4(boolean last4) { boolean current4 = digitalRead(switch4Pin); if (last4 != current4) { delay(5); current4 = digitalRead(switch4Pin); } return current4; } boolean debounce5(boolean last5) { boolean current5 = digitalRead(switch5Pin); if (last5 != current5) { delay(5); current5 = digitalRead(switch5Pin); } return current5; } boolean debounce6(boolean last6) { boolean current6 = digitalRead(switch6Pin); if (last6 != current6) { delay(5); current6 = digitalRead(switch6Pin); } return current6; }Очень жаль.Помощи,видимо,ждать не от кого. Вот так и пропадает желание заниматься чем-то новым.Выкину эту Дуину и буду дальше автомобили шить.... Обидно!!!
Слыш,ты,умник! Я смотрю.ты самый деловой тут на форуме. Нечего сказать то теме-заткни хлебало.
будь последовательным. хотел срач - ты ега получил.
Очень жаль.Помощи,видимо,ждать не от кого. Вот так и пропадает желание заниматься чем-то новым.Выкину эту Дуину и буду дальше автомобили шить.... Обидно!!!
Слыш,ты,умник! Я смотрю.ты самый деловой тут на форуме. Нечего сказать то теме-заткни хлебало.
будь последовательным. хотел срач - ты ега получил.
Я так понял,что ты форум посещаешь чтобы "срачи" устраивать? Интересно,ты в жизни тоже такой дерзкий? Сразу прям наезжаешь кого первый раз в жизни видишь. Или это только за монитором происходит?
Совет: веди сябя спокойней,нечего сказать-молчи. А то как чертик из коробочки- раз и выскочил! Клоун.
Я так понял,что ты форум посещаешь чтобы "срачи" устраивать? Интересно,ты в жизни тоже такой дерзкий? Сразу прям наезжаешь кого первый раз в жизни видишь. Или это только за монитором происходит?
Совет: веди сябя спокойней,нечего сказать-молчи. А то как чертик из коробочки- раз и выскочил! Клоун.
прочитай свой второй пост и примени свои пожелания к себе - никто ещё и ответить тебе не успел, а ты уже обиделсо на всех... и дуино не такая простая, и рекламщики обманули, а на форуме вообще игнорируют.
если бы я не начал нагнетать - тебе бы никто и не помог... неужели не понятно?
Я так понял,что ты форум посещаешь чтобы "срачи" устраивать? Интересно,ты в жизни тоже такой дерзкий? Сразу прям наезжаешь кого первый раз в жизни видишь. Или это только за монитором происходит?
Совет: веди сябя спокойней,нечего сказать-молчи. А то как чертик из коробочки- раз и выскочил! Клоун.
прочитай свой второй пост и примени свои пожелания к себе - никто ещё и ответить тебе не успел, а ты уже обиделсо на всех... и дуино не такая простая, и рекламщики обманули, а на форуме вообще игнорируют.
если бы я не начал нагнетать - тебе бы никто и не помог... неужели не понятно?
Для меня не понятно,не так воспитан.
6 раз вызывать debounce? Неужто нельзя в одном debounce сканировать 6 кнопок?
6 раз вызывать debounce? Неужто нельзя в одном debounce сканировать 6 кнопок?
Я только учюсь и понятия не имею как это сделать. Если можете покажите как. Спасибо!
Ну и не помешает почитать http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Ну и не помешает почитать http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Извините,уже понял,исправлюсь.
6 раз вызывать debounce? Неужто нельзя в одном debounce сканировать 6 кнопок?
А как сканировать одним debounce несколько кнопок? Подскажите чайникам направление
Может и можно, а зачем?
на будушее , в копилку знаний
6 раз вызывать debounce? Неужто нельзя в одном debounce сканировать 6 кнопок?
Если не трудно покажите как. Народ интересуется. Спасибо.
Делаете одну функцию, передаете в нее lastX и switchXPin, а там уже и сравниваете. Размер скетча умеьшится почти в 5 раз :)
ПС: Эх, такое начало пропустил....