Официальный сайт компании Arduino по адресу arduino.cc
Сторожевой таймер для модема
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 15/08/2016 - 15:44
Всем привет, подскажите пожалуйста, хочу сделать сторожевой таймер для старого дсл модема, очень часто отваливается интернет на модеме индикатор синхронизации со станцией мигает длинными равными сигналами, и пока по питанию его не жахнешь он не начинает работать. Хочу на индикатор синхронизации сос танцией установиь фоторезистор чтобы он считал колличество этих равных миганий и ребутил модем по питанию, сейчас вроде интервалы считает, но блин не сбрасывает счетчик если модем начал работать.
int photocellPin = 5; // фотторезистор считывающий индикатор модема int photocellReading; // числовая переменная индикатора модема int rebutMODEM = 9; // пин перезагрузки модема реле или транзисторный ключ int signal1 = 0; // сигнал отсутствия связи int signalNEUD = 0; // переменная количества неудачных перезагрузок unsigned long timer1; // интервал при отсутствии связи unsigned long timer2; // интервал при отсутствии связи void setup(void) { Serial.begin(9600); pinMode (rebutMODEM, OUTPUT); } void loop(void) { digitalWrite(rebutMODEM, HIGH); photocellReading = analogRead(photocellPin); Serial.print("Analog reading = "); Serial.println(photocellReading); if (photocellReading > 50 ) { timer1 = millis(); if (photocellReading > 50 && timer1 > 900 && timer1 > 1200){ timer2 = millis(); if (photocellReading > 50 && timer2 > 900 && timer2 > 1200){ signal1 = signal1 + 1; delay(1000); if (signal1 > 10) //если количество длинных миганий больше 10 { digitalWrite(rebutMODEM, LOW); delay(500); digitalWrite(rebutMODEM, HIGH); signal1 = 0; } } //если цикл не продолжается то перестаем считать и все сбрасывавем на 0 }else{ signal1 = 0; } } Serial.print("signal1 = "); Serial.println(signal1); }
1. Как Вы понимаете условия в строках 34 и 36 (с учётом строки 32). Можете словами сказать, что там по Вашему должно проверяться? Онм (условия) ведь перекрывают друг друга.
2. Эти сравнение (даже если их привести к осмысленному виду) будут иметь хоть какой-то смысл один раз в месяц, когда millis стартует от нуля. Проговорите опять же их словами, чтобы понять, почему. Если нужно отрабатывать азержку, это по другому делается.
светодиод модема при отсутствии связи мигает равными интервалами допустим 1 секунда, хочу на этот светодиод установить фоторезистор, в случае если на модеме происходит обрыв связи ардуина считает колличество миганий этого светодиода и если их допустим больше 10 производит холодную перезагрузку модема посредствам релюшки.
у меня сейчас вроде ардуина считает колличество этих равных миганий, но после того как она один раз перезагрузила модем (колличество равных миганий достигло 10) она начинает выдавать в сериал порт неправельные данные с фоторезистора.