89 lines
3.3 KiB
Arduino
89 lines
3.3 KiB
Arduino
|
|
||
|
/*
|
||
|
SerialEvent occurs whenever a new data comes in the
|
||
|
hardware serial RX. This routine is run between each
|
||
|
time loop() runs, so using delay inside loop can delay
|
||
|
response. Multiple bytes of data may be available.
|
||
|
*/
|
||
|
void serialEvent() {
|
||
|
while (Serial.available()) {
|
||
|
// get the new byte:
|
||
|
char inChar = (char)Serial.read();
|
||
|
// add it to the inputString:
|
||
|
inputString += inChar;
|
||
|
// if the incoming character is a newline, set a flag
|
||
|
// so the main loop can do something about it:
|
||
|
if (inChar == '\n') {
|
||
|
stringComplete = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void establishContact(){
|
||
|
while (Serial.available() <= 0) {
|
||
|
Serial.println(KEY_RESET); // send an initial string
|
||
|
delay(300);
|
||
|
}
|
||
|
Serial.println(KEY_RESET+KEY_RESET+KEY_RESET+KEY_RESET);
|
||
|
}
|
||
|
|
||
|
void setFromSerial (String inputString) {
|
||
|
//remove newline
|
||
|
inputString = inputString.substring(0, inputString.length() -1);
|
||
|
char operation1 = inputString.charAt(0);
|
||
|
String string = "";
|
||
|
|
||
|
if ( operation1 == KEY_READ ){
|
||
|
//Echo string like: EV means echo volume
|
||
|
switch ( inputString.charAt(1) ) {
|
||
|
case KEY_VOLUME: string = volume; break;
|
||
|
case KEY_TITLE: string = title; break;
|
||
|
case KEY_ARTIST: string = artist; break;
|
||
|
case KEY_ALBUM: string = album; break;
|
||
|
case KEY_REPEAT: string = repeat_bool; break;
|
||
|
case KEY_SHUFFLE: string = shuffle_bool; break;
|
||
|
case KEY_RANDOM: string = random_bool; break;
|
||
|
// case KEY_CONSUME: string = consume_bool; break;
|
||
|
// case KEY_UPDATE: string = updating_bool; break;
|
||
|
// case KEY_SINGLE: string = single_bool; break;
|
||
|
case KEY_PLAYING: string = playing; break;
|
||
|
case KEY_DHT_HUMIDITY: string = humidity; break;
|
||
|
case KEY_DHT_TEMPERATURE: string = temperature; break;
|
||
|
|
||
|
default: string = KEY_ECHO; break;
|
||
|
}
|
||
|
Serial.println(string);
|
||
|
}
|
||
|
else if ( operation1 == KEY_SET ){
|
||
|
bool success = true;
|
||
|
string = inputString.substring(2);
|
||
|
|
||
|
switch ( inputString.charAt(1) ) {
|
||
|
case KEY_VOLUME: volume = string.toInt(); break;
|
||
|
case KEY_TITLE: title = string; break;
|
||
|
case KEY_ARTIST: artist = string; break;
|
||
|
case KEY_ALBUM: album = string; break;
|
||
|
case KEY_REPEAT: repeat_bool = (string != '0'); break;
|
||
|
case KEY_SHUFFLE: shuffle_bool = (string != '0'); break;
|
||
|
case KEY_RANDOM: random_bool = (string != '0'); break;
|
||
|
// case KEY_CONSUME: consume_bool = (string != '0'); break;
|
||
|
// case KEY_UPDATE: updating_bool = (string != '0'); break;
|
||
|
// case KEY_SINGLE: single_bool = (string != '0'); break;
|
||
|
case KEY_PLAYING: playing = (string != '0'); break;
|
||
|
//Echo
|
||
|
case KEY_ECHO: Serial.println(string); break;
|
||
|
default: success = false; break;
|
||
|
}
|
||
|
calcMaxTicks();
|
||
|
Serial.println(int(success), DEC);
|
||
|
}
|
||
|
else Serial.println(-1, DEC);
|
||
|
}
|
||
|
|
||
|
// write to serial from arduino
|
||
|
void writeDHT(float humidity, float temperature){
|
||
|
Serial.println(KEY_DHT_HUMIDITY+String(humidity));
|
||
|
delay(100);
|
||
|
Serial.println(KEY_DHT_TEMPERATURE+String(temperature));
|
||
|
}
|