управление восемью реле
- Войдите на сайт для отправки комментариев
Пнд, 29/02/2016 - 16:18
здраствуйте
не судите строги за ошибки )))
задачу себе поставили сделать так чтобы через блютуз открывать и закрывать двери в машине
заказали платы arduino uno и блоки парных реле, стабилизатор для блютуз , сам блютуз hc-05, пинижалу питания с 12 до 5 вольт
пока они едут человек пишет прогу на андроид я скетч для ардуинки
char incomingByte; // входящие данные
int rele1 = 3; // LED подключен к 3пину итд
int rele2 = 4;
int rele3 = 5;
int rele4 = 6;
int rele5 = 7;
int rele6 = 8;
int rele7 = 9;
int rele8 = 10;
void setup() {
Serial.begin(9600); // инициализация порта
pinMode(rele1, OUTPUT); //Устанавливаем 3 вывод как выход итд
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
pinMode(rele4, OUTPUT);
pinMode(rele5, OUTPUT);
pinMode(rele6, OUTPUT);
pinMode(rele7, OUTPUT);
pinMode(rele8, OUTPUT);
}
void loop() {
if (Serial.available() > 0) { //если пришли данные
incomingByte = Serial.read(); // считываем байт
if(incomingByte == '1')
{
digitalWrite(rele1, HIGH); // то включаем реле 1
Serial.println("левое переднее окно вверх"); // и отправляем обратно сообщение
}
if(incomingByte == '2')
{
digitalWrite(rele2, HIGH);
Serial.println("левое переднее окно вниз");
}
if(incomingByte == '3')
{
digitalWrite(rele3, HIGH);
Serial.println("левое заднее окно вверх");
}
if(incomingByte == '4')
{
digitalWrite(rele4, HIGH);
Serial.println("левое заднее окно вниз");
}
if(incomingByte == '5')
{
digitalWrite(rele5, HIGH);
Serial.println("правое переднее окно вверх");
}
if(incomingByte == '6')
{
digitalWrite(rele6, HIGH);
Serial.println("правое переднее окно вниз");
}
if(incomingByte == '7')
{
digitalWrite(rele7, HIGH);
Serial.println("правое заднее окно вверх");
}
if(incomingByte == '8')
{
digitalWrite(rele8, HIGH);
Serial.println("правое заднее окно вверх");
}
delay (400) // ожидаем 400 миллисекунд и вырубаем все реле
digitalWrite(rele1, LOW);
digitalWrite(rele2, LOW);
digitalWrite(rele3, LOW);
digitalWrite(rele4, LOW);
digitalWrite(rele5, LOW);
digitalWrite(rele6, LOW);
digitalWrite(rele7, LOW);
digitalWrite(rele8, LOW);
}
}
я понимаю что у меня реле будет работать с перерывами если и будет работать программа
посмотрите посоветуйте
спс
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
https://www.arduino.cc/en/Reference/SwitchCase
В начале вместо "int" пиши "const int".
Реле могут управлять и инверсным уровнем.
После Serial.read я бы принудительно flush делал, чтобы не было задержки в 0,4 секунды, если в буфере мусор.
я про flush не понял вы писали его для очистки буфера последовательного порта ??
и про инверсный уровень тоже не понял поясните это если пины менять на другие ???
Прилетает в порт "1<CR><LF>"
Программа обрабатывает "1", потом ждет 0,4 сек и гасит все.
Потом по условию сразу попадаем на 0,4 сек и еще раз.
Сбрасывать буфер или добавить дполонительную проверку на левые данные. C помощью case...switch делается легко, просто и красиво.
Если реле "такие синенькие", то у них один контакт нормально замкнут, а второй нормально разомкнут. Переключение происходит при подаче на пин низкого уровня.
что то у меня с switch не получается
case label '1' not within a switch statement
не могу понять что то вроде не пашет просто единичка в свитче говорит
case '1' :
когда написал
А где вигурные скобки? Ну для чего не лесом послал, а ссылку дал?
С разбегу как-то так.
А где вигурные скобки? Ну для чего не лесом послал, а ссылку дал?
про скобки я вьехал просто не увидел
и это т код как и мой выдает
'char incomingByte' previously declared here
типа раньше определен
что то не то с этой структурой
на сколько я понял switch сам пытаеться определять переменные