#define PIN 0 //номер аналогового порта
#define LIMIT 6 //предел погрешности сопротивления
#define A1 12
#define A2 13
#define A3 13
#define A4 14
#define A5 15
#define A6 16
byte bytes[2];
int res_dt1;
unsigned long math_time,old_time,real_time;
void setup()
{
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
pinMode(A6, 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>369 && res_dt1<380) digitalWrite(A2,HIGH );
delay(30);
digitalWrite(A2, LOW);
if (res_dt1>165 && res_dt1<175) digitalWrite(A3,HIGH );
delay(30);
digitalWrite(A3, LOW);
if (res_dt1>70 && res_dt1<85) digitalWrite(A4,HIGH );
delay(30);
digitalWrite(A4, LOW);
if (res_dt1>30 && res_dt1<40) digitalWrite(A5,HIGH );
if (res_dt1>0 && res_dt1<3) digitalWrite(A5,LOW);
if (res_dt1>1 && res_dt1<3) digitalWrite(A6,HIGH );
delay(30);
digitalWrite(A6, LOW);
bytes[0] = res_dt1 & 255; // преобразовать в 2-байта
bytes[1] = (res_dt1 & 768) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
}
}
кто разбирается,проверьте пожалуйста.
будет работать? мне нужно рулевыми кнопками управлять реле.
сопротивление-
не нажато-10кОм
1кн-3.73кОм
2кн-1.70кОм
3кн-0.78кОм
4кн-0.36кОм
5кн-0.10кОм
ну и попутно компом управлять...