This commit is contained in:
e2002
2022-06-01 18:10:23 +03:00
parent f084e56795
commit bcdd181d18
8 changed files with 115 additions and 31 deletions

View File

@@ -18,17 +18,17 @@
#include "src/displays/displayST7789.h"
#elif DSP_MODEL==DSP_SH1106
#include "src/displays/displaySH1106.h"
#elif DSP_MODEL==DSP_1602I2C
#elif DSP_MODEL==DSP_1602I2C || DSP_MODEL==DSP_2004I2C
#include "src/displays/displayLC1602.h"
#elif DSP_MODEL==DSP_SSD1327
#include "src/displays/displaySSD1327.h"
#elif DSP_MODEL==DSP_ILI9341
#include "src/displays/displayILI9341.h"
#elif DSP_MODEL==DSP_SSD1305
#elif DSP_MODEL==DSP_SSD1305 || DSP_MODEL==DSP_SSD1305I2C
#include "src/displays/displaySSD1305.h"
#elif DSP_MODEL==DSP_SH1107
#include "src/displays/displaySH1106.h"
#elif DSP_MODEL==DSP_1602
#elif DSP_MODEL==DSP_1602 || DSP_MODEL==DSP_2004
#include "src/displays/displayLC1602.h"
#elif DSP_MODEL==DSP_GC9106
#include "src/displays/displayGC9106.h"

View File

@@ -1,7 +1,7 @@
#ifndef options_h
#define options_h
#define VERSION "0.6.263"
#define VERSION "0.6.278"
/*******************************************************
DO NOT EDIT THIS FILE.
@@ -33,6 +33,9 @@ The connection tables are located here https://github.com/e2002/yoradio#connecti
#define DSP_SH1107 11 // https://aliexpress.com/item/4000551696674.html
#define DSP_1602 12 // https://aliexpress.com/item/32685016568.html
#define DSP_GC9106 13 // 0.96' 160x80 (looks like ST7735S, but it's not him) https://aliexpress.com/item/32947890530.html
#define DSP_2004I2C 14 // https://aliexpress.com/item/32783128355.html
#define DSP_2004 15 // https://aliexpress.com/item/32783128355.html
#define DSP_SSD1305I2C 16 // SSD1305 and SSD1309 128x64 I2C https://aliexpress.com/item/32950307344.html
#define DSP_CUSTOM 101 // your display
#ifndef DSP_MODEL

View File

@@ -1,7 +1,7 @@
// Based on the work by DFRobot
// Based on the LiquidCrystal_I2C library https://github.com/johnrickman/LiquidCrystal_I2C
#include "../../options.h"
#if DSP_MODEL==DSP_1602I2C
#if DSP_MODEL==DSP_1602I2C || DSP_MODEL==DSP_2004I2C
#include "LiquidCrystalI2CEx.h"
#include <inttypes.h>

View File

@@ -1,6 +1,6 @@
#include "../../options.h"
#if DSP_MODEL==DSP_1602I2C || DSP_MODEL==DSP_1602
#if DSP_MODEL==DSP_1602I2C || DSP_MODEL==DSP_1602 || DSP_MODEL==DSP_2004 || DSP_MODEL==DSP_2004I2C
#include "displayLC1602.h"
#include "../../player.h"
@@ -13,31 +13,43 @@
const byte controlspaces[] = { CLOCK_SPACE, VOL_SPACE };
#ifdef LCD_I2C
DspCore::DspCore(): LiquidCrystal_I2C(SCREEN_ADDRESS, 16, 2, I2C_SDA, I2C_SCL) {
DspCore::DspCore(): DSP_INIT {}
}
#else
DspCore::DspCore(): LiquidCrystal(LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7) {
}
#endif
void DspCore::apScreen() {
setCursor(0,0);
print("YORADIO AP MODE");
setCursor(0,1);
print(WiFi.softAPIP().toString().c_str());
#ifdef LCD_2004
setCursor(0, 2);
print("AP NAME: ");
print(apSsid);
setCursor(0, 3);
print("PASSWORD: ");
print(apPassword);
#endif
}
void DspCore::initD(uint16_t &screenwidth, uint16_t &screenheight) {
#ifdef LCD_I2C
init();
backlight();
#else
#ifdef LCD_2004
begin(20, 4);
#else
begin(16, 2);
#endif
#endif
#ifdef LCD_2004
screenwidth = 20;
screenheight = 4;
#else
screenwidth = 16;
screenheight = 2;
#endif
swidth = screenwidth;
sheight = screenheight;
fillSpaces = true;
@@ -52,11 +64,27 @@ void DspCore::drawPlaylist(uint16_t currentItem, char* currentItemText) {
for (byte i = 0; i < PLMITEMS; i++) {
plMenu[i][0] = '\0';
}
#ifdef LCD_2004
config.fillPlMenu(plMenu, currentItem-1, PLMITEMS);
for (byte i = 0; i < PLMITEMS; i++) {
if (i == 1) {
strlcpy(currentItemText, ">", 2);
//strlcpy(currentItemText, plMenu[i], PLMITEMLENGHT - 1);
strlcat(currentItemText, plMenu[i], PLMITEMLENGHT - 2);
} else {
char tmp[swidth+1] = {0};
strlcpy(tmp, utf8Rus(plMenu[i], true), swidth);
clearScroll(1 + i, 0, 0);
setCursor(1, 1 + i);
print(tmp);
}
}
#else
config.fillPlMenu(plMenu, currentItem, PLMITEMS);
for (byte i = 0; i < PLMITEMS; i++) {
strlcpy(currentItemText, plMenu[i], PLMITEMLENGHT - 1);
}
#endif
}
void DspCore::clearDsp() {
@@ -113,8 +141,13 @@ void DspCore::drawVolumeBar(bool withNumber) {
centerText(" ", 1, 0, 0);
centerText(volstr, 1, TFT_LOGO, TFT_BG);
}else{
#ifdef LCD_2004
rightText(" ", 3, 0, 0);
rightText(volstr, 3, TFT_LOGO, TFT_BG);
#else
rightText(" ", 1, 0, 0);
rightText(volstr, 1, TFT_LOGO, TFT_BG);
#endif
}
}
@@ -134,7 +167,10 @@ void DspCore::rssi(const char* str) {
}
void DspCore::ip(const char* str) {
#ifdef LCD_2004
setCursor(0, 3);
print(str);
#endif
}
void DspCore::set_TextSize(uint8_t s) {

View File

@@ -2,31 +2,58 @@
#define displayLC1602_h
#include "Arduino.h"
#if DSP_MODEL==DSP_1602I2C
#if DSP_MODEL==DSP_2004 || DSP_MODEL==DSP_2004I2C
#define LCD_2004
#endif
#if DSP_MODEL==DSP_1602I2C || DSP_MODEL==DSP_2004I2C
#define LCD_I2C
#include "../LiquidCrystalI2C/LiquidCrystalI2CEx.h"
#else
#include <LiquidCrystal.h>
#endif
#ifdef LCD_I2C
#ifdef LCD_2004
#define DSP_INIT LiquidCrystal_I2C(SCREEN_ADDRESS, 20, 4, I2C_SDA, I2C_SCL)
#else
#define DSP_INIT LiquidCrystal_I2C(SCREEN_ADDRESS, 16, 2, I2C_SDA, I2C_SCL)
#endif
#else
#define DSP_INIT LiquidCrystal(LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7)
#endif
#define TFT_LINEHGHT 1
#define TFT_FRAMEWDT 0
#define PLMITEMS 1
#define PLMITEMLENGHT 40
#define PLMITEMHEIGHT 9
#define TITLE_TOP1 1
#ifdef LCD_2004
#define PLMITEMS 3
#define TITLE_TOP2 2
#define PL_TOP 2
#define BOOTSTR_TOP2 1
#define BOOTSTR_TOP1 2
#else
#define PLMITEMS 1
#define TITLE_SIZE2 0
#define IP_INST_VOL
#define PL_TOP 1
#define BOOTSTR_TOP2 0
#define BOOTSTR_TOP1 1
#endif
#define PLCURRENT_SIZE 1
#define SCROLLDELTA 1
#define SCROLLTIME 250
#define BOOTSTR_TOP2 0
#define BOOTSTR_TOP1 1
#define STARTTIME_PL 2000
#define IP_INST_VOL
#define STARTTIME_PL 2000
#ifdef LCD_I2C
class DspCore: public LiquidCrystal_I2C {
@@ -75,7 +102,11 @@ extern DspCore dsp;
* TFT COLORS
*/
#define CLOCK_SPACE 6
#ifdef LCD_2004
#define VOL_SPACE 0
#else
#define VOL_SPACE 3
#endif
#define SILVER 0
#define TFT_BG 0
#define TFT_FG CLOCK_SPACE

