Не могу вернутся в исходную точку .
- Войдите на сайт для отправки комментариев
Пт, 20/02/2015 - 05:55
Как вернутся в начало после срабатывания блока falstart без продолжения основных блоков ?Подскажите пожалуйста , сам новичок еще.
int y1Led = 12; // Порт 12, желтый светодиод первый такт
int Y2Led = 11; // Порт 11, желтый светодиод второй такт
int Y3Led = 10; // Порт 10, желтый светодиод третий такт
int GrnLed = 9; // Порт 9, зеленый светодиод
int RedLed = 8; // Порт 8, красный светодиод
int inputButon = 7; // Порт 7 кнопка
int ik = 6; // Порт 6 Сенсор фальстарта
// Переменные
int start = 0;
int Fs=0;
//Время
int t = 200; //основные
int Gt = 3000; // зеленый
void setup()
{
// Выход
pinMode(y1Led, OUTPUT);
pinMode(Y2Led, OUTPUT);
pinMode(Y3Led, OUTPUT);
pinMode(GrnLed, OUTPUT);
pinMode(RedLed, OUTPUT);
// Вход
pinMode(inputButon, INPUT);
pinMode(ik,INPUT);
}
void falstart ()
{
Fs = digitalRead(ik); // считываем значения с входа кнопки
if (Fs == LOW) // проверяем нажата ли кнопка
{
// Действие
digitalWrite(RedLed, HIGH);
digitalWrite(y1Led, LOW);
digitalWrite(Y2Led,LOW);
digitalWrite(Y3Led, LOW);
digitalWrite(GrnLed, LOW);
delay(Gt);
digitalWrite(RedLed, LOW);
}
}
void loop()
{
start = digitalRead(inputButon); // считываем значения с входа кнопки
if (start == LOW) // проверяем нажата ли кнопка
{
digitalWrite(y1Led, HIGH); // включение светодиода
// Включаем выключаем 1й желтый светодиод.
falstart ();
digitalWrite(y1Led, HIGH);
falstart ();
delay(t);
falstart ();
digitalWrite(y1Led, LOW);
falstart ();
delay(t);
// Включаем выключаем 2й желтый светодиод
falstart ();
digitalWrite(Y2Led, HIGH);
falstart ();
delay(t);
falstart ();
digitalWrite(Y2Led, LOW);
falstart ();
delay(t);
// Включаем выключаем 3й желтый светодиод
falstart ();
digitalWrite(Y3Led, HIGH);
falstart ();
delay(t);
falstart ();
digitalWrite(Y3Led, LOW);
falstart ();
delay(t);
// Включаем выключаем зеленый светодиод
falstart ();
digitalWrite(GrnLed, HIGH);
delay(Gt);
digitalWrite(GrnLed, LOW);
}
}
return в нужном месте в loop. Один из вариантов.
Чето я не могу въехать куда . Если не трудно впишите хотя бы примером . falstart может сработать в любой точке loop блока , зависит от условий . Заранее благодарен .
falstart сделать функцией а не процедурой и возвращать false или true а в loop все строки falstart(); заменить на if(falstart) return;
falstart сделать функцией а не процедурой и возвращать false или true а в loop все строки falstart(); заменить на if(falstart) return;
Пожалуйста , можно примером ,до меня так быстрее доходит )))
В 28 строке заменить void на boolean
В 41 строке написать return true;
В 43 строке заменить } на }else return false;
В loop все строки falstart(); заменить на if(falstart) return;
Можно сделать так:
int y1Led = 12; // Порт 12, желтый светодиод первый такт int Y2Led = 11; // Порт 11, желтый светодиод второй такт int Y3Led = 10; // Порт 10, желтый светодиод третий такт int GrnLed = 9; // Порт 9, зеленый светодиод int RedLed = 8; // Порт 8, красный светодиод int inputButon = 7; // Порт 7 кнопка int ik = 6; // Порт 6 Сенсор фальстарта // Переменные int start = 0; int Fs=0; //Время int t = 200; //основные int Gt = 3000; // зеленый void setup() { // Выход pinMode(y1Led, OUTPUT); pinMode(Y2Led, OUTPUT); pinMode(Y3Led, OUTPUT); pinMode(GrnLed, OUTPUT); pinMode(RedLed, OUTPUT); // Вход pinMode(inputButon, INPUT); pinMode(ik,INPUT); } bool falstart () // делаем не процедуру, а фукцию { Fs = digitalRead(ik); // считываем значения с входа кнопки if (Fs == LOW) // проверяем нажата ли кнопка { // Действие digitalWrite(RedLed, HIGH); digitalWrite(y1Led, LOW); digitalWrite(Y2Led,LOW); digitalWrite(Y3Led, LOW); digitalWrite(GrnLed, LOW); delay(Gt); digitalWrite(RedLed, LOW); return true; } else { return false; } } void loop() bool _stop = false; { start = digitalRead(inputButon); // считываем значения с входа кнопки if (start == LOW) // проверяем нажата ли кнопка { digitalWrite(y1Led, HIGH); // включение светодиода // Включаем выключаем 1й желтый светодиод. _stop=falstart (); digitalWrite(y1Led, HIGH); if (_stop) {break;} // и так дальше... falstart (); delay(t); falstart (); digitalWrite(y1Led, LOW); falstart (); delay(t); // Включаем выключаем 2й желтый светодиод falstart (); digitalWrite(Y2Led, HIGH); falstart (); delay(t); falstart (); digitalWrite(Y2Led, LOW); falstart (); delay(t); // Включаем выключаем 3й желтый светодиод falstart (); digitalWrite(Y3Led, HIGH); falstart (); delay(t); falstart (); digitalWrite(Y3Led, LOW); falstart (); delay(t); // Включаем выключаем зеленый светодиод falstart (); digitalWrite(GrnLed, HIGH); delay(Gt); digitalWrite(GrnLed, LOW); } }Правда это немного извращенный метод.
В 28 строке заменить void на boolean
В 41 строке написать return true;
В 43 строке заменить } на }else return false;
В loop все строки falstart(); заменить на if(falstart) return;
Не работает ((( Буду пробовать далее (( Загорается 1желтый и все , делее бездействует .
if(Fs == LOW) в falstar это условие означает что фальстарт?if(Fs == LOW) в falstar это условие означает что фальстарт?Да , потом в loop отробатывает при нажатии кнопки .
Покажите поправленный код, должно работать поидее.
int y1Led = 12; // Порт 12, желтый светодиод первый такт int Y2Led = 11; // Порт 11, желтый светодиод второй такт int Y3Led = 10; // Порт 10, желтый светодиод третий такт int GrnLed = 9; // Порт 9, зеленый светодиод int RedLed = 8; // Порт 8, красный светодиод int inputButon = 7; // Порт 7 кнопка int ik = 6; // Порт 6 Сенсор фальстарта // Переменные int start = 0; int Fs=0; //Время int t = 200; //основные int Gt = 3000; // зеленый void setup() { // Выход pinMode(y1Led, OUTPUT); pinMode(Y2Led, OUTPUT); pinMode(Y3Led, OUTPUT); pinMode(GrnLed, OUTPUT); pinMode(RedLed, OUTPUT); // Вход pinMode(inputButon, INPUT); pinMode(ik,INPUT); } boolean falstart () { Fs = digitalRead(ik); // считываем значения с входа кнопки if (Fs == LOW) // проверяем нажата ли кнопка { // Действие digitalWrite(RedLed, HIGH); digitalWrite(y1Led, LOW); digitalWrite(Y2Led,LOW); digitalWrite(Y3Led, LOW); digitalWrite(GrnLed, LOW); delay(Gt); digitalWrite(RedLed, LOW); return true; }else return false; } void loop() { start = digitalRead(inputButon); // считываем значения с входа кнопки if (start == LOW) // проверяем нажата ли кнопка { digitalWrite(y1Led, HIGH); // включение светодиода // Включаем выключаем 1й желтый светодиод. if(falstart) return; digitalWrite(y1Led, HIGH); if(falstart) return; delay(t); if(falstart) return; digitalWrite(y1Led, LOW); if(falstart) return; delay(t); // Включаем выключаем 2й желтый светодиод if(falstart) return; digitalWrite(Y2Led, HIGH); if(falstart) return; delay(t); if(falstart) return; digitalWrite(Y2Led, LOW); if(falstart) return; delay(t); // Включаем выключаем 3й желтый светодиод if(falstart) return; digitalWrite(Y3Led, HIGH); if(falstart) return; delay(t); if(falstart) return; digitalWrite(Y3Led, LOW); if(falstart) return; delay(t); // Включаем выключаем зеленый светодиод if(falstart) return; digitalWrite(GrnLed, HIGH); delay(Gt); digitalWrite(GrnLed, LOW); } }В таком порядке зажигается 1 желтый и все , потом только перегружать .
Чето я не могу въехать куда . Если не трудно впишите хотя бы примером . falstart может сработать в любой точке loop блока , зависит от условий . Заранее благодарен .
Я ответил на ваш вопрос именно так, как понял задачу. Значит я не телепат, раз ответ непонятен. Несколько телепатов пусть трудятся, если хотят, но только я не телепат, увы.
ПС Когда человек хочет получить ответ, он описывает задачу, условия переходов, выходов, входов, тогда и ответ быстрый. Где написано, по какому условию нужно прервать цикл? Нигде.
Вот две строки написать всего то: "Делаю такую бабаську, которая должна реагировать на нажатие кнопки, но только в строго определенное время. Правильно, когда кнопку нажимают в то время, когда светится зеленый светодиод, в остальных случаях включить красный светодиод и остановить программу.".
а ну правильно, надо все if(falstart) return; заменить на if(falstart()) return;
а ну правильно, надо все if(falstart) return; заменить на if(falstart()) return;
Безмерно благодарен , пошло )))) Спасибо огромное .
Иногда примененный по делу GOTO экономит кучу сил и кода.
Я обычно использую гоуту для реализации аналога эксклюженов.
Не знаю какую Вы ставите задачу, ну вот этот кот в протеусе проверил работает
При нажатии фальш старт горит красный и если нажать старт диоды перемигуют вместе с красным в противном случае при нажатии старт диоды мигают
А в общем от delay нужно отказываться тем более когда у Вас стоит задержка в 3 секунды. В это время не воспринимаются никакие команды и если фальшСтарт не выключатель а кнопка то сигнал может быть пропущен
int y1Led = 12; // Порт 12, желтый светодиод первый такт int Y2Led = 11; // Порт 11, желтый светодиод второй такт int Y3Led = 10; // Порт 10, желтый светодиод третий такт int GrnLed = 9; // Порт 9, зеленый светодиод int RedLed = 8; // Порт 8, красный светодиод int inputButon = 7; // Порт 7 кнопка int ik = 6; // Порт 6 Сенсор фальстарта // Переменные int start = 0; int Fs=0; //Время int t = 200; //основные int Gt = 300; // зеленый void setup() { // Выход pinMode(y1Led, OUTPUT); pinMode(Y2Led, OUTPUT); pinMode(Y3Led, OUTPUT); pinMode(GrnLed, OUTPUT); pinMode(RedLed, OUTPUT); // Вход pinMode(inputButon, INPUT); pinMode(ik,INPUT); } boolean falstart () { boolean c = 0; Fs = digitalRead(ik); // считываем значения с входа кнопки if (Fs == LOW) // проверяем нажата ли кнопка { c=1; // Действие digitalWrite(RedLed, HIGH); digitalWrite(y1Led, LOW); digitalWrite(Y2Led,LOW); digitalWrite(Y3Led, LOW); digitalWrite(GrnLed, LOW); delay(Gt); digitalWrite(RedLed, LOW); } return c; } void loop() { falstart (); start = digitalRead(inputButon); // считываем значения с входа кнопки if (start == LOW) // проверяем нажата ли кнопка { digitalWrite(y1Led, HIGH); // включение светодиода // Включаем выключаем 1й желтый светодиод. if (!falstart ()); { digitalWrite(y1Led, HIGH); delay(t); digitalWrite(y1Led, LOW); delay(t); } // Включаем выключаем 2й желтый светодиод if (!falstart ()); { digitalWrite(Y2Led, HIGH); delay(t); digitalWrite(Y2Led, LOW); delay(t); } // Включаем выключаем 3й желтый светодиод if (!falstart ()); { digitalWrite(Y3Led, HIGH); delay(t); digitalWrite(Y3Led, LOW); delay(t); } // Включаем выключаем зеленый светодиод if (!falstart ()); { digitalWrite(GrnLed, HIGH); delay(Gt); digitalWrite(GrnLed, LOW); } } }Не знаю какую Вы ставите задачу, ну вот этот кот в протеусе проверил работает
Задача стоит такая , в момент пока мигают желтые (вплоть до загорания зеленого ) , если сработает датчик фальстарта он должен остановить весь протокол , потом просто горит красный светодиод . После затухания красного весь протокол встает на исходную точку до нажатия кнопки старт. Если датчик фальстарта не срабатывает то просто отробатывают 3 желтых потом зеленый .Вот как то так )))
Вот этот скетч в протеусе работает так как Вы описали
int y1Led = 12; // Порт 12, желтый светодиод первый такт int Y2Led = 11; // Порт 11, желтый светодиод второй такт int Y3Led = 10; // Порт 10, желтый светодиод третий такт int GrnLed = 9; // Порт 9, зеленый светодиод int RedLed = 8; // Порт 8, красный светодиод int inputButon = 7; // Порт 7 кнопка int ik = 6; // Порт 6 Сенсор фальстарта // Переменные int start = 0; int Fs=0; //Время int t = 200; //основные int Gt = 3000; // зеленый void setup() { // Выход pinMode(y1Led, OUTPUT); pinMode(Y2Led, OUTPUT); pinMode(Y3Led, OUTPUT); pinMode(GrnLed, OUTPUT); pinMode(RedLed, OUTPUT); // Вход pinMode(inputButon, INPUT); pinMode(ik,INPUT); digitalWrite(inputButon, HIGH); digitalWrite(ik, HIGH); } boolean falstart () { boolean c = 0; Fs = digitalRead(ik); // считываем значения с входа кнопки if (Fs == LOW) // проверяем нажата ли кнопка { c=1; // Действие digitalWrite(RedLed, HIGH); digitalWrite(y1Led, LOW); digitalWrite(Y2Led,LOW); digitalWrite(Y3Led, LOW); digitalWrite(GrnLed, LOW); delay(Gt); digitalWrite(RedLed, LOW); } return c; } void loop() { falstart (); start = digitalRead(inputButon); // считываем значения с входа кнопки if (start == LOW) // проверяем нажата ли кнопка { digitalWrite(y1Led, HIGH); // включение светодиода // Включаем выключаем 1й желтый светодиод. if (!falstart ()) { digitalWrite(y1Led, HIGH); delay(t); digitalWrite(y1Led, LOW); delay(t); } // Включаем выключаем 2й желтый светодиод if (!falstart ()) { digitalWrite(Y2Led, HIGH); delay(t); digitalWrite(Y2Led, LOW); delay(t); } // Включаем выключаем 3й желтый светодиод if (!falstart ()) { digitalWrite(Y3Led, HIGH); delay(t); digitalWrite(Y3Led, LOW); delay(t); } // Включаем выключаем зеленый светодиод if (!falstart ()) { digitalWrite(GrnLed, HIGH); delay(Gt); digitalWrite(GrnLed, LOW); } } }vosara52 а что произойдет если фальстарт сработает на первом желтом светодиоде и я за 3и секунды нажму снова стартовую педаль (уберу фальстарт) тогда по вашему коду загорится желтый второй третий и зеленый... И даже если я не уберу фальстарт вы еще 3и раза попадёте в falstart в которой задержка как минимум 3и секунды. Т.е. чтобы начать процедуру старта снова с вашим кодом придётся ждать минимум 10 секунд.
vosara52 а что произойдет если фальстарт сработает на первом желтом светодиоде и я за 3и секунды нажму снова стартовую педаль (уберу фальстарт) тогда по вашему коду загорится желтый второй третий и зеленый... И даже если я не уберу фальстарт вы еще 3и раза попадёте в falstart в которой задержка как минимум 3и секунды. Т.е. чтобы начать процедуру старта снова с вашим кодом придётся ждать минимум 10 секунд.
Когда горит красный то ни одна кнопка не реагирует (проверил ) и время увеличил горения красного до 30 с ( надо так по условиям ) Так что сейчас все работает как надо не без Вашей общей помощи , за это еще раз скажу спасибо )))) Решил всю проблему до конца ))))
vosara52
Ваш код работает точно так же как и мой в первом посте . Ну все равно спасибо за беспокойство .
Возникла еще одна проблемка ( точнее с моими мозгами проблемка :-) ) , не пинайте сильно ))))
есть вот такой скеч
int ledPin = 4; // задаем номер выхода светодиода int inputPin = 3; // задаем номер входа, подключенный к кнопке int inputPin1 = 6; // кнопка сброса int val = 0; // переменная для хранения состояния кнопки void setup() { pinMode(ledPin, OUTPUT);// инициализируем контакт, подключенный к светодиоду, как выход pinMode(inputPin, INPUT);//инициализируем контакт, подключенный к кнопке, как вход pinMode(inputPin1, INPUT);//инициализируем контакт, подключенный к кнопке, как вход } void loop(){ val = digitalRead(inputPin); // считываем значения с входа кнопки if (val == HIGH) { // проверяем нажата ли кнопка } else { digitalWrite(ledPin, HIGH); // выключение светодиода delay(1000); digitalWrite(ledPin, LOW); // включение светодиода delay(1000); }}Алгоритм таков что мне надо получить , все что в loop повторить допустим 3 раза (нужна меняющаяся переменная) и стоп. Принажатии на другую кнопку (inputPin1 = 6; // кнопка сброса) что бы все можно было повторить так же 3 раза и Т.Д.
Это можно и одной кнопкой сделать. Или надо именно двумя? Чтобы по первой три раза светодиод моргал а по второй сброс был и если снова нажать первую опять 3и раза моргаем?
Это можно и одной кнопкой сделать. Или надо именно двумя? Чтобы по первой три раза светодиод моргал а по второй сброс был и если снова нажать первую опять 3и раза моргаем?
Правельно , надо именно двумя кнопками .Точнее я три раза нажал на кнопку , 3 раза светодиод загорелся и потух , потом стоп . И при нажатии на другую кнопку цикл повторился .
Сейчас работает так нажал на кнопку горит 1 сек потом потух задержка в 1 сек и до бесконечности .
int ledPin = 4; // задаем номер выхода светодиода int inputPin = 3; // задаем номер входа, подключенный к кнопке int inputPin1 = 6; // кнопка сброса byte count = 0; void setup() { pinMode(ledPin, OUTPUT);// инициализируем контакт, подключенный к светодиоду, как выход pinMode(inputPin, INPUT);//инициализируем контакт, подключенный к кнопке, как вход pinMode(inputPin1, INPUT);//инициализируем контакт, подключенный к кнопке, как вход } void loop() { if (digitalRead(inputPin)) { count = 3; } else { if(count >= 1) { digitalWrite(ledPin, HIGH); // выключение светодиода delay(1000); digitalWrite(ledPin, LOW); // включение светодиода delay(1000); count--; } } }С одной кнопкой можно так сделать. По нажатию кнопки задаётся число итераций когда кнопка отжата выполняются эти самые итерации, как тоьлко все выполнили можно снова нажать кнопку и итерации начнутся заново.
Значит поторопился :) Тогда еще уточнение. Нужна возможность сброса если не все итерации еще прошли?
Значит поторопился :) Тогда еще уточнение. Нужна возможность сброса если не все итерации еще прошли?
Просто возврат на исходную с нажатием на кнопку 2 и все .
>>Нужна возможность сброса если не все итерации еще прошли?<<
нет , цикл не должен менятся , даже при других действиях .
Точнее я три раза нажал на кнопку , 3 раза светодиод загорелся и потух , потом стоп.
Т.е. надо считать сколько раз нажали на кнопку и столько раз выполнять? Что-то я запутался :)
Может я не так объесняю ))) . Вообщем дело обстоит так . Сейчас работает в таком режиме . Нажал на первую кнопку светодиод горит один раз с длительностью в 1 сек. Потом тухнет , пауза 1 сек (не реагирует на кнопку ) и так до бесконечности.
Надо получить что бы этот цикл повторился 3 раза и ушел в режим ожидания до нажатия на кнопку 2 . Кагда исполняется эта цикличность реакции на кнопку 2 быть не должно. Уф долго формулировал мысль )))) В мозгах то крутися что мне надо , а нормально объяснить не могу . ))))
Я просто не вижу смысла во второй кнопке, там даже не понятно какой код будет если всё это делается в одной кнопке. Тот код что я выше кидал он после выполнения 3х итераций сам вернется в исходное состояние и будет ждать пока не нажмете снова кнопку. Как тоьлко нажмёте снова будет 3и итерации и т.д.
UPD ну ясно сейчас что-нибудь придумаем с двумя кнопками
Просто вторая кнопка нужна так как запуск процесса будет идти с другого канала , но ожидание включения первой кнопки то же обязательно . Вот как то так .
Ну и еще один контрольный вопрос :) Ушли мы в режим ожидания до нажатия кнопки 2. Нажали кнопку 2. Итерации сразу должны начаться или только когда нажмём кнопку 1?
Ну и еще один контрольный вопрос :) Ушли мы в режим ожидания до нажатия кнопки 2. Нажали кнопку 2. Итерации сразу должны начаться или только когда нажмём кнопку 1?
Ждем 1 кнопку
int ledPin = 4; // задаем номер выхода светодиода int inputPin = 3; // задаем номер входа, подключенный к кнопке int inputPin1 = 6; // кнопка сброса byte count = 0; boolean cancel = true; void setup() { pinMode(ledPin, OUTPUT);// инициализируем контакт, подключенный к светодиоду, как выход pinMode(inputPin, INPUT);//инициализируем контакт, подключенный к кнопке, как вход pinMode(inputPin1, INPUT);//инициализируем контакт, подключенный к кнопке, как вход } void loop() { if (digitalRead(input1Pin)) cancel = true; if (digitalRead(inputPin) && cancel) { count = 3; } else { while(count >= 1) { digitalWrite(ledPin, HIGH); // выключение светодиода delay(1000); digitalWrite(ledPin, LOW); // включение светодиода delay(1000); count--; cancel = false; } } }Можно так, я бы вместо while применил if но если будут delay то while вполне нормально. к тому же Вы сказали что цикл прерывать нельзя.
UPD всё поправил
Чет матюкается ((( Ща поищу на что .
Нашел )))
if(digitalRead(input1Pin))А надоif(digitalRead(inputPin1)) еденица не там .Почти то да маленько не то , надо при кажном нажатии на кнопку 1 что бы просто сработал свето диод и ждал когда еще раз нажмут 1 кнопку и так 3 раза .Попробую объяснить что мне надо.Сейчас при каждом нажатии на кнопку 1 , горит и тухнит (с задержками ) светодиод и так до бесконечности нажал горит , не жмешь ждет. Надо то же самое но с циклом в 3 раза , потом ждет активации цикла от кнопки 2 , Когда кнопка 2 нажалась ,ждет нажатия кнопки 1. Опять повторяет 3 раза и ждет опять кнопки 2 и т.д. Вроде так ))))А вот оно что, ну сейчас глянем
Тогда вроде что-то типа такого получается
int ledPin = 4; // задаем номер выхода светодиода int inputPin = 3; // задаем номер входа, подключенный к кнопке int inputPin1 = 6; // кнопка сброса byte count = 3; boolean cancel = true; void setup() { pinMode(ledPin, OUTPUT);// инициализируем контакт, подключенный к светодиоду, как выход pinMode(inputPin, INPUT);//инициализируем контакт, подключенный к кнопке, как вход pinMode(inputPin1, INPUT);//инициализируем контакт, подключенный к кнопке, как вход } void loop() { if (digitalRead(inputPin1)) cancel = true; if (digitalRead(inputPin) && cancel) { if(count >= 1) { digitalWrite(ledPin, HIGH); // выключение светодиода delay(1000); digitalWrite(ledPin, LOW); // включение светодиода delay(1000); if(--count==0) { cancel = false; count = 3; } } } }UPD поправил вроде попробуйте :)
Свето диод просто мигает с тактом в 1 сек , а при нажатии и удержании на любую кнопку тухнит и молчит , отпускаеш опять мигает с тактом в 1 сек. (((
А 25 строку так if(--count==0) или с ! написали
А 25 строку так if(--count==0) или с ! написали
То же самое ((( Чесно , понимаю что задолбал уже :-)
Специально собрал сейчас на макетке, всё работает как описано... Странно но вчера у человека тоже не работало то что у меня работает. Как-то подозрительно... у меня мега2560 и IDE 1.6 уж не знаю что такое. Тут то кода кот наклакал, что тут может не работать. Кнопки притянуты как положено?
Специально собрал сейчас на макетке, всё работает как описано... Странно но вчера у человека тоже не работало то что у меня работает. Как-то подозрительно... у меня мега2560 и IDE 1.6 уж не знаю что такое. Тут то кода кот наклакал, что тут может не работать. Кнопки притянуты как положено?
Через резистор на + , то же мега 2560, IDE 1.0.5 . Кнопка то в том режиме работает. Тогда то же не въеду (((
Раз на + значит ясно. Притяните на -. У вас должен один конец кнопки + быть, второй конец идти к пину на ардуине и этот же пин должен быть к земле притянут через резистор. А Вы притянули к + и кнопка на + у вас получается всегда нажатая кнопка независимо от самой кнопки...
Уряяяя , пошло ))) Ларчик просто открывался ))) Спасибо наиогромнейшое !!! Говорил что то у меня с мозгами не то , надо срочно отдохнуть ))))