26

Re: VU meter LGT8F328 OLED 0,91'

И ещё один вопрос а можно ли подключить цветной дисплей и сделать шкалу разного цвета, например перегрузка красного цвета. Ссылка на дисплей - https://aliexpress.ru/item/100500218258 … 8989037556

27

Re: VU meter LGT8F328 OLED 0,91'

Такой дисплей у меня уже есть.http://forum.rcl-radio.ru/uploads/images/2024/02/adba1ec2cdd385dd18d60c170374348d.png

28

Re: VU meter LGT8F328 OLED 0,91'

Вечер добрый! Подскажите пожалуйста что нужно добавить в скетче чтобы правильно отображался уровень сигнала.

#include <Wire.h>
 //#include <SPI.h>
 #include <Adafruit_GFX.h>
 #include <Adafruit_ST7735.h>
  Adafruit_ST7735 tft1=Adafruit_ST7735(10,9,8); //(5,21,22)-ESP32
  // SDA  D11 aka VSPI MOSI
  // SCLK D13 aka SCK aka VSPI SCK
  // D/C  D9 aka A0 (also I2C SDA)
  // RST  D8 aka RESET (also I2C SCL)
  // CS   D10  aka chip select
  // LED  3.3V
  // VCC  5V
  // GND - GND
  int an_izm_r,an_izm_l;
  int ur_l,urr_l,ur_r,urr_r;

 void setup() {
 Serial.begin(9600);
 Wire.begin();Wire.setClock(800000L);
 delay(500);
 tft1.initR(INITR_MINI160x80);
 tft1.setRotation(3);
 tft1.fillScreen(ST7735_WHITE);
 //analogReadResolution(8);
 //analogReference(INTERNAL1V024);
 pinMode(A0,INPUT);
 pinMode(A1,INPUT);
}

 void loop() {
 an_izm_r = analogRead(A0);
 an_izm_l = analogRead(A1);
   urr_l = an_izm_l;
   urr_r = an_izm_r;
  if(urr_l<ur_l){ur_l=ur_l-4;}else{ur_l = an_izm_l;}
  if(urr_r<ur_r){ur_r=ur_r-4;}else{ur_r = an_izm_r;}
 testfillrect();
}

  void testfillrect(void) {
  //tft1.clrScr();
  for(int i=0;i<=ur_l;i+=4){
  tft1.fillRect(i, 10, 1, 16, ST7735_MAGENTA);
  //delay(100);
}
  tft1.setTextSize(1); 
  tft1.setTextColor(ST7735_BLACK, ST7735_WHITE);
  //tft1.drawLine(0, 9, 120, 9, ST7735_MAGENTA);
  tft1.setCursor(0,40);   
  tft1.println("-20  -10  -3   -1");
  tft1.drawLine(120, 35, 155, 35,ST7735_YELLOW);
  tft1.drawLine(120, 52, 155, 52,ST7735_YELLOW);
  tft1.drawRoundRect(0, 35, 120, 17,0,ST7735_MAGENTA);
  tft1.setCursor(120,40);   
  tft1.setTextColor(ST7735_YELLOW, ST7735_WHITE);
  tft1.println(" 0  +3");
  //tft1.drawLine(0, 60, 125, 60, ST7735_RED);
  for(int i=0;i<=ur_r;i+=4){
  tft1.fillRect(i, 60, 1, 16, ST7735_MAGENTA);
  //delay(10);
}
  //tft1.fillScreen(ST7735_WHITE);
}
 

29

Re: VU meter LGT8F328 OLED 0,91'

Не хватает чувствительности входа?

30

Re: VU meter LGT8F328 OLED 0,91'

Нет после отключения сигнала или убавления на индикаторе остаётся тот уровень на котором был отключен сигнал. Одним словом полоски не затираются.

31

Re: VU meter LGT8F328 OLED 0,91'

Это такой дисплей, обновление экрана нет как в OLED, если делать clear то быстродействия не хватит, надо затирать черным отработанные зоны дисплея.

32

Re: VU meter LGT8F328 OLED 0,91'

А если на другом дисплее 1,8 дюйма.

33

Re: VU meter LGT8F328 OLED 0,91'

Все tft такие, только монохром будет работать быстро и просто

34

Re: VU meter LGT8F328 OLED 0,91'

Или на двухцветном 0'96 ssd1306, но полоски вертикально.

35

Re: VU meter LGT8F328 OLED 0,91'

Собрал схему и такое ощущение что индикация на дисплее не использует всю поверхность дисплея, а как бы сдвинуто вверх. Можно ли растянуть на весь дисплей?

36

Re: VU meter LGT8F328 OLED 0,91'

здравствуйте!
спасибо Вам за проект! очень понравилось.
но у меня тоже такая проблема — изображение сжато вверх. можно как-то исправить?

37

Re: VU meter LGT8F328 OLED 0,91'

