Программа не работает не работает как должна
- Войдите на сайт для отправки комментариев
Втр, 05/04/2016 - 16:18
Уже всю голову сломал или я чего не понимаю или лыжи не едут :)
int svet_pin = 10;//Переменная порта для включения света int zvuk_pin = 13;// Переменная порта для подачи звукового сигнала об отсутвии зарядки int zaryadka_pin =A0; //Переменная порта для определения зарядки int tmp=0;// переменная для считывани показаний о зарядке int off_pin=12;//Переменная для порта принудительного выключения света int vkl;//Переменная для считывания показаний с порта 12 void setup() { pinMode(svet_pin, OUTPUT);// Устанавливаем 10 порт на выход pinMode(zvuk_pin, OUTPUT);//Устанавливаем 13 порт как выход pinMode(zaryadka_pin, INPUT); //Устанавливаем А0 как вход pinMode(off_pin, INPUT);//Устанавливаем 12 порт как вход } void loop() { vkl=digitalRead(off_pin);//считваем значение с порта 12 tmp=analogRead(zaryadka_pin);// Считываем значение с порта А0 if (vkl==HIGH && tmp>500){//Если на порту 12 5В и на порту А0 больше 2.5В (Вариант 1) digitalWrite(svet_pin,HIGH);// подать на порт 10 высокий уровень delay(1000);// задержка 1 сек } if (vkl==HIGH && tmp<=500){// Если на 12 порту 5в и на А0 меньше 2.5В то (Вариант 2) digitalWrite(svet_pin, LOW);// подать на 10 порт низкий уровень digitalWrite(zvuk_pin, HIGH); // Звуковой сигнал delay(1000); // пауза 1 секунда digitalWrite(zvuk_pin, LOW); delay(1000); } if (vkl==LOW) {// если на порте 12 низкий уровень (вариант 3) digitalWrite(svet_pin,LOW); delay(1000); } }
Программа должна считывать показания с порта 12 и порта АО, и выбирать один из 3 вариантов действий, в зависимости от условий, выполнять их и затем снова опрашивать порты 12 и А0, если выбирается 1 и 3 вариант, то все работает как и должно: портам присваиваются значения и идет опрос. Но если выбирается вариант 2 то контроллер на нем зацикливается и не реагирует на изменения значений на входных портах. Вопрос почему?
З. Ы. Если что не так просьба ногами не бить, я очень новичек в программировании :)
1. Нулевой пин мне не ндравитса. Там что-то другое висит на нем. Хотя это я про UNO, а что у тебя за ардуина - я еще не угодал.
2. Во второй вариант вставь строки отладки для проверки значений переменных "vkl" и "tmp". И тогда станет понятно - прога глючит или переменные не чистятся.
Вот так сделай:
А потом, когда "Загрузка скетча завершена" , открой окно терминала и смотри что там написано.
Спасибо! Но у меня Pro mini (извиняюсь что сразу не написал) USB UART еще не приехал а скетчи через USB asp заливаю, походу тогда ждать придется.
UPD попробую тогда на lcd 1602 вывести
А! Терминал тебе еще не приехал значит. Ну все равно как-то отдебаж эти две переменные. С ними какие-то нелады...
Ну вобщем я дописал код чтоб на LCD выводить переменные, ничего увидить не удалось ибо на экран вместо значений выводятся непонятные символы.. что-то не стыкуется. Но зато программа стала работать как надо, потом отключил LCD убрал лишний код, все работает как надо.
Надо подождать-таки USB UART. Он пригодится полюбому))