Ну да, параллельно... Если от SIDа рулевые кнопки отсоединить совсем, перестанет клаксон работать
Ну да, параллельно... Если от SIDа рулевые кнопки отсоединить совсем, перестанет клаксон работать
Saab 9-5 CarPC[==90%=>]Challenger TA-5.1+optical S/PDIF+D510MO+8" LCD 8SKD-80NP/C/T
Таким способом параллельно нельзя подключать, удивлен что у тебя Arduino жив еще после этого.
На ардуино можно сделать эмуляцию клаксона
ПРи получении с кнопок значения =0 нажать оптроном кнопку подключенную к магнитоле
Попробуй вот этот скетч
PHP код:
//http://compcar.ru
#define PIN 5 //номер аналогового порта
#define LIMIT 10 //предел погрешности сопротивления
#define encoder0PinA 2
#define encoder0PinB 3
byte bytes[4];
volatile enbuf[4]={0,0,0,0};
unsigned long math_time,old_time,real_time, res_dt1, res_d;
void setup()
{
pinMode(encoder0PinA, INPUT);
digitalWrite(encoder0PinA, HIGH); // подключить подтягивающий резистор
pinMode(encoder0PinB, INPUT);
digitalWrite(encoder0PinB, HIGH); // подключить подтягивающий резистор
attachInterrupt(0, doEncoderA, FALLING); // настроить прерывание interrupt 0 на pin 2
attachInterrupt(1, doEncoderB, FALLING); // настроить прерывание interrupt 0 на pin 3
Serial.begin (115200);
}
void loop()
{
Serial.write(enbuf, 4);
for(byte i=0; i<4; i++) bytes[i]=0;
res_d = analogRead(PIN); // прочитать данные АЦП
if( res_d < LIMIT) res_d = LIMIT;
delay(10);
res_dt1 = analogRead(PIN); // прочитать данные АЦП
old_time = millis();
math_time = 0;
while(math_time < 200)
{
real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность нажатия
res_dt1 = analogRead(PIN); // прочитать данные АЦП
if(res_dt1 < res_d-LIMIT || res_dt1 > res_d+LIMIT)break;
}
if( math_time > 70) //если нет дребезга то короткое нажатие
{
bytes[0] = res_d & 0xFF; // преобразовать в 4-байта
bytes[1] = (res_d & 0xFF00) >> 8;
bytes[2] = (res_d & 0xFF0000) >> 16;
bytes[3] = (res_d & 0xFF000000) >> 24;
Serial.write( bytes,4); // отправить прочитаное значение компьютеру
}
}
void doEncoderA() // обработка прерывания
{
for(byte i=0; i<4; i++) enbuf[i]=0;
if(digitalRead(encoder0PinB)==HIGH) enbuf[1]=24; else enbuf[1]=15;
}
void doEncoderB() // обработка прерывания
{
for(byte i=0; i<4; i++) enbuf[i]=0;
if(digitalRead(encoder0PinA)==HIGH) enbuf[1]=15; else enbuf[1]=24;
}
Последний раз редактировалось Chip; 14.03.2012 в 02:16.
ругается на строку:
volatile enbuf[4]={0,0,0,0}; // sketch_mar14a:23:6: error: ISO C++ forbids declaration of 'enbuf' with no type
поменял на:
volatile byte enbuf[4]={0,0,0,0};
ругается на:
Serial.write(enbuf, 4); // sketch_mar14a:23: error: invalid conversion from 'volatile byte*' to 'const uint8_t*'
поменял просто на:
byte enbuf[4]={0,0,0,0};
результат тотже - умножается на 256...
Последний раз редактировалось WhiteWings; 14.03.2012 в 18:50.
Перепрошил устройство. Установил новый драйвер. Скачал новую версию Hotkey. При запуске Hotkey произносится "устройство обноружено", программа прячется в трей и там висит. Однако, когда я нажимаю на развернуть, программа из трея исчезает и все....в списке процессов в Диспетчере задач она есть, а на экране ничего нет...куда копать?
Asus P8H67-I-Deluxe, Core i3 2100, 4Gb DDR-3, Scythe Big Shuriken II, 64Gb SSD, CM Elite 100, Mini-ITX, 869GL
Версия программы какая?
Версия 3.0
Asus P8H67-I-Deluxe, Core i3 2100, 4Gb DDR-3, Scythe Big Shuriken II, 64Gb SSD, CM Elite 100, Mini-ITX, 869GL
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)