Re: VU meter + oled 0.96'
Я уже неделю борюсь с этим дисплеем,тоже не понимаю ,не поддается. Сейчас код общий скину.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Тестирование скетчей → VU meter + oled 0.96'
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Я уже неделю борюсь с этим дисплеем,тоже не понимаю ,не поддается. Сейчас код общий скину.
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#define CS 5
#define DC 2
#define MOSI 23
#define SCLK 18
#define RST 4
Adafruit_ST7789 tft = Adafruit_ST7789(CS, DC, RST);
#define GAIN 100 //1
#define STEP 3
#define LOW_SOUND 50 //1
#define MAX_SOUND 600 //260 // для первого дисплея
#define GAIN_TWO 1 // 100
#define STEP_TWO 3
#define LOW_SOUND_TWO 1 //50
#define MAX_SOUND_TWO 700 //600 // для второго дисплея
int strela=-45;
int hMeter = 65;
int vMeter = 85;
int rMeter = 80;
int ur,urr;
int strela_two=-45;
int hMeter_two = 65;
int vMeter_two = 85;
int rMeter_two = 80;
int ur_two,urr_two;
int a1_old, a2_old;
void setup(void) {
//SPI.begin();
//tft.setSPISpeed(80000000);
//Serial.begin(9600);
tft.init(240, 320);
//tft.init(240, 320,SPI_MODE3);
tft.setRotation(3);
tft.fillScreen(ST77XX_BLACK);
delay(100);
tft.setTextColor(ST77XX_GREEN);
tft.setTextSize(1);
//tft.setCursor(18, 82);
//tft.print("Hello world!");
pinMode(19, OUTPUT);
digitalWrite(19,0);
pinMode(32, INPUT);
}
void loop() {
tft.setTextSize(1);
strela = map(log(analogRead(32))*GAIN, LOW_SOUND,MAX_SOUND, -45,45);
strela = constrain(strela, -45, 45);
urr = strela;if(urr<ur){ur=ur-STEP;}else{ur = strela;}
strela_two = map(analogRead(33)*GAIN_TWO, LOW_SOUND_TWO,MAX_SOUND_TWO, -45,45);
strela_two = constrain(strela_two, -45, 45);
urr_two = strela_two;if(urr_two<ur_two){ur_two=ur_two-STEP_TWO;}else{ur_two = strela_two;}
// adc0 = analogRead(33);
// Serial.print("Voltage: ");
// Serial.println(adc0);//Serial.println(" ");
/////////////////////////////////// PRINT /////////////////////////////////////////
//tft.fillScreen(ST77XX_BLACK);
//tft.drawLine(28, 102, 84, 20, ST77XX_BLUE);// line 1
//tft.drawLine(106, 102, 124, 20, ST77XX_BLUE);tft.drawLine(106, 101, 124, 19, ST77XX_BLUE);// line 2
//tft.drawLine(21, 105, 84, 23, ST77XX_BLUE);// line3
/*display.drawLine(10, 20, 84, 20, 1);// line 1
display.drawLine(88, 20, 124, 20, 1);display.drawLine(88, 19, 124, 19, 1);// line 2
display.drawLine(3, 23, 84, 23, 1);// line3*/
byte b1_2[10]{95,108,124,10,33,60,84,50,68,77};
byte c1_2[10]{15,15,15,15,15,15,15,17,17,17};
byte b2_2[10]{95,108,124,10,33,60,84,50,68,77};
byte c2_2[10]{15,15,15,15,15,15,15,17,17,17};
//for(int i=0;i<10;i++){tft.drawLine(b1_2[i]+18, 102, b1_2[i], c1_2[i], ST77XX_BLUE);//display.drawLine(b2_2[i], 20, b2_2[i], c2_2[i], 1);}
byte b3[5]{3,25,48,67,84};
byte b4[5]{3,25,48,67,84};
//for(int i=0;i<5;i++){tft.drawLine(b3[i]+18, 105, b3[i], 27, ST77XX_BLUE);//display.drawLine(b4[i], 23, b4[i], 27, 1);}
tft.setCursor(23, 87);
tft.print("20");
tft.setCursor(46, 87);
tft.print("10");
tft.setCursor(76, 87);
tft.print("3");
tft.setCursor(100, 87);
tft.print("0");
tft.setCursor(111, 87);
tft.print("1");
/*display.setCursor(5, 5);
display.print("20");
display.setCursor(28, 5);
display.print("10");
display.setCursor(58, 5);
display.print("3");
display.setCursor(82, 5);
display.print("0");
display.setCursor(93, 5);
display.print("1");*/
tft.setCursor(19, 112);
tft.print("0");
tft.setCursor(38, 112);
tft.print("25");
/*display.setCursor(1, 30);
display.print("0");
display.setCursor(20, 30);
display.print("25");*/
tft.setCursor(61, 112);
tft.print("50");
// display.setCursor(43, 30);
// display.print("50");
tft.setCursor(79, 112);
tft.print("75");
// display.setCursor(61, 30);
// display.print("75");
tft.setCursor(94, 112);
tft.print("100");
// display.setCursor(76, 30);
// display.print("100");
tft.setCursor(124, 87);
tft.print("2");
// display.setCursor(106, 5);
// display.print("2");
tft.setCursor(140, 87);
tft.print("3");
// display.setCursor(122, 5);
// display.print("3");
tft.setCursor(21, 132);tft.print("-");tft.setCursor(137, 132);tft.print("+");
tft.setCursor(58, 132);tft.print("VU meter");
// display.setCursor(3, 50);display.print("-");display.setCursor(119, 50);display.print("+");
// display.setCursor(40, 50);display.print("VU meter");
int a1 = (hMeter + (sin(ur / 57.296) * rMeter)); // meter needle horizontal coordinate
int a2 = (vMeter - (cos(ur / 57.296) * rMeter)); // meter needle vertical coordinate
// Serial.println(a1);
// Serial.println(a2);
// int a3 = (hMeter_two + (sin(ur_two / 57.296) * rMeter_two)); // meter needle horizontal coordinate
// int a4 = (vMeter_two - (cos(ur_two / 57.296) * rMeter_two)); // meter needle vertical coordinate
if(a1<8){a1=8;}
if(a2<28){a2=28;}
if(a1 !=8 && a2 !=28){
tft.drawLine(a1_old+18, a2_old+82, hMeter+18, vMeter+82, ST77XX_BLACK);}
tft.drawLine(a1+18, a2+82, hMeter+18, vMeter+82, ST77XX_BLUE);
//display.drawLine(a3, a4, hMeter_two, vMeter_two, 1);
a1_old = a1;
a2_old = a2;
// if (ur != strela_ups) {
// tft.drawLine(a1+18, a2+82, hMeter+18, vMeter+82, ST77XX_BLACK);
//tft.drawLine(a1+19, a2+83, hMeter+15, vMeter+85, ST77XX_BLACK);
// strela_ups = ur;}
}так пробовали?
if(a1<8){a1=8;}
if(a2<28){a2=28;}
if(a1 !=8 && a2 !=28){
tft.drawLine(a1_old+18, a2_old+82, hMeter+18, vMeter+82, ST77XX_BLACK);}
if(a1 >8 && a2 >28){
tft.drawLine(8+18, 28+82, hMeter+18, vMeter+82, ST77XX_BLACK);}
tft.drawLine(a1+18, a2+82, hMeter+18, vMeter+82, ST77XX_BLUE);
a1_old = a1;
a2_old = a2;
так пробовали?
if(a1<8){a1=8;}
if(a2<28){a2=28;}if(a1 !=8 && a2 !=28){
tft.drawLine(a1_old+18, a2_old+82, hMeter+18, vMeter+82, ST77XX_BLACK);}
if(a1 >8 && a2 >28){
tft.drawLine(8+18, 28+82, hMeter+18, vMeter+82, ST77XX_BLACK);}tft.drawLine(a1+18, a2+82, hMeter+18, vMeter+82, ST77XX_BLUE);
a1_old = a1;
a2_old = a2;
Да,сейчас проверил. Тоже самое,срезанные стрелки сверху и не затирает.(как на фото ранее)
Чтобы отправить ответ, вы должны войти или зарегистрироваться
forum.rcl-radio.ru → Тестирование скетчей → VU meter + oled 0.96'
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|
|