From 23a02da2019fdc03c66695506a3ae3308ac6c767 Mon Sep 17 00:00:00 2001 From: e2002 Date: Wed, 13 Apr 2022 13:01:02 +0300 Subject: [PATCH] v0.6.210 --- README.md | 25 +++++++++++++----------- exsamples/myoptions.h | 2 ++ images/board3.jpg | Bin 0 -> 44046 bytes yoRadio/config.cpp | 6 ++++++ yoRadio/display.h | 1 + yoRadio/options.h | 2 +- yoRadio/src/displays/displayGC9106.cpp | 2 +- yoRadio/src/displays/displaySSD1305.cpp | 2 +- yoRadio/src/displays/displayST7735.cpp | 5 +++++ 9 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 images/board3.jpg diff --git a/README.md b/README.md index 8a93396..ac43039 100644 --- a/README.md +++ b/README.md @@ -148,8 +148,8 @@ _\** GPIO 16 and 17 are used by PSRAM on the WROVER modules._ --- ## Hardware setup -Hardware is connected in the **[options.h](yoRadio/options.h)** file. \ -_so that the settings are not overwritten when updating git, you need to put the file **myoptions.h** ([exsample](exsamples/myoptions.h)) in the root of the project and make settings in it_ \ +Dont edit the options.h! \ +Hardware is adjustment in the **[myoptions.h](exsamples/myoptions.h)** file. \ **Important!** You must choose between I2S DAC and VS1053 by disabling the second module in the settings: @@ -163,13 +163,7 @@ You must choose between I2S DAC and VS1053 by disabling the second module in the ```` Define display model: ````c++ -/* DISPLAY MODEL - * 0 - DUMMY - * 1 - ST7735 - * 2 - SSD1306 - * 3 - NOKIA5110 - */ -#define DSP_MODEL 1 +#define DSP_MODEL DSP_ST7735 /* default - DSP_DUMMY */ ```` The ST7735 display submodel: ````c++ @@ -193,6 +187,9 @@ Rotation of the display: --- ## Quick start +
+ +0. **[Arduino core for the ESP32](https://github.com/espressif/arduino-esp32) v2.0.0 or higgest is required!** 1. In ArduinoIDE - upload sketch data via Tools→ESP32 Sketch Data Upload ([it's here](images/board2.jpg)) 2. Upload the sketch to the board ([example of the board settings](images/board.jpg)) 3. Connect to yoRadioAP acces point with password 12345987, go to http://192.168.4.1/ configure and wifi connections. \ @@ -281,16 +278,22 @@ Work is in progress... --- ## Version history +#### v0.6.210 +- fixed choppy playback on DSP_ST7735 displays used with VS1053 +- new option PL_WITH_NUMBERS (show the number of station in the playlist) +- fixed compiling error with DSP_DUMMY option +- correction of displays GC9106 and SSD1305 + #### v0.6.202 - fixed errors in the operation of the second encoder -- rewrote [plugin example](https://github.com/e2002/yoradio/blob/main/exsamples/displayhandlers.ino) +- rewrote [plugin example](exsamples/displayhandlers.ino) - fixed compilation errors on macOS #2 #### v0.6.200 - please backup your playlist and wifi settings before updating (export) - accelerated displays up to ~30fps (everything except LCD) - corrections/additions in the WEB interface (a [full update](#update) is required) -- rewrote [plugin example](https://github.com/e2002/yoradio/blob/main/exsamples/displayhandlers.ino) +- rewrote [plugin example](exsamples/displayhandlers.ino) - fixed compilation errors on macOS - changed the logic of the second encoder (switching to the volume control mode by double click) - optimization, bug fixes diff --git a/exsamples/myoptions.h b/exsamples/myoptions.h index 74ca34b..a655de2 100644 --- a/exsamples/myoptions.h +++ b/exsamples/myoptions.h @@ -102,6 +102,8 @@ The connection tables are located here https://github.com/e2002/yoradio#connecti //#define VOL_STEP 1 /* Volume control step */ //#define MUTE_PIN 255 /* MUTE Pin */ //#define MUTE_VAL HIGH /* Write this to MUTE_PIN when player is stopped */ +//#define PL_WITH_NUMBERS /* show the number of station in the playlist */ + /******************************************/ /* IR control */ diff --git a/images/board3.jpg b/images/board3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ffe09489d6864f5c116112dfb1fe42a0c6504db GIT binary patch literal 44046 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 literal 0 HcmV?d00001 diff --git a/yoRadio/config.cpp b/yoRadio/config.cpp index 674af08..4c99fc9 100644 --- a/yoRadio/config.cpp +++ b/yoRadio/config.cpp @@ -231,7 +231,13 @@ void Config::fillPlMenu(char plmenu[][40], int from, byte count) { } while (playlist.available()) { if (parseCSV(playlist.readStringUntil('\n').c_str(), sName, sUrl, sOvol)) { +#ifdef PL_WITH_NUMBERS + char buf[BUFLEN]; + sprintf(buf, "%d %s", (int)(from+c), sName); + strlcpy(plmenu[c], buf, 39); +#else strlcpy(plmenu[c], sName, 39); +#endif c++; } if (c >= count) break; diff --git a/yoRadio/display.h b/yoRadio/display.h index b712e76..26573bb 100644 --- a/yoRadio/display.h +++ b/yoRadio/display.h @@ -1,5 +1,6 @@ #ifndef display_h #define display_h +#include "options.h" #include "Arduino.h" #include diff --git a/yoRadio/options.h b/yoRadio/options.h index 2e2249e..052e0d7 100644 --- a/yoRadio/options.h +++ b/yoRadio/options.h @@ -1,7 +1,7 @@ #ifndef options_h #define options_h -#define VERSION "0.6.202" +#define VERSION "0.6.210" /******************************************************* DO NOT EDIT THIS FILE. diff --git a/yoRadio/src/displays/displayGC9106.cpp b/yoRadio/src/displays/displayGC9106.cpp index 024288b..be525f2 100644 --- a/yoRadio/src/displays/displayGC9106.cpp +++ b/yoRadio/src/displays/displayGC9106.cpp @@ -9,7 +9,7 @@ #include "../../network.h" #ifndef DEF_SPI_FREQ -#define DEF_SPI_FREQ 8000000UL /* set it to 0 for system default */ +#define DEF_SPI_FREQ 40000000 /* set it to 0 for system default */ #endif DspCore::DspCore(): Adafruit_GC9106Ex(TFT_CS, TFT_DC, TFT_RST) { diff --git a/yoRadio/src/displays/displaySSD1305.cpp b/yoRadio/src/displays/displaySSD1305.cpp index f8b7f6c..f1eb691 100644 --- a/yoRadio/src/displays/displaySSD1305.cpp +++ b/yoRadio/src/displays/displaySSD1305.cpp @@ -14,7 +14,7 @@ #define LOGO_HEIGHT 32 #ifndef DEF_SPI_FREQ -#define DEF_SPI_FREQ 7000000UL /* set it to 0 for system default */ +#define DEF_SPI_FREQ 8000000UL /* set it to 0 for system default */ #endif const char *dow[7] = {"вс","пн","вт","ср","чт","пт","сб"}; diff --git a/yoRadio/src/displays/displayST7735.cpp b/yoRadio/src/displays/displayST7735.cpp index ae8f87a..4f08ea5 100644 --- a/yoRadio/src/displays/displayST7735.cpp +++ b/yoRadio/src/displays/displayST7735.cpp @@ -12,6 +12,10 @@ #include "../../config.h" #include "../../network.h" +#ifndef DEF_SPI_FREQ +#define DEF_SPI_FREQ 40000000UL /* set it to 0 for system default */ +#endif + DspCore::DspCore(): Adafruit_ST7735(&SPI, TFT_CS, TFT_DC, TFT_RST) { } @@ -110,6 +114,7 @@ void DspCore::apScreen() { void DspCore::initD(uint16_t &screenwidth, uint16_t &screenheight) { initR(DTYPE); + if(DEF_SPI_FREQ > 0) setSPISpeed(DEF_SPI_FREQ); cp437(true); invertDisplay((DTYPE==INITR_MINI160x80)?TFT_INVERT:!TFT_INVERT); fillScreen(TFT_BG);