View File

@@ -143,10 +143,7 @@ void DspCore::initD(uint16_t &screenwidth, uint16_t &screenheight) {
cp437(true);
fillScreen(TFT_BG);
byte tftRotate = TFT_ROTATE;
#if DSP_MODEL==DSP_SH1106
if(tftRotate>2) tftRotate=2;
if(tftRotate==1) tftRotate=0;
#else
#if DSP_MODEL==DSP_SH1107
if(tftRotate>=2) tftRotate=3;
if(tftRotate==0) tftRotate=1;
#endif

View File

@@ -1,5 +1,5 @@
#include "../../options.h"
#if DSP_MODEL==DSP_SSD1305
#if DSP_MODEL==DSP_SSD1305 || DSP_MODEL==DSP_SSD1305I2C
#include "displaySSD1305.h"
#include "../../player.h"
@@ -31,10 +31,17 @@ const unsigned char logo [] PROGMEM=
0x1f, 0xff, 0xe0, 0x0f, 0xff, 0xe0, 0x03, 0xff, 0xc0, 0x00, 0xfe, 0x00
};
#if DSP_MODEL==DSP_SSD1305
DspCore::DspCore(): Adafruit_SSD1305(128, 64, &SPI, TFT_DC, TFT_RST, TFT_CS, DEF_SPI_FREQ) {
}
#else
#include <Wire.h>
TwoWire I2CSSD1305 = TwoWire(0);
DspCore::DspCore(): Adafruit_SSD1305(128, 64, &I2CSSD1305, -1){
}
#endif
char* DspCore::utf8Rus(const char* str, bool uppercase) {
int index = 0;
static char strn[BUFLEN];
@@ -128,8 +135,11 @@ void DspCore::apScreen() {
}
void DspCore::initD(uint16_t &screenwidth, uint16_t &screenheight) {
#if DSP_MODEL==DSP_SSD1305I2C
I2CSSD1305.begin(I2C_SDA, I2C_SCL);
#endif
if (!begin(SCREEN_ADDRESS)) {
Serial.println(F("SH1106 allocation failed"));
Serial.println(F("SSD1305 allocation failed"));
for (;;); // Don't proceed, loop forever
}
cp437(true);