Re: Управление рулевыми кнопками при помощи Carduino.
всё собрал,всё работает.но.. подскажите как две ардуины одновременно поставить? чего то не пойму.
одна стоит на рулевые кнопки,вторая на реле-плагин на центрифугу. одну выдергиваешь,вторая работает...вместе нет...
или подскажите,можно слиять два скетча?
на плагине 8 реле,на рулевых кнопках 5 рэле.
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
#define PIN 5 //номер аналогового порта
#define LIMIT 6 //предел погрешности сопротивления
byte bytes[2];
int res_dt1;
unsigned long math_time,old_time,real_time;
void setup()
{
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
Serial.begin(115200); // настроить скорость com порта
}
void loop()
{
old_time = real_time;
math_time = 0;
res_dt1 = analogRead(PIN); // прочитать данные АЦП
while(math_time < 300 && (analogRead(PIN)>res_dt1-LIMIT && analogRead(PIN) < res_dt1+LIMIT ))
{
real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность паузы
}
if( math_time > 80 ) //если нет дребезга
{
if (res_dt1>675 && res_dt1<685) digitalWrite(10,LOW );
delay(30);
digitalWrite(10, HIGH);
if (res_dt1>105 && res_dt1<115) digitalWrite(11,LOW );
delay(30);
digitalWrite(11, HIGH);
if (res_dt1>25 && res_dt1<35) digitalWrite(12,LOW );
delay(30);
digitalWrite(12, HIGH);
if (res_dt1>410 && res_dt1<415) digitalWrite(13,LOW );
delay(30);
digitalWrite(13, HIGH);
bytes[0] = res_dt1 & 255; // преобразовать в 2-байта
bytes[1] = (res_dt1 & 768) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
}
}
void setup()
{
// выходы управления реле
for (int i=2; i < 10; i++)
{
pinMode(i,OUTPUT);
digitalWrite(i, LOW);
}
// инициализация порта
Serial.begin(9600);
}
void loop()
{
byte a, b, c;
if (Serial.available() > 2) // ждем данные от плагина
{
a = Serial.read();
b = Serial.read();
c = Serial.read();
if(a == 0xFF) //если данные от плагина, то выполим команду
{
digitalWrite(b+1, (c==0x01) ? HIGH : LOW); //выполнить
} } }
вот так не компилируется,выдает ошибку.
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Beard
вот так не компилируется,выдает ошибку.
И не будет. Изучите хоть поверхностно основы работы с ардуино http://arduino.ru/Reference/Setup и http://arduino.ru/Reference/Loop
Так попробуйте:
Код:
#define PIN 5 //номер аналогового порта
#define LIMIT 6 //предел погрешности сопротивления
byte bytes[2];
int res_dt1;
unsigned long math_time,old_time,real_time;
void setup()
{
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
Serial.begin(115200); // настроить скорость com порта
// выходы управления реле
for (int i=2; i < 10; i++)
{
pinMode(i,OUTPUT);
digitalWrite(i, LOW);
}
}
void loop()
{
relay(); // цикл void relay()
old_time = real_time;
math_time = 0;
res_dt1 = analogRead(PIN); // прочитать данные АЦП
while(math_time < 300 && (analogRead(PIN)>res_dt1-LIMIT && analogRead(PIN) < res_dt1+LIMIT ))
{
real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность паузы
}
if( math_time > 80 ) //если нет дребезга
{
if (res_dt1>675 && res_dt1<685) digitalWrite(10,LOW );
delay(30);
digitalWrite(10, HIGH);
if (res_dt1>105 && res_dt1<115) digitalWrite(11,LOW );
delay(30);
digitalWrite(11, HIGH);
if (res_dt1>25 && res_dt1<35) digitalWrite(12,LOW );
delay(30);
digitalWrite(12, HIGH);
if (res_dt1>410 && res_dt1<415) digitalWrite(13,LOW );
delay(30);
digitalWrite(13, HIGH);
bytes[0] = res_dt1 & 255; // преобразовать в 2-байта
bytes[1] = (res_dt1 & 768) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
}
}
void relay()
{
byte a, b, c;
if (Serial.available() > 2) // ждем данные от плагина
{
a = Serial.read();
b = Serial.read();
c = Serial.read();
if(a == 0xFF) //если данные от плагина, то выполим команду
{
digitalWrite(b+1, (c==0x01) ? HIGH : LOW); //выполнить
}
}
}
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
lti1
Так попробуйте:
залил на одну ардуину. работает только то,что первым запустить,для второй порт занят.
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Beard
залил на одну ардуину. работает только то,что первым запустить,для второй порт занят.
Это объединенный скетч для одной ардуины. А Вы что хотели объединив скетчи? Или Вы имеете ввиду программы которые к ним обращаются?
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
lti1
Это объединенный скетч для одной ардуины. А Вы что хотели объединив скетчи? Или Вы имеете ввиду программы которые к ним обращаются?
у меня уже в авто стоит ардуина с плагином кнопок от ценрифуги.
появилось желание рулевые кнопки прикрутить. не получается ни две ардуины запустить,ни два скейтча в одной.что бы и хоткей и центрифуга обращались только к своей ардуине. в центрифуге можно порт выставить....
Re: Управление рулевыми кнопками при помощи Carduino.
Beard, есть два варианта решения. первый: в каждой программе (плагине и обработчике кнопок на ПК) прописать порт для своей ардуины. второй: все повесить на одну ардуину и написать программу обрабатывающую и кнопки, и управление реле. нечто подобное делал тут, правда кнопки не резистивные (легко редактируется, все равно под ардуино переписывать).
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
manu_245
в каждой программе (плагине и обработчике кнопок на ПК) прописать порт для своей ардуины.
как хоткею прописать порт?
Re: Управление рулевыми кнопками при помощи Carduino.
Программа сама ищет подключенное устройство "Joystik"
с другими устройствами она не работает
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Chip
Программа сама ищет подключенное устройство "Joystik"
с другими устройствами она не работает
в компе два ардуино,одно со скетчем из этой темы,второе со скетчем для центрифуги.
перегружаем комп,и работает только плагин центрифуги,ибо наверное что порт ему известен.
выдергиваем ардуину с центрифугой,сразу начинает видеть хоткей свою ардуину. втыкаем обратно ценрифужную,всё-хоткей не робит...