176

Re: управление драйвером жк lc75823

Вот так будет правильней

 int cpec = map(analogRead(A0), 0,13, 0,1024);
 for(int i = 0; i<=13;i++){
  vu[i]= (cpec<<i)&1;
}

177

Re: управление драйвером жк lc75823

Написал все буквы, как допустим сделать анимацию движущегося текста "HELLO" с права на лево ?

http://forum.rcl-radio.ru/uploads/images/2024/03/f0ac913a29ed7b2e379a4e5ce67f3b0c.png

178 (2024-03-25 15:11:15 отредактировано vladbuharkin20)

Re: управление драйвером жк lc75823

и еще проблема с анализатором спектра, хоть что на него не подавай на нем цифра 14, и на дисплее ничего не происходит  http://forum.rcl-radio.ru/uploads/images/2024/03/0b02e50a4dc857c771682b10cbc0a40c.png

179

Re: управление драйвером жк lc75823

Лучше использовать одну функцию для вывода цифр и букв, цифры от 0 до 9 а дальше буквы 10 11 12 13 и тд. Так будет удобней

  h1 = segm(1); h2 = segm(2); h3 = segm(3);h4 = segm(4);h5 = segm(5);h6 = segm(6);h7 = segm(7);h8 = segm(8);
  print_out();
  delay(300);
h1 = segm(1); h2 = segm(2); h3 = segm(3);h4 = segm(4);h5 = segm(5);h6 = segm(6);h7 = segm(7);h8 = segm(8);
  print_out();
  delay(300);
h1 = segm(1); h2 = segm(2); h3 = segm(3);h4 = segm(4);h5 = segm(5);h6 = segm(6);h7 = segm(7);h8 = segm(8);
  print_out();
  delay(300);

Просто через delay меняете значение переменных и все, для движущего текста.

180

Re: управление драйвером жк lc75823

я понимаю как это сделать, но очень большой получится код. Думал у вас получится как нибудь покомпактней

181

Re: управление драйвером жк lc75823

int cpec = map(analogRead(A0), 0,1023, 0, 14);
 for(int i = 0; i<=13;i++){
  vu[i]= (cpec<<i)&1;
}

182

Re: управление драйвером жк lc75823

я понимаю как это сделать, но очень большой получится код. Думал у вас получится как нибудь покомпактней

Можно через цикл , но там надо создавать массив

int arr[12]={12,13,14,10,10,10,10};

for (int i=0;i<=12;i++){
    h1 = segm(arr[i]); h2 = segm(i+1); h3 = segm(i+2);h4 = segm(i+3);h5 = segm(i+4);h6 = segm(i+5);h7 = segm(i+6);h8 = segm(i+7);
  print_out();
  delay(300);
}

Это работать не будет правильно, просто набросок, как пример.
Проще сделать длинно.

183

Re: управление драйвером жк lc75823

Все так же, в мониторе порта 14, на дисплее тишина

184

Re: управление драйвером жк lc75823

и анимацию движения текста также у меня не получается сделать. Помогите с ней пожалуйста

185

Re: управление драйвером жк lc75823

Если Вы не удаляли все Serial.print из функции write_byte и открыли монитор порта, то работать ни его не будет. Надо удалить все Serial

И посмотреть то выдает переменная vu

int cpec = map(analogRead(A0), 0,1023, 0, 14);
 for(int i = 0; i<=13;i++){
  vu[i]= (cpec>>i)&1;
 Serial.print(vu[i]);
}
Serial.println();

186

Re: управление драйвером жк lc75823

ещё нужда функция для очистки h1,h2,h3,h4,h5,h6,h7,h8 от текста, одной командой

187

Re: управление драйвером жк lc75823

все serial.print я удалил.

188

Re: управление драйвером жк lc75823

void clear_lcd(){
    h1 = segm(11); h2 = segm(11); h3 = segm(11);h4 = segm(11);h5 = segm(11);h6 = segm(11);h7 = segm(11);h8 = segm(11);
   print_out();
}

189

Re: управление драйвером жк lc75823

Посмотрите монитор порта

int cpec = map(analogRead(A0), 0,1023, 0, 14);
 for(int i = 0; i<=13;i++){
  vu[i]= (cpec>>i)&1;
 Serial.print(vu[i]);
}
Serial.println();

190 (2024-03-25 15:35:16 отредактировано vladbuharkin20)

Re: управление драйвером жк lc75823

все равно не работает, горит только 2  значка и всё

191

Re: управление драйвером жк lc75823

int cpec = map(analogRead(A0), 0,1023, 0, 13);

Serial.println(cpec);

Что в мониторе порта, должны меняться значения от 0 до 13

192

Re: управление драйвером жк lc75823

Без подтяжки к земле нечего не происходит, цифры медленно опускаются от 3 до 1 и все, реакции не на что нету. А если подтянуть к земле то в мониторе порта цифра 13

193

Re: управление драйвером жк lc75823

