unsigned long kruiz_aktiviti=0;
unsigned long knopka_time=0 ; //таймер кнопки,
bool KEY_mute_activity=0; //флаг активности кнопки mute
bool KEY_ch_plys_activity=0; //флаг активности кнопки ch_plys
bool KEY_ch_minus_activity=0; //флаг активности кнопки ch_minus
bool KEY_mode_activity=0; //флаг активности кнопки mode
bool status_zumer=0;
bool zumer_activity=0;
bool kruiz_regim=0;
#define max_time 8000 //задержка на долгое нажатие
#define min_time 10
// Значения кнопок
#define KEY_vol_minus 650 //Кнопка
#define KEY_vol_plys 552 //Кнопка
#define KEY_mute 451 //Кнопка
#define KEY_mode 357 //Кнопка
#define KEY_ch_minus 228 //Кнопка
#define KEY_ch_plys 98 //Кнопка
#define NOKEY 1023 //Кнопки отпущены
#define vol_minus 7 // № пина
#define vol_plys 6 // № пина
#define mute 5 // № пина
#define mode 4 // № пина
#define ch_minus 3 // № пина
#define ch_plys 2 // № пина
#define on_of 10 // № пина
#define res_plys 11 // № пина
#define res_minus 12 // № пина
#define cancel 9 // № пина
#define zumer 8 // № пина
void setup() {
Serial.begin(9600); // initialize serial communication at 9600 bits per second:
pinMode(vol_minus, OUTPUT);
pinMode(vol_plys, OUTPUT);
pinMode(mute, OUTPUT);
pinMode(mode, OUTPUT);
pinMode(ch_minus, OUTPUT);
pinMode(ch_plys, OUTPUT);
pinMode(on_of, OUTPUT);
pinMode(res_plys, OUTPUT);
pinMode(res_minus, OUTPUT);
pinMode(cancel, OUTPUT);
pinMode(zumer, OUTPUT);
}
void loop() {
int KEY = analogRead(A0); // считываем значение напряж pin A0:
// Serial.println(analogRead(A0));// печать в порт
if(KEY>KEY_vol_plys-10&KEY<KEY_vol_plys+10){digitalWrite(vol_plys, HIGH);}// если нажали кнопку vol_plys включаем резюк vol_plys
else {digitalWrite(vol_plys, LOW);} //если отпустили выключаем
if(KEY>KEY_vol_minus-10&KEY<KEY_vol_minus+10){digitalWrite(vol_minus, HIGH);}// если нажали кнопку vol_minus включаем резюк vol_minus
else {digitalWrite(vol_minus, LOW);} //если отпустили выключаем
if(kruiz_aktiviti==1){
if(KEY>KEY_mute-10&KEY<KEY_mute+10){ //если нажали кнопку mute
KEY_mute_activity=1; //меняем статус ЧТО КНОПКА НАЖАТА
if(knopka_time<max_time){knopka_time++;} //запуск таймера
if(knopka_time==max_time){ //если таймер дотикал до максимума
digitalWrite(cancel, HIGH);zumer_activity=1; //включаем резюк на cancel
}}
else{digitalWrite(cancel, LOW);}
if(KEY>KEY_ch_plys-10&KEY<KEY_ch_plys+10){ //если нажали кнопку ch_plys
KEY_ch_plys_activity=1; //меняем статус ЧТО КНОПКА НАЖАТА
if(knopka_time<max_time){knopka_time++;} //запуск таймера
if(knopka_time==max_time){ //если таймер дотикал до максимума
digitalWrite(res_plys, HIGH);zumer_activity=1; //включаем резюк на res_plys
}}
else{digitalWrite(res_plys, LOW);}
if(KEY>KEY_ch_minus-10&KEY<KEY_ch_minus+10){ //если нажали кнопку ch_minus
KEY_ch_minus_activity=1; //меняем статус ЧТО КНОПКА НАЖАТА
if(knopka_time<max_time){knopka_time++;} //запуск таймера
if(knopka_time==max_time){ //если таймер дотикал до максимума
digitalWrite(res_minus, HIGH);zumer_activity=1; //включаем резюк на res_minus
}}
else{digitalWrite(res_minus, LOW);}}
if(kruiz_aktiviti==0){
if(KEY>KEY_mute-10&KEY<KEY_mute+10){digitalWrite(mute, HIGH);}
else{digitalWrite(mute, LOW);}
if(KEY>KEY_ch_plys-10&KEY<KEY_ch_plys+10){digitalWrite(ch_plys, HIGH);}
else{digitalWrite(ch_plys, LOW);}
if(KEY>KEY_ch_minus-10&KEY<KEY_ch_minus+10){digitalWrite(ch_minus, HIGH);}
else{digitalWrite(ch_minus, LOW);}
}
if(KEY>KEY_mode-10&KEY<KEY_mode+10){ //если нажали кнопку mode
KEY_mode_activity=1; //меняем статус ЧТО КНОПКА НАЖАТА
if(knopka_time<max_time){knopka_time++;} //запуск таймера
if(knopka_time==max_time){ //если таймер дотикал до максимума
digitalWrite(on_of, HIGH);zumer_activity=1; //включаем резюк на on_of
if(!kruiz_regim){ kruiz_regim=1;kruiz_aktiviti++ ; }
}}
else{digitalWrite(on_of, LOW);}
if(kruiz_aktiviti==2){kruiz_aktiviti=0;}
if(!status_zumer&zumer_activity){tone(zumer, 1200, 300);status_zumer=1;}
if(KEY>NOKEY-20&KEY<NOKEY+10){ //после отпускания кнопок
if(knopka_time<max_time&knopka_time>min_time) //проверяем время нажатия и какая кнопка была нажата
{
if(KEY_mute_activity){digitalWrite(mute, HIGH); delay(200);digitalWrite(mute, LOW); } //если mute коротко тогда включам резюк mute на 0,2 секунды
if(KEY_ch_plys_activity){digitalWrite(ch_plys, HIGH); delay(200);digitalWrite(ch_plys, LOW); }//если ch_plys------
if(KEY_ch_minus_activity){digitalWrite(ch_minus, HIGH); delay(200);digitalWrite(ch_minus, LOW); }//если ch_minus -----
if(KEY_mode_activity){digitalWrite(mode, HIGH); delay(200);digitalWrite(mode, LOW); }//если mode ------
}
knopka_time=0;KEY_mute_activity=0;KEY_ch_plys_acti vity=0;KEY_ch_minus_activity=0;KEY_mode_activity=0 ;status_zumer=0;zumer_activity=0;kruiz_regim=0;} //сбрасывае все щетчики и таймеры и ждем следуещего нажатия
}
|