/* 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)); }