нужна помощь в правке скетча
- Войдите на сайт для отправки комментариев
Пт, 17/10/2014 - 16:48
Добрый день .
Нужна помощь вправке или переписи скетча. Данный скетч нужен для управления нагрузками (их три пока) во время работы эл. станции + управление сервой (связан с рубильником) переключает нагрузку на городскую или резервную линию.
Сам уже два месяца топчусь на месте.
Проблема: в моём коде не выходит сразу из цикла переключения нагрузок
PS
На время симулирования время сократил до 18сек.
#include <Servo.h> Servo myservo1; //сервопривод рубильника #define ledPin1 7 // это выход - светодиод вкл город #define ledPin2 8 // это выход - светодиод вкл дэс #define ledPin3 13 // это выход - светодиод ошибка недовключение #define ledPin4 17; // это выход - светодиод вкл бассейн #define buttonPin1 12 // это вход - кнопка 1 город #define buttonPin2 14 // это вход - кнопка 1 дэс #define buttonPin3 4 // это вход - концевик 1 город #define buttonPin4 2 // это вход - концевик 1 дэс //#define buttonPin5 17 // это вход - вход бассейна //#define buttonPin6 18 // это вход - вход дом //#define buttonPin7 0 // это вход - вход теплицы //#define buttonPin8 15 // это вход - тумблер //#define buttonPin9 16 // это вход - тумблер #define relPin3 9 //ПУСКАТЕЛЬ бас #define relPin4 10 //пускатель дом #define relPin5 11 //пускатель теплица int lednumber=4; //количество светодиодов int i; //переменные циклов int del=18000; void setup() { myservo1.attach(3); // это серва связана с рубильником } void loop() { myservo1.attach(3); digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); digitalWrite(relPin3, HIGH); digitalWrite(relPin4, HIGH); digitalWrite(relPin5, HIGH); { if((digitalRead(buttonPin1) == HIGH && digitalRead(buttonPin2) == HIGH)||(digitalRead(buttonPin1) == LOW && digitalRead(buttonPin2) == LOW))//проверяем наличие сигнала с города и дэс если сигнал есть и там и там тj //проверяем наличие сигнала с города и дэс если нет сигнала и там и там то myservo1.write(85); // рубильник переводим в позицию 0 else //если условие невыполняется то { if(digitalRead(buttonPin1) == HIGH) //если есть сигнал город то рубильник переводится в положение город { myservo1.write(137); digitalWrite(ledPin1, HIGH); //зажигаем сетодиод город digitalWrite(relPin3, LOW); // digitalWrite(relPin4, LOW); digitalWrite(relPin5, LOW); myservo1.write(140); } if(digitalRead(buttonPin2)==HIGH)//если есть сигнал дэс то рубильник переводится в положение дэс { myservo1.write(35); digitalWrite(ledPin2, HIGH); //зажигаем светодиод дэс myservo1.write(30); } } if((digitalRead(buttonPin1) == HIGH && digitalRead(buttonPin3) == HIGH)||(digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin4) == HIGH))//если есть сигнал город и концевик город(тоесть рубильник установился в нужное положенние) //или есть сигнал дэс и концевик дэс(тоесть рубильник установился в нужное положенние) { myservo1.detach(); //после установки сервы её отключить delay(500); } { if (digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin4) == HIGH) //если есть сигнал дэс и концевик дэс (то следует запустить цикличное переключение нагрузки) for (i=9;i<=11;i++) //выполняется цикл переключения реле от вывода 9 до 11 по 30мин { digitalWrite(i,LOW);//включили реле delay(del); //подождали digitalWrite(i,HIGH); //выключили релe if (digitalRead(buttonPin2) == LOW || digitalRead(buttonPin4) == LOW) break;} } } }
а зачем рубильник? не лучше ли контактор (мощное рэле) поставить
можно и авр собрать
В дизель станции есть свой полнофункциональный АВР, контакторы стоят (только электросети прикололись, затребовали установку перекидного рубильника).
И нагрузки раза в три больше чем мощности электростанции.Поэтому гимр с переключением нагрузки.
Рубильник с сервоприводом и концевиками уже скрестил прикольно получилось.
delay(del);
//подождали
82 строка. не удивительно что не выходит :). это команда блокирующая.
надо делать
Напишите на почту, возможно смогу помочь за небольшое вознаграждение...
aleks-faza@yandex.ru
Вы про break в if? i=12; вместо break.
хз че я тут наредактировал
Спасибо всем, roman2712 помог уже
для начала код по правилам вставьте
Еслиб я знал как!