PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > Всё Остальное > Arduino проекты

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2009, 19:28   #1
interhard
Новый Пользователь
 
Аватар для interhard
 
Регистрация: 20.04.2009
Возраст: 40
Город: Петербург
Регион: 78, 98
Машина: Ford Focus
Сообщений: 16
interhard is on a distinguished road
По умолчанию Arduino && RelayBoard Plugin

Есть интересный плагинчик у буржуев :
http://forums.fluxmedia.net/plugin-d...html#post47479

За неимением USB платы попробовал подключить к этому делу ардуино:

Плагин общается с ком портом так:
реле 1 - FF 01 01 - включение
FF 01 00 - выключение
............................................
реле 16 - FF 16 01
FF 16 00
где FF - заголовок пакета, 01...16 - байты выбора реле, 01-00 - состояние реле (01 - вкл., 00 - выкл.)

код для ардуино:

Код:
int relay1 = 2; 
int relay2 = 3; 
int relay3 = 4; 
int relay4 = 5; 
int relay5 = 6; 
int relay6 = 7; 
int relay7 = 8; 
int relay8 = 9; 

void setup()
{
  // выходы реле
  pinMode(relay1,OUTPUT);
  pinMode(relay2,OUTPUT);
  pinMode(relay3,OUTPUT);
  pinMode(relay4,OUTPUT);
  pinMode(relay5,OUTPUT);
  pinMode(relay6,OUTPUT);
  pinMode(relay7,OUTPUT);
  pinMode(relay8,OUTPUT);

  // инициализация порта
  Serial.begin(9600); // Baud rate 9600
}

void loop()
{ 
  // ждем данные от плагина
  if (Serial.available() > 2)
  {
    byte a, b, c;
    a = Serial.read(); 
    b = Serial.read();
    c = Serial.read();
    if (a == B11111111 && b == B00000001 && c == B00000001) digitalWrite(relay1, HIGH);
    if (a == B11111111 && b == B00000001 && c == B00000000) digitalWrite(relay1, LOW);
    if (a == B11111111 && b == B00000010 && c == B00000001) digitalWrite(relay2, HIGH);
    if (a == B11111111 && b == B00000010 && c == B00000000) digitalWrite(relay2, LOW);
    if (a == B11111111 && b == B00000011 && c == B00000001) digitalWrite(relay3, HIGH);
    if (a == B11111111 && b == B00000011 && c == B00000000) digitalWrite(relay3, LOW);
    if (a == B11111111 && b == B00000100 && c == B00000001) digitalWrite(relay4, HIGH);
    if (a == B11111111 && b == B00000100 && c == B00000000) digitalWrite(relay4, LOW);
    if (a == B11111111 && b == B00000101 && c == B00000001) digitalWrite(relay5, HIGH);
    if (a == B11111111 && b == B00000101 && c == B00000000) digitalWrite(relay5, LOW);
    if (a == B11111111 && b == B00000110 && c == B00000001) digitalWrite(relay6, HIGH);
    if (a == B11111111 && b == B00000110 && c == B00000000) digitalWrite(relay6, LOW);
    if (a == B11111111 && b == B00000111 && c == B00000001) digitalWrite(relay7, HIGH);
    if (a == B11111111 && b == B00000111 && c == B00000000) digitalWrite(relay7, LOW);
    if (a == B11111111 && b == B00001000 && c == B00000001) digitalWrite(relay8, HIGH);
    if (a == B11111111 && b == B00001000 && c == B00000000) digitalWrite(relay8, LOW);
    
}  
}
Количество подключаемых реле 1,8,16. Соответственно в код можно добавить нужные или убрать ненужные.

Последний раз редактировалось admin; 02.04.2018 в 02:50.
interhard вне форума   Ответить с цитированием
Старый 06.10.2009, 20:49   #2
algama
Пользователь
 
Регистрация: 03.09.2008
Регион: 77, 97, 99, 177
Сообщений: 74
algama is on a distinguished road
По умолчанию

ардруино штука прикольная, но не стоит забывать что это не писюк.
ресурсы надо экономить
Код:
void loop()
{ 
  // ждем данные от плагина
  if (Serial.available() > 2)
  {
    byte a, b, c;
    a = Serial.read(); 
    b = Serial.read();
    c = Serial.read();
    if(a == 0xFF)
    {
      digitalWrite(b+1, (c==0x01) ? HIGH : LOW);
    }
  }  
}
algama вне форума   Ответить с цитированием
Старый 06.10.2009, 21:49   #3
interhard
Новый Пользователь
 
Аватар для interhard
 
Регистрация: 20.04.2009
Возраст: 40
Город: Петербург
Регион: 78, 98
Машина: Ford Focus
Сообщений: 16
interhard is on a distinguished road
По умолчанию

Век живи век учись
interhard вне форума   Ответить с цитированием
Старый 24.10.2009, 14:04   #4
Chip
Старший Пользователь
 
Аватар для Chip
 
Регистрация: 29.05.2007
Город: Москва
Регион: 77, 97, 99, 177
Сообщений: 372
Chip will become famous soon enough
По умолчанию

Выложил плагин для скачивания здесь
Chip вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 00:54.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot