Реле и Arduino
- Войдите на сайт для отправки комментариев
Втр, 02/02/2016 - 07:41
Помогите новичку с написанием кода....Нужно при кратковременном нажатии на кнопку чтобы включилось реле на 1сек. выключилось включилось на 0.5сек. и выключилось до следущего нажатия кнопки.
Собираю в Ардублок получается только или включить или выключить.
А где код? С чем помогать?
loop(){ if( digitalRead(pin1) ){ digitalWrite(pin2, HIGH); delay(1000); digitalWrite(pin2, LOW); } }loop(){ if( digitalRead(pin1) ){ digitalWrite(pin2, HIGH);//Вк. на секунду delay(1000); digitalWrite(pin2, LOW);//Вык. на 0.5сек. delay(500); digitalWrite(pin2, HIGH);//Вк. на 0.5сек. delay(500); digitalWrite(pin2, LOW);//Вык. } }01loop(){02if( digitalRead(pin1) ){03digitalWrite(pin2, HIGH);//Вк. на секунду04delay(1000);05digitalWrite(pin2, LOW);//Вык. на 0.5сек.06delay(500);07digitalWrite(pin2, HIGH);//Вк. на 0.5сек.08delay(500);09digitalWrite(pin2, LOW);//Вык.10}11}ничего неполучается....само включается выключается
1)
pinMode( 8 , INPUT);
замени на pullup
2) используй delay
схема твоя где?
подтяжку поставил?
да поставил.... нажимаю кнопку реле включилось отпускаю выкл. А чтобы нажать кнопку и реле включилось на 1 сек потом выключилось потом включилось на 0.5 сек и выключилось до следующего нажатия кнопкии неполучается
белый провод замыкаю на + реле вкл. размыкаю выкл.
схемку нарисуй плз.
можно попробовать
if( digitalRead(pin1) == HIGH ){...тестер есть?
смотри напряжение на dpin 8
dpin 8 рабочий .....я его замыкаю на + реле срабатывает
Помогите новичку с написанием кода....Нужно при кратковременном нажатии на кнопку чтобы включилось реле на 1сек. выключилось включилось на 0.5сек. и выключилось до следущего нажатия кнопки.
Собираю в Ардублок получается только или включить или выключить.
выключалось на сколько секунд?
1.Нажимаю копку (кратковременное нажатие)
2.Включается реле на 1 секунду
3.Выключается на 0.5 секунды
4.Включается на 0.5 секунды
5.Выключается (до следующего кратковременного нажатия кнопки)
А вы уверены что простое электромагнитное реле способно работать с такими мелкими задержками, ведь это вам не транзисторный ключь?
А вы уверены что простое электромагнитное реле способно работать с такими мелкими задержками, ведь это вам не транзисторный ключь?
я уверен.
#include <TinkerKit.h> void setup() { pinMode( 8 , INPUT); pinMode( 2 , OUTPUT); } void loop() { if (digitalRead( 8) == LOW ) { digitalWrite( 2 , HIGH ); } else { digitalWrite( 2 , LOW ); delay( 1000 ); digitalWrite( 2 , HIGH ); delay( 500 ); digitalWrite( 2 , LOW ); delay( 500 ); digitalWrite( 2 , HIGH ); } }Так попробуйте.
И, да, правильно Вам пишут - схема нужна. Точно на "+" кнопку замыкаете?
Ты в алгоритм глазами или жопой смотришь?
Если на 8 пин к земле притянут, то релюху включить, иначе щелкать по алгоритму.
так как сделать то ...обьясните плиззз....
Ну так заменить тогда
if (digitalRead( 8) == HIGH )
на
if(digitalRead(8)==LOW)
И будет счастье.
#include <TinkerKit.h> void setup() { pinMode( 8 , INPUT); pinMode( 2 , OUTPUT); } void loop() { if (digitalRead( 8) == LOW ) { digitalWrite( 2 , LOW ); } else { digitalWrite( 2 , HIGH ); delay( 100 ); digitalWrite( 2 , LOW ); delay( 100 ); digitalWrite( 2 , HIGH ); delay( 500 ); digitalWrite( 2 , LOW ); } }Ну так заменить тогда
if (digitalRead( 8) == HIGH )
на
if(digitalRead(8)==LOW)
И будет счастье.
#include <TinkerKit.h> void setup() { pinMode( 8 , INPUT); pinMode( 2 , OUTPUT); } void loop() { if (digitalRead( 8) == LOW ) { digitalWrite( 2 , LOW ); } else { digitalWrite( 2 , HIGH ); delay( 100 ); digitalWrite( 2 , LOW ); delay( 100 ); digitalWrite( 2 , HIGH ); delay( 500 ); digitalWrite( 2 , LOW ); } }нет щасья.....нажимаешь кнопку и начинает тикать как часы
нет щасья.....нажимаешь кнопку и начинает тикать как часы
Надо настроить параметры delay().
Я просто скопировал ваш код, как было.
delay(1000); это 1 секунда.
нет щасья.....нажимаешь кнопку и начинает тикать как часы
Надо настроить параметры delay().
Я просто скопировал ваш код, как было.
delay(1000); это 1 секунда.
да вкурсе delay(1000); это 1 секунда.....надо чтобы программа при нажатии незацикливалась как она делает в данном скетче а выполнила задачу и остановилась
ЗАДАЧА
1.Нажать копку (кратковременное или длительное нажатие)
2.Включается реле на 1 секунду
3.Выключается на 0.5 секунды
4.Включается на 0.5 секунды
5.Выключается (до следующего кратковременного или длинного нажатия кнопки)
#include <TinkerKit.h> void setup() { pinMode(8, INPUT); pinMode(2, OUTPUT); } void loop() { if (digitalRead(8) == LOW) { digitalWrite(2 , LOW); } else { digitalWrite(2 , HIGH);// Включение delay(1000);// Пауза 1 секунда digitalWrite( 2 , LOW);// Выключение delay(500);// Пауза 0.5 секунды digitalWrite( 2 , HIGH);// Включение delay(500);// Пауза 0.5 секунды digitalWrite(2 , LOW);// Выключение } }Примерно так.
Если нажатие больше 2 секунд, то цикл включения- выключения реле повторится.
Если нажатие больше 2 секунд, то цикл включения- выключения реле повторится.
Спасибо...работает!!!
#include <TinkerKit.h> int f=0; void setup() { pinMode(8, INPUT); pinMode(2, OUTPUT); } void loop() { if (digitalRead(8) == LOW&&f==0) { digitalWrite(2 , LOW); f=0; } else { digitalWrite(2 , HIGH);// Включение delay(1000);// Пауза 1 секунда digitalWrite( 2 , LOW);// Выключение delay(500);// Пауза 0.5 секунды digitalWrite( 2 , HIGH);// Включение delay(500);// Пауза 0.5 секунды digitalWrite(2 , LOW);// Выключение f=1; } }Ввёл новую переменную f которая принимает значение 1 при нажатии и сбрасывается в 0 при отпускании кнопки.
Если нажатие больше 2 секунд, то цикл включения- выключения реле повторится.
Спасибо...работает!!!
Накасячил в последнем коде, его не копировать.
Ушол, исправлять не буду.
Накасячил в последнем коде, его не копировать.
Ушол, исправлять не буду.
#include <TinkerKit.h> int f=0;// Флаг нажатия кнопки void setup() { pinMode(8, INPUT); pinMode(2, OUTPUT); } void loop() { if (digitalRead(8) == LOW) { digitalWrite(2 , LOW); f=0;// Сброс флага нажатия кнопки } if (digitalRead(8) == HIGH && f == 0) { digitalWrite(2 , HIGH);// Включение delay(1000);// Пауза 1 секунда digitalWrite( 2 , LOW);// Выключение delay(500);// Пауза 0.5 секунды digitalWrite( 2 , HIGH);// Включение delay(500);// Пауза 0.5 секунды digitalWrite(2 , LOW);// Выключение f=1;// Установка флага нажатия кнопки } }Вот это по идеи должно работать.
int f=0;// Флаг нажатия кнопки
long надо, а то не вместится. :D
int f=0;// Флаг нажатия кнопки
long надо, а то не вместится. :D
Понимаю вашу иронию. Но тут вопрос нехватки памяти не стоит. А мне, как не профессиональному программисту, чем меньше букв, тем проще. Поэтому int а не boolean.