Подскажите пожалуйста как зациклить программу, чтобы она читалась постоянно по кругу?
перерыл все...
void loop()
{
тело программы
}
вроде это, но программа доходит до конца и не стартует заново
Вид для печати
Подскажите пожалуйста как зациклить программу, чтобы она читалась постоянно по кругу?
перерыл все...
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);
}
___
Так setup выполняется всего один раз
сам код нужно засунуть в цикл Loop
там есть... просто здесь на быструю руку забыл...
вот основной скетч
при нажатии кнопки старт и педали тормоза, работает все нормально... но если нажать еще раз кнопку старт перед этим выжав тормоз и отпустив... то программа как бы зависает... и не отвечает не на что...
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); //глушим блок питания бука
}
}
BlkDem, Hamster знакомые лица))))
Ну тык, ресурсы то тематические ;)
У тебя при нажатой кнопке старт сработает if (digitalRead(StartPin) == HIGH) и будет выдерживать паузу 1,4 сек и так по кругу пока не нажмешь еще тормоз, тогда сработает первое условие. Или как вариант сначала нажать тормоз, а потом кнопку старт, сработает первое условие
это все и так понятно как ясный день... вопрос в другом! допустим мы нажали как положено педаль и кнопку... система отработала как надо... чтобы потушить все надо нажать только кнопку... педаль уже не нужна... нажимаю кнопку... все тушится... НО! если перед этим нажать тормоз (а это при езде не избежно :)) то система на выключение не отрабатывает!
а теперь вопрос... Почему? что не так?
Я не видел схемы, у тебя оптроны или диоды на входах?
Он в симуляторе тренировался :)
Ну тогда тем более схему можно было выложить
все разобрался, все работает... просто при втором нажитии надо добавить оператора and как и в первом случае... он сравнивает один из выходов... и если на нем HIGH то программа ничего больше не выполняет... в общем все заработало... и камера и кнопка :)
вопрос в другом... работаю в эмуляторе proteus. на atmege328P попробовал поставить atmega8 подключил все так же... загружаю скетч, и не тут то было... не работает.. ставлю назад 328Р все ок... в чем может быть трабл?
вот сама схемка...
Работать будут ATMega48, ATMega88, ATMega168, ATMega328 при условии что скомпилированный код поместится в памяти этих микросхем
спасибо, а какой параметр отвечает за размер памяти в даташите? у меня hex 5кб. И еще вопрос, видел здесь на форуме где то, не могу найти по протеусу. чтобы delay в программе соответствовал реальности :)
нашел как delay менять
1. delay не нало трогать. надо в свойствах меги в протеусе установить фьюзы CKSEL 1111, указать частоту кварца 16МГц, установить фьюз CLKDIV8 в 1.
Первая цифра в названии это размер памяти программ 4,8,16,32
только что в протеусе поставил atmega88 14793 ошибки в логе... и программа не работает... пойду другие пробовать оставшиеся
тоже самое и на 168:((( 328P ставлю все норм....
хотел сэкономить а получается из за 100р. трах только.. :) поставить 328Р и не парится. и последний вопрос для успокоения как говорится))) в чем отличия 328 от 328Р?
ATmega48P/88P/168P/328P являются малопотребляющими версиями, Atmel перешел на производство микросхем только с индексом P