Должно быть наоборот при GND 0 при 5В 13

194

Re: управление драйвером жк lc75823

поменял порт на A1 все заработала, что то с портом A0 у меня

195

Re: управление драйвером жк lc75823

int cpec = map(analogRead(A0), 0,1023, 0, 13);

Serial.println(cpec);

switch(cpec){
case 0: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=0;vu[9]=0;vu[10]=0;vu[11]=0;vu[12]=0;vu[13]=0;break;
case 1: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=0;vu[9]=0;vu[10]=0;vu[11]=0;vu[12]=0;vu[13]=1;break;
case 2: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=0;vu[9]=0;vu[10]=0;vu[11]=0;vu[12]=1;vu[13]=1;break;
case 3: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=0;vu[9]=0;vu[10]=0;vu[11]=1;vu[12]=1;vu[13]=1;break;
и так далее до 13
}

можно попробовать так

switch(cpec){
case 0: vu={0,0,0,0,0,0,0,0,0,0,0,0,0,0};break;
case 1: vu={0,0,0,0,0,0,0,0,0,0,0,0,0,1};break;
case 2: vu={0,0,0,0,0,0,0,0,0,0,0,0,1,1};break;
и так далее до 13
}

196 (2024-03-26 03:20:27 отредактировано vladbuharkin20)

Re: управление драйвером жк lc75823

Значит начал я создавать меню для микросхемы tda7461(для него мы с вами разрабатывали скетч) и столкнулся с проблемой(проблему я записал на видео и положил в архив)
Вот скетч

#define CE  3
#define CL  4
#define DI  5
// sw=6  dt=7 clk=8
int w;
unsigned long byte_1,byte_2,byte_3,byte_4,byte_5;
unsigned long h1,h2,h3,h4,h5,h6,h7,h8;
unsigned long kav_1=0,dvoetoh=0,toch=0,kav_2=0;
unsigned long vu[14]={0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned long scm=1, beat=0, soft=0,pop=0;
unsigned long rnd=0,prt=0,lond=0,cif_1=0;
unsigned long el_12,el_11,el_10,el_9,el_8,el_7,el_6,el_5,el_4,el_3,el_2,el_1;

#define CLK    8 // CLK ENCODER
#define DT     7 // DT  ENCODER
#define SW     6 // SW  ENCODER
#define IN     2  // BUTTON INPUT

#include <Wire.h> 
#include <EEPROM.h>
#include <Encoder.h>               
#include <MsTimer2.h>              
#include <TDA7461.h>
  TDA7461 tda;
  Encoder myEnc(CLK, DT);
  long times,oldPosition  = -999,newPosition;
  int vol,vol_d,menu,z,z0,z1,bass,treb,in,gain0,gain1,gain2,gain3,gain4,gain5,bass_d,treb_d,menu1;
  bool w2,w1,www;


void setup() {
  Wire.begin();Serial.begin(9600);
  pinMode(CE, OUTPUT);
  pinMode(CL, OUTPUT);
  pinMode(DI, OUTPUT);
  digitalWrite(CE,LOW);
  digitalWrite(CL,LOW);
  pinMode(A0, INPUT_PULLUP);
  delay(200);


 MsTimer2::set(1, to_Timer);MsTimer2::start();
 pinMode(IN,INPUT_PULLUP); 
pinMode(SW, INPUT_PULLUP);
 audio();
/*
clear_lcd();
delay(2000);
 h1 = buk(7);
 h2 = buk(4);
 h3 = buk(12);
 h4 = buk(12);
 h5 = buk(15);
  print_out();
 delay(1500);
 h1 = buk(27);
 h2 = buk(27);
 h3 = buk(27);
 h4 = buk(27);
 h5 = buk(27);
  print_out();
 delay(300);
 h1 = buk(0);
 h2 = buk(21);
 h3 = buk(24);
 print_out();
*/
vol=111;
bass=0;
treb=0;
}

void loop() {
  if(digitalRead(SW)==0){menu++;if(menu>2){menu=0;}clear_lcd();times=millis();w=1;w1=1;www=1;delay(200);}
  
/////////////// VOLUME /////////////////////////////////////////////////////////
 if(menu==0){
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
     vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w2=1;w1=1;vol_func();tda.setVolume(vol, 1);}
      vol_d=map(vol,111,0,0,48);
int sec = vol_d;
  h2 = buk(22);h3 = buk(15);h4 = buk(12);h7 = segm(sec%10);h6 = segm(sec/10%10);
   print_out();
 }
////////////// BASS /////////////////////////////////////////////////////////
  if(menu==1){
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
     bass=bass-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;bass_func();tda.setBassTreb(bass, treb);}
       bass_d=map(bass,7,-7,14,0);
int sec1 = bass_d;
  h1 = buk(1);h2 = buk(0);h3 = buk(19);h4 = buk(19);h7 = segm(sec1%10);h6 = segm(sec1/10%10);
  print_out();
  }
