The "while (Serial.available() > 0)" Block won't pickup on incoming messages sent from Arduino Uno despite them appearing on the Serial monitor.

This page summarizes the projects mentioned and recommended in the original post on /r/arduino

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • ESP32-audioI2S

    Play mp3 files from SD via I2S

  • #include #include // Initializes Library with numbers of the interface pins //LiquidCrystal lcd(5, 18, 19, 21, 22, 23); /* * LCD RS pin to digital pin 7 * LCD Enable pin to digital pin 8 * LCD D4 pin to digital pin 9 * LCD D5 pin to digital pin 10 * LCD D6 pin to digital pin 11 * LCD D7 pin to digital pin 12 * LCD R/W pin to ground * LCD VSS pin to ground * LCD VCC pin to 5V */ #include "Arduino.h" #include "WiFi.h" #include "Audio.h" #include "SD.h" #include "FS.h" // Digital I/O used #define SD_CS 5 #define SPI_MOSI 23 #define SPI_MISO 19 #define SPI_SCK 18 #define I2S_DOUT 25 #define I2S_BCLK 27 #define I2S_LRC 26 #define RXD2 16 #define TXD2 17 // == Radio Station Switching logic == int currentPotVal = 0; int previousPotVal = 0; bool stationOne = true; bool stationTwo = true; bool stationThree = true; bool stationFour = true; //String incomingData; Audio audio; String ssid = "3c1e044268dc"; String password = "5SDMUKLI2V34ALB7"; void setup() { //WiFi Setup pinMode(SD_CS, OUTPUT); digitalWrite(SD_CS, HIGH); SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI); Serial.begin(115200); Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2); Serial.println("Serial Txd is on pin: "+String(TX)); Serial.println("Serial Rxd is on pin: "+String(RX)); ////////////////////////////////////////////////////// SD.begin(SD_CS); WiFi.disconnect(); WiFi.mode(WIFI_STA); WiFi.begin(ssid.c_str(), password.c_str()); while (WiFi.status() != WL_CONNECTED) delay(1500); audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT); audio.setVolume(21); // 0...21 // audio.connecttoFS(SD, "/320k_test.mp3"); // audio.connecttohost("http://www.wdr.de/wdrlive/media/einslive.m3u"); // audio.connecttohost("https://stream.srg-ssr.ch/rsp/aacp_48.asx"); // SWISS POP // audio.connecttohost("http://mp3.ffh.de/radioffh/hqlivestream.aac"); // 128k aac // Favorite 1 // audio.connecttohost("http://mp3.ffh.de/radioffh/hqlivestream.mp3"); // 128k mp3 // audio.connecttohost("https://github.com/schreibfaul1/ESP32-audioI2S/raw/master/additional_info/Testfiles/sample1.m4a"); // m4a // audio.connecttohost("https://github.com/schreibfaul1/ESP32-audioI2S/raw/master/additional_info/Testfiles/test_16bit_stereo.wav"); // wav // audio.connecttospeech("Wenn die Hunde schlafen, kann der Wolf gut Schafe stehlen.", "de"); audio.connecttohost("https://radio.streemlion.com/newwave"); //New Wave Station // audio.connecttohost("https://open.spotifycdn.com/cdn/build/web-player/vendor~web-player.2b906d15.js"); //Custom HTML delay(1200); } void loop() { while (Serial2.available()) { Serial.print(char(Serial2.read())); } while (Serial.available() > 0) { String message = Serial.readString(); if (message == "0250") { currentPotVal = 250; Serial.print("currentPotVal: "); Serial.println(currentPotVal); } if (message == "0500") { currentPotVal = 500; Serial.print("currentPotVal: "); Serial.println(currentPotVal); } if (message == "0750") { currentPotVal = 750; Serial.print("currentPotVal: "); Serial.println(currentPotVal); } if (message) == "1000") { currentPotVal = 1000; Serial.print("currentPotVal: "); Serial.println(currentPotVal); } } // == Station Switching == if (currentPotVal != previousPotVal) { if (currentPotVal == 250 && stationOne == true) { Serial.print("The Value is in between 0 and 250: "); Serial.println(currentPotVal); audio.connecttohost("https://radio.streemlion.com/newwave"); stationOne = false; stationTwo = true; stationThree = true; stationFour = true; delay(1200); } else if (currentPotVal == 500 && stationTwo == true) { Serial.print("The Value is in between 251 and 500: "); Serial.println(currentPotVal); audio.connecttohost("http://mp3.ffh.de/radioffh/hqlivestream.aac"); stationOne = true; stationTwo = false; stationThree = true; stationFour = true; delay(1200); } else if (currentPotVal == 750 && stationThree == true) { Serial.print("The Value is in between 501 and 750: "); Serial.println(currentPotVal); audio.connecttohost("http://mp3.ffh.de/radioffh/hqlivestream.mp3"); stationOne = true; stationTwo = true; stationThree = false; stationFour = true; delay(1200); } else if (currentPotVal == 1000 && stationFour == true) { Serial.print("The Value is in between 751 and 1023: "); Serial.println(currentPotVal); audio.connecttohost("https://github.com/schreibfaul1/ESP32-audioI2S/raw/master/additional_info/Testfiles/test_16bit_stereo.wav"); stationOne = true; stationTwo = true; stationThree = true; stationFour = false; delay(1200); } previousPotVal = currentPotVal; } audio.loop(); //Serial.print("======="); //Serial.println(currentPotVal); Serial.print("Current Pot Val: "); //Serial.println(previousPotVal); Serial.print("PREVIOUS POT VAL: "); } // Radio Station Serial Monitor Info void audio_info(const char *info){ //Serial.print("info "); Serial.println(info); } void audio_id3data(const char *info){ //id3 metadata Serial.print("id3data ");Serial.println(info); } void audio_eof_mp3(const char *info){ //end of file Serial.print("eof_mp3 ");Serial.println(info); } void audio_showstation(const char *info){ //PRINT STATION INFO Serial.print("station ");Serial.println(info); /*Serial2.print("Station: ");*/Serial2.println(info); } void audio_showstreamtitle(const char *info){ //PRINT SONG TITLE INFO Serial.print("streamtitle ");Serial.println(info); /*Serial2.print("Song Title: ");*/Serial2.println(info); } void audio_bitrate(const char *info){ Serial.print("bitrate ");Serial.println(info); } void audio_commercial(const char *info){ //duration in sec Serial.print("commercial ");Serial.println(info); } void audio_icyurl(const char *info){ //homepage Serial.print("icyurl ");Serial.println(info); } void audio_lasthost(const char *info){ //stream URL played Serial.print("lasthost ");Serial.println(info); } void audio_eof_speech(const char *info){ Serial.print("eof_speech ");Serial.println(info); }

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts