внешнее прерывание
- Войдите на сайт для отправки комментариев
Добрый!
Есть программа измерения температуры и есть программа включения полива от кнопки через реле. При совмещении программ работает только температура. Реле срабатывает только когда долго держишь кнопку. Как сделать внешнее прерывание без delay. Не могу найти толкового описания функции.
/ * ReadSHT1xValues
* Термогигрометр на базе датчика SHT10
* Библиотека SHT1x
*/
#include <SHT1x.h>
// Data and Сlock датчика SHT1x повесили на пины 10 и 11
#define dataPin 10 //желтый провод
#define clockPin 11 //голубой провод
//а черный (Gnd) и коричневый -питание
SHT1x sht1x(dataPin, clockPin);
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // установка LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // Инициализируем lcd
// Печать приветствия на LCD.
lcd.backlight();
lcd.print("TEMP and VLAZHN");
lcd.setCursor(0, 1);
lcd.print("PVV Arduino ");
delay(2000);
lcd.clear();
}
void loop()
{
float temp_c;
float humidity;
// Читаем показания датчика SHT10
temp_c = sht1x.readTemperatureC();
humidity = sht1x.readHumidity();
// Выводим данные на LCD
lcd.setCursor(0, 0);
lcd.print("Temperat: ");
lcd.print(temp_c-3.0); //Коррекция температуры на 3 градуса
lcd.print("C ");
lcd.setCursor(0, 1);// вывод второй строки
lcd.print("Vlazhnst: ");
lcd.print(humidity);
lcd.println("% ");
delay(1000);
}
и второй скетч:
#define pin_valve (6)//цепляем реле R2 #define pin_btn (7) //цепляем кнопку на палатях, второй 5В void setup(){ // режимы выводов pinMode(pin_valve,OUTPUT); pinMode(pin_btn,INPUT_PULLUP); } void loop(){ if(digitalRead(7)==HIGH)//если кнопка нажата ... { digitalWrite(pin_valve, HIGH);//включаем водичку delay(3000);//водичка льется 3сек. digitalWrite(pin_valve, LOW); } }
Жду толковой лекции по прерыванию :)
http://arduino.ru/tutorials/BlinkWithoutDelay
Все эти мигалки через определенное время, а надо в произвольный момент. По внешнему прерыванию- по нажатию кнопки. И дребезга чтобы не было. Пишется, что delay в интерапте не работает. Не могу проверить, тк не знаю как прописать время сработки клапана.
Все эти мигалки через определенное время, а надо в произвольный момент. По внешнему прерыванию- по нажатию кнопки. И дребезга чтобы не было. Пишется, что delay в интерапте не работает. Не могу проверить, тк не знаю как прописать время сработки клапана.
Все решения, где убирается delay нужны для того чтобы примерно в любое время выполнить любое действие, при это без использования delay, т.е. именно то, что Вам нужно.
Нет так нет, ищите другой способ.
Добрый всем!
Собрал вместе скетчи - термогигрометр и подача воды. Проблема с кнопкой. Может сразу сработать, может через секунду и время сработки -3секунды не выдерживается. Как гарантировать и стабилизировать работу кнопки?
строка 41 - пин кнопки подтянут , зачем CHANGE ? нужно FALLING - сработает по нажатию или RISING - по отпусканию кнопки
строки 65...71 - реле включать миллион раз зачем ? поменяй порядок ифов, т.е. логику проверки когда выключить
при вставке кода жми ещё "свернуть"
и волатильность у превмиллис надо убрать.....
мой очередной скетч.
Здесь поправьте
нет, тоже тормоз при нажатии батона. А мой последний вроде нормально заработал
код из #8 пробовал ?
код из #8 пробовал ?
Это что?
один из вариантов ответа на вопрос - Как гарантировать и стабилизировать работу кнопки?
не нашел
что не нашёл ?!!!!!!!!!!!!!!!!!!!!
в посте #8 нажми показать код и копируй.....
я понимаю что delay из температурной программы тормозил срабатывание кнопки
да я его попробовал. он тормозит
просмотрел :(
в #8 убери строку 61......
Ну молодец!
Спасибо!
пожста....
строки 50...60 лучше вызывать 1...2 раза в секунду, чтобы не мучить датчик и экран
стоит 3сек