а ещё можете помочь — как вывести изображение слова MUTE при подаче лог. уровня на какой-нибудь пин?

38

Re: VU meter LGT8F328 OLED 0,91'

Добрый вечер. Можно ли подправить скетч под экран на контроллере SSD1305? Я делал на контроллере из статьи, всё отлично работает, но размер дисплея маловат. На али можно взять размером побольше, но контроллер у него SSD1305.

39

Re: VU meter LGT8F328 OLED 0,91'

Решил сам попробовать подправить скетч под контроллер SSD1305 и выяснилось что в его библиотеке нет команды по аналогии с SSD1306 - SSD1306_INVERSE. Как с помощью SSD1305 сделать инверсию? Как в этой строке например:

display.fillRect(i, 21, 2, 8, SSD1306_INVERSE)

40 (2025-11-15 19:29:33 отредактировано ivan_79)

Re: VU meter LGT8F328 OLED 0,91'

В итоге запустил на этом индикаторе: https://aliexpress.ru/item/100500740328 … 1757869836 Простой заменой он работает не так как нужно, пришлось сектч поковырять, и применить одну хитрость, ( разрешение экрана в скетче выставлено правильно ).
http://forum.rcl-radio.ru/uploads/images/2025/11/2c7a62d3b645cb38e55e496a12403c01.jpg

#include <Wire.h>
#include <Adafruit_GFX.h>     // https://github.com/adafruit/Adafruit-GFX-Library
#include <Adafruit_SSD1306.h> // https://github.com/adafruit/Adafruit_SSD1306
                              // https://github.com/adafruit/Adafruit_BusIO.git
 Adafruit_SSD1306 display(128, 64, &Wire);

 int an_izm_r,an_izm_l;
 int ur_l,urr_l,ur_r,urr_r;
 int u_l0[20],u_r0[20];
 int ur,ul,urr,ull,urrr,ulll;
 int x,i1,u_maxr,u_maxl;

void setup() {
 Serial.begin(9600);
 Wire.begin();Wire.setClock(800000L);
 delay(500);
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
 analogReadResolution(8);
 analogReference(INTERNAL1V024);
 pinMode(A0,INPUT);
 pinMode(A1,INPUT);
}

void loop() {
 an_izm_r = analogRead(A0);
 an_izm_l = analogRead(A1);
   urr_l = an_izm_l;
   urr_r = an_izm_r;
  if(urr_l<ur_l){ur_l=ur_l-2;}else{ur_l = an_izm_l;}
  if(urr_r<ur_r){ur_r=ur_r-2;}else{ur_r = an_izm_r;}

  if(urr_l>124){urr_l=124;}
  if(urr_r>124){urr_r=124;}

  if(ur_l>124){ur_l=124;}
  if(ur_r>124){ur_r=124;}

  i1++;if(i1<15){u_l0[i1]=abs(urr_l);u_r0[i1]=abs(urr_r);}else{i1=0;}
  if(i1==14){u_maxr=0;u_maxl=0;
    for(x=1;x<=15;x++){
      u_maxl=max(u_maxl,u_l0[x]);
      u_maxr=max(u_maxr,u_r0[x]);}}
 
  if(u_maxl<ulll){ulll=ulll-4;}else{ulll = u_maxl;}
  if(u_maxr<urrr){urrr=urrr-4;}else{urrr = u_maxr;}
 
  if(u_maxl<=urr_l){u_maxl=urr_l+4;} 
  if(u_maxr<=urr_r){u_maxr=urr_r+4;} 
  
 testfillrect();
}


void testfillrect(void) {
  display.clearDisplay();
if(ulll>4) { display.fillRect(ulll, 33, 3, 8, SSD1306_INVERSE);}
for(int i=0;i<=ur_l;i+=4){
  display.fillRect(i, 33, 3, 8, SSD1306_INVERSE);
}
  display.setTextSize(1); 
  display.setTextColor(SSD1306_WHITE);
  display.drawLine(0, 42, 125, 42, SSD1306_WHITE);
  display.setCursor(0,44);   
  display.println(" -20  -10  -3");
  display.drawLine(90, 43, 125, 43, SSD1306_WHITE);
  display.drawLine(0, 42, 0, 52, SSD1306_WHITE);
  display.setCursor(90,44);   
  display.setTextColor(SSD1306_BLACK,SSD1306_WHITE);
  display.println(" 0  +3");
  display.drawLine(126, 42, 126, 52, SSD1306_WHITE);
  display.drawLine(0, 52, 125, 52, SSD1306_WHITE);
 if(urrr>4) {display.fillRect(urrr, 54, 3, 8, SSD1306_INVERSE);}
for(int i=0;i<=ur_r;i+=4){
  display.fillRect(i, 54, 3, 8, SSD1306_INVERSE);
} 
  display.display();
}