////////////// TREB /////////////////////////////////////////////////////////
  if(menu==2){
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
   treb=treb-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;treb_func();tda.setBassTreb(bass, treb);}

   treb_d=map(treb,7,-7,14,0);
int sec2 = treb_d;
  h1 = buk(20);h2 = buk(18);h3 = buk(4);h4 = buk(1);h7 = segm(sec2%10);h6 = segm(sec2/10%10);
  print_out();
  Serial.println(treb);
  } 

if(millis()-times>5000 ){
menu1=1;menu=3;clear_lcd();}

if(menu1==0){

}
if(menu1==1){
  h1 = buk(0);
 h2 = buk(21);
 h3 = buk(24);
 print_out();
}

int cpec = map(analogRead(A1), 0,1023, 0, 14);
switch(cpec){
case 0: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=0;vu[9]=0;vu[10]=0;vu[11]=0;vu[12]=0;vu[13]=0;break;
case 1: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=0;vu[9]=0;vu[10]=0;vu[11]=0;vu[12]=0;vu[13]=1;break;
case 2: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=0;vu[9]=0;vu[10]=0;vu[11]=0;vu[12]=1;vu[13]=1;break;
case 3: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=0;vu[9]=0;vu[10]=0;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 4: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=0;vu[9]=1;vu[10]=0;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 5: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=0;vu[9]=1;vu[10]=1;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 6: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=0;vu[7]=0;vu[8]=1;vu[9]=1;vu[10]=1;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 7: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=1;vu[7]=0;vu[8]=1;vu[9]=1;vu[10]=1;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 8: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=0;vu[5]=0;vu[6]=1;vu[7]=1;vu[8]=1;vu[9]=1;vu[10]=1;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 9: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=0;vu[4]=1;vu[5]=0;vu[6]=1;vu[7]=1;vu[8]=1;vu[9]=1;vu[10]=1;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 10: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=1;vu[4]=1;vu[5]=0;vu[6]=1;vu[7]=1;vu[8]=1;vu[9]=1;vu[10]=1;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 11: vu[0]=0;vu[1]=0;vu[2]=0;vu[3]=1;vu[4]=1;vu[5]=1;vu[6]=1;vu[7]=1;vu[8]=1;vu[9]=1;vu[10]=1;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 12: vu[0]=0;vu[1]=1;vu[2]=0;vu[3]=1;vu[4]=1;vu[5]=1;vu[6]=1;vu[7]=1;vu[8]=1;vu[9]=1;vu[10]=1;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 13: vu[0]=1;vu[1]=1;vu[2]=0;vu[3]=1;vu[4]=1;vu[5]=1;vu[6]=1;vu[7]=1;vu[8]=1;vu[9]=1;vu[10]=1;vu[11]=1;vu[12]=1;vu[13]=1;break;
case 14: vu[0]=1;vu[1]=1;vu[2]=1;vu[3]=1;vu[4]=1;vu[5]=1;vu[6]=1;vu[7]=1;vu[8]=1;vu[9]=1;vu[10]=1;vu[11]=1;vu[12]=1;vu[13]=1;break;
}
print_out();
}
void to_Timer(){newPosition = myEnc.read()/4;}
void vol_func(){if(vol>111){vol=111;}if(vol<0){vol=0;}}
void gain_func(){if(gain0>7){gain0=7;}if(gain0<0){gain0=0;}}
void bass_func(){if(bass>7){bass=7;}if(bass<-7){bass=-7;}}
void treb_func(){if(treb>7){treb=7;}if(treb<-7){treb=-7;}}

вот архив
Данный контент доступен только зарегистрированным пользователям.

а проблема в том что надпись AUX мерцает, и при попытке снова вернуться в меню настроек надпись остается. Прошу помощи только в этом, с остальным я сам.

Задумка в том, чтобы при загрузке первым предлагалось выставить громкость, после чего если действий не было 5  секунд высвечивалась надпись AUX(в будущем этом будет индикатор входа). Если захотелось повысить громкость нужно покрутить энкодер, надпись должна погаснуть и загореться меню настройки громкости.

197

Re: управление драйвером жк lc75823

if(millis()-times>5000 ){
menu1=1;menu=3;clear_lcd();}

По условию, если times больше 5 секунд Вы выводите AUX (menu1=1) и тут же стираете экран clear_lcd() и так постоянно.

198

Re: управление драйвером жк lc75823

if(millis()-times>5000 ){
menu1=1;menu=3;}else{menu=0;menu1=0;}

199

Re: управление драйвером жк lc75823

какой из этих пунктов включает loudness ?

tda.setLoudness(0, 0, 0, 0); 
// int loud_att = 0...15 >>> 0...-15 dB
// bool loud_filter = 0...1 >>> on...off
// bool loud_f = 0...1 >>> 200...400 Hz
// bool loud_q = 0...1 >>> low...normal

200

Re: управление драйвером жк lc75823

bool loud_filter = 0...1 >>> on...off