Подскажите в чём может быть проблема, подключил сегодня себе авто регулировку подсветки, теперь такая проблема, при нажатии кнопок на руле пригасает подсветка, например нажимаю громкость вверх, гаснет на 50%, жму кнопку mute гаснет на 90%.
К ардуино подцеплено управление компьютером (hotkey) паралельно управляется магнитола Pioneer 88rs, ну и соответственно авторегулировка яркости...
А так, всё работает.
Вот мой скетч:
PHP код:
int analogPin = 7; // potentiometer wiper (middle terminal) connected to analog pin 3
int val = 0; // variable to store the value read
int mute = 2; //MUTE Выход для нажатии кнопки
int volu = 3; //Volume UP Выход для нажатии кнопки
int vold = 4; //Volume DOWN Выход для нажатии кнопки
int pt = 5; //Предыдущий трек
int nt = 6; //След трек
int ledPin = 9;
int sens = 0;
int light = 0;
#define PIN 7 //номер аналогового порта
#define LIMIT 20 //предел погрешности сопротивления
byte bytes[2];
int res_dt1, res_d;
unsigned long math_time,old_time,real_time;
void setup()
{
Serial.begin(115200); // настроить скорость com порта
}
void loop()
{
res_d = analogRead(PIN); // прочитать данные АЦП
delay(30);
res_dt1 = analogRead(PIN); // прочитать данные АЦП
old_time = millis();
math_time = 0;
while(math_time < 300 && (res_dt1 > res_d-LIMIT && res_dt1 < res_d+LIMIT ))
{
real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность нажатия
res_dt1 = analogRead(PIN); // прочитать данные АЦП
}
if( math_time > 50) //если нет дребезга то короткое нажатие
{
bytes[0] = res_d & 255; // преобразовать в 2-байта
bytes[1] = (res_d & 768) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
}
val = analogRead(analogPin); // PIONEER read the input pin
{
if (val > 600)
pinMode(mute, INPUT);
pinMode(volu, INPUT);
pinMode(vold, INPUT);
pinMode(nt, INPUT);
pinMode(pt, INPUT);
}
if (val > 0 and val < 40)
{
pinMode(mute, OUTPUT);
}
if (val > 60 and val < 120)
{
pinMode(volu, OUTPUT);
}
if (val > 140 and val < 200)
{
pinMode(vold, OUTPUT);
}
if (val > 300 and val < 420)
{
pinMode(nt, OUTPUT);
}
if (val > 500 and val < 590)
{
pinMode(pt, OUTPUT);
}
{
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
}
{
sens = analogRead(0);
if ((sens > 0) && (sens<3)) {light = 1;}
if ((sens > 5) && (sens<10)) {light = 5;}
if ((sens > 10) && (sens<15)) {light = 10;}
if ((sens > 15) && (sens<18)) {light = 20;}
if ((sens > 20) && (sens<25)) {light = 30;}
if ((sens > 25) && (sens<30)) {light = 40;}
if ((sens > 30) && (sens<35)) {light = 50;}
if ((sens > 35) && (sens<38)) {light = 60;}
if ((sens > 40) && (sens<45)) {light = 70;}
if ((sens > 45) && (sens<50)) {light = 80;}
if ((sens > 50) && (sens<55)) {light = 90;}
if ((sens > 55) && (sens<60)) {light = 150;}
if ((sens > 65) && (sens<70)) {light = 210;}
if ((sens > 70) && (sens<80)) {light = 230;}.
if (sens > 80) {light = 255;}
analogWrite(ledPin, light);
//Serial.print(sens, DEC);
//Serial.print(" ");
//delay(300);
}
}
Может в нём что-то подправить можно ?
Или как то всё преподключить на самой ардуино ?
По всякому пробовал, у меня ничего не получилось. И еще почему то подсветка резкими ступенями регулируется, оч отвлекает, а те скетчи что преведены выше, не понял подойдут мне или нет.