ESP32Radio mit Spectrum Analyzer
ein holländischer Entwickler hat die Edzelf Software um nützliche features erweitert. Herausgekommen ist das Edison-Radio.
es bietet u.a.:
- einen Spectrum Analyzer
- einen Stationsfinder im webinterface
unabhängig von den hinterlegten presets können die gefundenen Sender auf bis zu 8 "precon" Plätze gelegt werden.
- mp3-Titel können von SD-Card oder USB-stick abgespielt werden
- mit LED-stripes kann ein VU-Meter dargestellt werden
- 4 weitere WS2812b-LED's imitieren das Leuchten einer Röhre
- ein eigenes PCB ist bei tindie verfügbar
Zitat von Rene666:
Nachdem ich mit der Edzelf Software gut zurecht kam, mich aber der Spectrum Analyzer interessierte, habe ich nun das Edison Radio geladen. Leider habe ich momentan nur ein 1,8" TFT und damit mein Glück versucht. Nach dem ich mich durch den Code gewühlt hatte, kam etwas brauchbares raus. Ich brauchte nur an 2 Stellen etwas anpassen.
In der bluetft.h
scrseg_struct tftdata[TFTSECS] = // Screen divided in 3 segments + 1 overlay
{ // One text line is 8 pixels
{ false, WHITE, 0, 8, "" }, // 1 top line
{ false, CYAN, 20, 48, "" }, // 6 lines in the middle
{ false, YELLOW, 75, 32, "" }, // 4 lines at the bottom
{ false, GREEN, 75, 32, "" } // 4 lines at the bottom for rotary encoder
} ;
#define dsp_setRotation() tft->setRotation ( 4 ) // Use landscape format (3 for upside down) Original (1)
#define dsp_getwidth() 128 // Adjust to your display
#define dsp_getheight() 160 // Get height of screen
In der ESP_Radio.ino
const uint8_t Spectrum_y0 = 110; //original 150
const uint8_t Spectrum_hy = 45; //original 70
Zitat-Ende
René hat mich durch seinen post darauf gebracht dass auch bluetft-Displaytypen mit Edison funktionieren. Es muss lediglich eine andere Löschroutine für den Bildschirm benutzt werden ( dsp_erase() statt dsp_white() ). Der Compiler macht darauf aufmerksam.
Je nach Auflösung und Ausrichtung muss mittels der von René angegebenen
Angriffspunkte der Analyzer positioniert werden. Er lag bei dem
folgenden Beispiel ausserhalb des sichtbaren Bereiches. Ebenso müssen
auch die anderen Elemente passend postitioniert werden.
Beispiel:
ein 1,8" TFT mit 128*160px Auflösung. Mit dem ILI9431 Treiber sieht die Darstellung chaotisch aus.
kein Wunder, für den Chipsatz ST7735 ist ja auch der bluetft-Treiber zuständig.
der Analyzer ist erst mal nicht sichbar. Er muss zuerst in den sichtbaren Bereich verschoben werden.
in der ESP_Radio.ino:
const uint8_t Spectrum_y0 = 90; //original 150
const uint8_t Spectrum_hy = 45; //original 70
// Position (column) of time in topline relative to end
#define TIMEPOS -48 //-52
Positionierung der Sektionen:// Data to display. There are TFTSECS sections
#define TFTSECS 4
scrseg_struct tftdata[TFTSECS] = // Screen divided in 3 segments + 1 overlay
{ // One text line is 8 pixels
{ false, WHITE, 0, 24, "" }, // 1 top line
{ false, CYAN, 18, 24, "" }, // 8 lines in the middle
{ false, YELLOW, 48, 48, "" }, // 4 lines at the bottom
{ false, GREEN, 48, 48, "" } // 4 lines at the bottom for rotary encoder
} ;
voll Kompromisse, die Gesamtfläche ist halt klein, aber doch optimal aufgeteilt. Sogar den Lautstärkebalken am unteren Rand kann man zwischen den Analyzer-Balken erahnen.
Keine Kommentare:
Kommentar veröffentlichen