![]() |
HELP!! Arduino
Подскажите пожалуйста как зациклить программу, чтобы она читалась постоянно по кругу?
|
перерыл все...
void loop() { тело программы } вроде это, но программа доходит до конца и не стартует заново :( |
Другой вопрос, когда на входе появляется HIGH, на выходе тоже HIGH и программа не идет дальше... как только вход переходит в LOW программа начинает выполнятся дальше... что не правильно делаю?
int Vhod=2; //вход int Vihod=13 //выход void setup() { pinMode(VhodPin, INPUT); pinMode(VihodPin,OUTPUT); } if (digitalRead(VhodPin) == HIGH) { digitalWrite(VihodPin, HIGH); delay(100); digitalWrite(VihodPin, LOW); delay(100); digitalWrite(VihodPin, HIGH); delay(100); digitalWrite(VihodPin, LOW); delay(100); } |
Цитата:
// Неудачное название переменных. Отличаются одной буквой, да она еще в середине и не особо видна. // Код становится хреново читаемый, появляется большая вероятность ошибки // Обычно вход именуют от слова input, выход от output. Типа inPin и outPin будет much better :) int VhodPin=2; //вход int VihodPin=13 //выход void setup() { pinMode(VhodPin, INPUT); pinMode(VihodPin,OUTPUT); } void loop() //эта функция нужна, она собственно и вызывается в цикле { up_dn(); } // Этот код надо оформлять в функцию и вызывать из loop() // правда я не уверен, что ее нужно вызывать в цикле :) // к примеру: void up_dn() { if (digitalRead(VhodPin) == HIGH) // насколько я понимаю интересует переход из LOW в HIGH, для этого есть функция PulseIn() { digitalWrite(VihodPin, HIGH); delay(100); digitalWrite(VihodPin, LOW); delay(100); digitalWrite(VihodPin, HIGH); delay(100); digitalWrite(VihodPin, LOW); delay(100); } } Вообщем для начала читать: http://www.freeduino.ru/arduino/lang.html и http://arduino.cc/en/Reference/HomePage |
это скинул пример... void loop() забыл поставить...
вот собственно программа сама... за ссылки спасибо, но уже все давно распечатано и по 1000000 раз штудировано :) отладку веду в Proteus... когда нажимаю 2 кнопки StartPin и TormPin программа отрабатывает на ура весь цикл до (выделенного красным) потом если нажать кнопку StartPin, то программа все правильно тушит, если нажать сначала TormPin а потом StartPin, то ничего больше не происходит! если корректно все выполнить то она через раз возвращается в начало программы... int StartPin=0; //вход для кнопки start stop engine int TormPin=1; //вход для лягушки педали тормоза int CamPin=2; //вход для камеры заднего вида int ACCPin=8; //выход на реле зажигания АСС int StPin=9; //выход на реле стартера int MBPin=10; //выход на Блок питания ноутбука int RemPin=11; //выход на включение усилителя (remote) int CmPin=12; //выход кнопки переключения камеры заднего вида int RSPin=13; //Выход кнопки для старта ноутбука void setup() { /*Объявляем входы и выходы*/ pinMode(StartPin, INPUT); pinMode(TormPin, INPUT); pinMode(CamPin, INPUT); pinMode(ACCPin, OUTPUT); pinMode(StPin, OUTPUT); pinMode(MBPin, OUTPUT); pinMode(RemPin, OUTPUT); pinMode(CmPin, OUTPUT); pinMode(RSPin, OUTPUT); } void loop() { if (digitalRead(StartPin) == HIGH && digitalRead(TormPin) == HIGH) //сравнение 2 входов { digitalWrite(ACCPin, HIGH); //включаем зажигание delay(150); digitalWrite(StPin, HIGH); //включаем стартер delay(200); digitalWrite(StPin, LOW); //выключаем стартер через 10 сек delay(50); digitalWrite(MBPin, HIGH); //Подаем напряжение на блок питания ноутбука delay(40); digitalWrite(RSPin, HIGH); //нажатие кнопки ноутбука delay(20); digitalWrite(RSPin, LOW); //отпускаем кнопку delay(1200); digitalWrite(RemPin, HIGH); //remote усилителя } if (digitalRead(StartPin) == HIGH) //сравниваем значение кнопки { digitalWrite(ACCPin, LOW); //выключаем АСС delay(100); digitalWrite(RemPin, LOW); //Усилители digitalWrite(RSPin, HIGH); //кнопка ноутбука delay(100); digitalWrite(RSPin, LOW); //отпускаем delay(1200); digitalWrite(MBPin, LOW); //глушим блок питания бука } } |
if (digitalRead(VhodPin) == HIGH) // насколько я понимаю интересует переход из LOW в HIGH, для этого есть функция PulseIn()
если честно интересует немного другое... а именно авто переключение на камеру заднего вида... но как заставить выполняться программу когда она стопорится пока на входе HIGH, как писал выше... |
Цитата:
Пример можно посмотреть тут. И вообще, на компкаре по ардуино много интерестного, целый раздел с подразделами. |
Попробуй вот так:
PHP код:
|
Цитата:
|
Цитата:
Она может зациклится или тупо стоять и ждать определенного события (считай тот же цикл). |
Часовой пояс GMT +4, время: 09:35. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot