project_wirelexx/ARDUINO/ARDUINO_CODE/ARDUINO_CODE.ino
2018-10-05 13:26:38 +01:00

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;
}