Ви не увійшли.
Сторінки 1
Приветствую!
Прошу сильно не пинать, я совсем новичок, неделю как сел за ардуино. Пытаюсь запрограммировать ардуино как контроллер для протечки, при этом чтобы он был совмещен с Home assistant. Столкнулся с одной вещью. которая просто мне взрывает мозг.
Есть часть кода (функция). По идее условия для выполнения kom == 1 или kom == 2 не выполняются, но при этом события внутри условия происходят. И на мониторе порта вижу сообщения
komanda otkrit
0
komanda zakrit
0
Если kom=0 внутри условия, что подтверждается монитором порта.? почему выполняется событие внутри блока if??
void otkrit_komanda() {
if (kom == 1); {
digitalWrite(4, 0);
delay(3000);
digitalWrite(4, 1);
Serial.println("komanda otkrit");
Serial.println(kom);
}
if (kom == 2); {
digitalWrite(5, 0);
delay(3000);
digitalWrite(5, 1);
Serial.println("komanda zakrit");
Serial.println(kom);
}
if (voda == 0) {
kom = 0;
}
}
Неактивний
; убери
Помогите с написанием кода для сим модуля. Собрал электро пастуха на ардуино но он иногда зависает хочу поставить ещё одно ардуино с сим модулем чтобы он мог мне сообщить о зависания и я мог бы сделать перезагрузку пастуха по смс.
Неактивний
Помогите с написанием кода для сим модуля. Собрал электро пастуха на ардуино но он иногда зависает хочу поставить ещё одно ардуино с сим модулем чтобы он мог мне сообщить о зависания и я мог бы сделать перезагрузку пастуха по смс.
Это такая проволока котрая животных током бъёт? А зачем там Ардуино?
В основном он и работает но иногда не срабатывает.
Ну выкладывайте схему и код пастуха и для sim-модуля что там увас есть. А вообще лучше создайте свою отдельную тему.
И, да, согласен с Watchdog - зачем там ардуина?
Остання редакція ard125 (2020-04-05 11:21:21)
Неактивний
01
// Electric fency. Umka 2016
02
// <a href="http://u-m.biz" title="http://u-m.biz" rel="nofollow">http://u-m.biz</a>
03
04
05
#include <avr/wdt.h>
06
#define outPin 3 // выход на коммутатор
07
#define pausePin A1 // пин резистора регулировки паузы
08
#define counterPin A3 // пин резистора регулировки пакета искр
09
volatile unsigned long waitAlarm = 30000; // таймер аварии по высокому напряжению
10
unsigned long now;
11
12
void setup() {
13
//Serial.begin(9600);
14
pinMode(outPin, OUTPUT); // назначаем пин выхода выходом
15
pinMode(2, INPUT_PULLUP);
16
pinMode(13, OUTPUT);
17
wdt_enable (WDTO_8S); // заводим сторожевой таймер на 8 сек.
18
attachInterrupt(0, resetAlarm, FALLING);// цепляем прерывание для сброса аварии по искре
19
}
20
21
void loop() {
22
int pause = analogRead(pausePin) * 3; // задаем резистором паузу 0 - 3 сек.
23
int counter = analogRead(counterPin);
24
counter = map(counter, 0, 1024, 1, 30); // задаем количество искр в каждом пакете
25
now = millis();
26
if (now < waitAlarm && millis() % pause < 2) {
27
for (int count = 0 ; count < counter ; count++){ // в цикле повторяем для каждой искры
28
digitalWrite(outPin, HIGH); // циклично дрыгаем ногами выхода и светодиода на 13 пине.
29
digitalWrite(13, HIGH);
30
delay(5);
31
digitalWrite(outPin, LOW);
32
digitalWrite(13, LOW);
33
delay(5);
34
//Serial.print(now);
35
//Serial.print(" ");
36
//Serial.println(waitAlarm);
37
}
38
}
39
else if (now > waitAlarm && millis() % 10000 < 2) {
40
analogWrite(13, 120); // при утечке искры зажигаем светодиод и
41
digitalWrite(outPin, HIGH); // раз в 10 секунд выдаем проверочную искру.
42
delay(5);
43
digitalWrite(outPin, LOW);
44
//Serial.println("alarm");
45
}
46
wdt_reset(); // сбрасываем сторожевой таймер.
47
}
48
49
void resetAlarm() { // сбрасываем аварийный счетчик по датчику искры
50
waitAlarm = now + 30000;
51
delay(5);
52
}
Неактивний
Сторінки 1