131 lines
2.4 KiB
C++
Executable File
131 lines
2.4 KiB
C++
Executable File
#define PLAY 1
|
|
#define VUP 2
|
|
#define VDOWN 3
|
|
#define NEXT 4
|
|
#define PREV 5
|
|
#define PWR 6
|
|
#define IN A0 /*ANALOG*/
|
|
#define MULTIPLIER 0.0048875855
|
|
#define PULSE 500
|
|
#define WAIT 500
|
|
#define SAMPLE A1
|
|
#define PULSE 13
|
|
boolean STATUS = false;
|
|
float VAL;
|
|
unsigned long startTime = 0;
|
|
unsigned long endTime = 0;
|
|
unsigned long Started = 0;
|
|
unsigned long Ended = 0;
|
|
boolean CLOSED = false;
|
|
int CHANGED = 0;
|
|
|
|
void setup() {
|
|
pinMode(PLAY, OUTPUT);
|
|
pinMode(VUP, OUTPUT);
|
|
pinMode(VDOWN, OUTPUT);
|
|
pinMode(NEXT, OUTPUT);
|
|
pinMode(PREV, OUTPUT);
|
|
pinMode(PWR, OUTPUT);
|
|
pinMode(IN, INPUT);
|
|
Started = millis();
|
|
pinMode(SAMPLE, INPUT);
|
|
pinMode(PULSE, INPUT);
|
|
}
|
|
|
|
void loop() {
|
|
Ended = millis() - Started;
|
|
if(Ended > 2000){checkStatus();}
|
|
VAL = (MULTIPLIER*(analogRead(IN)));
|
|
if (VAL < 1.90){
|
|
delay(1);
|
|
VAL = (MULTIPLIER*(analogRead(IN)));
|
|
if((VAL > 1.60) && (VAL < 1.65)){
|
|
volUp();
|
|
}
|
|
if((VAL > 1.45) && (VAL < 1.58)){
|
|
volDown();
|
|
}
|
|
if(VAL < 0.1){
|
|
otherStuff();
|
|
}}}
|
|
|
|
|
|
void volUp(){
|
|
digitalWrite(VUP, HIGH);
|
|
delay(PULSE);
|
|
digitalWrite(VUP, LOW);
|
|
}
|
|
void volDown(){
|
|
digitalWrite(VDOWN, HIGH);
|
|
delay(PULSE);
|
|
digitalWrite(VDOWN, LOW);
|
|
}
|
|
void PlPa(){
|
|
digitalWrite(PLAY, HIGH);
|
|
delay(PULSE);
|
|
digitalWrite(PLAY, LOW);
|
|
}
|
|
void Next(){
|
|
digitalWrite(NEXT, HIGH);
|
|
delay(PULSE);
|
|
digitalWrite(NEXT, LOW);
|
|
}
|
|
void Prev(){
|
|
digitalWrite(PREV, HIGH);
|
|
// Serial.println("PREV");
|
|
delay(PULSE);
|
|
digitalWrite(PREV, LOW);
|
|
}
|
|
void otherStuff(){
|
|
CLOSED = true;
|
|
CHANGED = 1;
|
|
startTime = millis();
|
|
endTime = millis() - startTime;
|
|
while(endTime < WAIT){
|
|
|
|
if(CLOSED == true){
|
|
VAL = (MULTIPLIER*(analogRead(IN)));
|
|
if(VAL > 0.02){
|
|
|
|
CLOSED = false;
|
|
CHANGED++;
|
|
}
|
|
}
|
|
if(CLOSED == false){
|
|
VAL = (MULTIPLIER*(analogRead(IN)));
|
|
if(VAL < 0.02){
|
|
CLOSED = true;
|
|
CHANGED++;
|
|
}}
|
|
|
|
endTime = millis() - startTime;
|
|
delay(1);
|
|
}
|
|
|
|
if(CHANGED == 2){PlPa();}
|
|
if(CHANGED == 4){Next();}
|
|
if(CHANGED == 6){Prev();}
|
|
releaseVal();
|
|
}
|
|
void releaseVal(){
|
|
CHANGED = 0;
|
|
startTime = 0;
|
|
endTime = 0;
|
|
CLOSED = false;
|
|
}
|
|
void checkStatus(){
|
|
if(analogRead(SAMPLE) > 0.01){
|
|
STATUS = true;}
|
|
else{
|
|
// Serial.println("Can't identify music, sending pulse...");
|
|
pinMode(PULSE, OUTPUT);
|
|
digitalWrite(PULSE, HIGH);
|
|
if(analogRead(SAMPLE) > 0.01){STATUS = true;}
|
|
else{STATUS = false;}
|
|
}
|
|
digitalWrite(PULSE, LOW);
|
|
pinMode(PULSE, INPUT);
|
|
Started = millis();
|
|
Ended = 0;
|
|
}
|