Sari la conținut
ELFORUM - Forumul electronistilor

Yoradio - web radio sau radio internet


cristi7521

Postări Recomandate

As fi tentat sa-l refac, dar nu-mi place modul de schimbare al programelor cu un singur buton. Puteti sa ma ajutati in adaugarea a inca unui buton pentru "Ch -" ?

Link spre comentariu
  • Răspunsuri 130
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • fratello

    36

  • val

    30

  • modoran

    26

  • Stefan

    16

Top autori în acest subiect

Imagini postate

Cred ca in aceste "locuri" ar trebui umblat...

Dar ma depaseste scrierea codului adecvat. Prevstream() chiar nu stiu cum ar trebui sa arate.

 

// Control buttons
#define BUTTONS_NUM 4 // in loc de 3
const int BUTTONS_PINS[BUTTONS_NUM] = {34, 35, 32, 33};






// Stream actions
void prevStream() {
  config.stream_id++;
  if(config.stream_id =< config.stream_count) {
    config.stream_id=0;
  }
  streamChanged=true;
}




  if(buttons) {
    DEBUG_PRINT("[BUTTON] Pressed ");
    DEBUG_PRINTLN(String(buttons));
    switch(buttons) {
      case 1: // BUTTONS 1 - Volume UP
        if(config.volume < MAX_VOLUME) {
          config.volume = config.volume+1;
        }
        break;
      case 2: // BUTTONS 2 - Volume DOWN
        if(config.volume > MIN_VOLUME) {
          config.volume = config.volume-1;
        }        
        break;
      case 3: // BUTTONS 1+2 - Play/Pause
        togglePlay();        
        break;
      case 4: // BUTTONS 3 - Next stream
        nextStream();
        break;
      case 5: // BUTTONS 4 - Prev.stream
        prevStream();
	break;

 

Editat de fratello
Link spre comentariu

Ieri mi-a sosit WROVER-ul și pot spune că prezența PSRAM-ului se simte, adică nu se mai blochează pe streaming AAC chiar cu un display mai mare și jucat pe web. Poza este de dimineață când nu apucasem sa conectez DAC-ul 98357A.

IMG-20240305.jpg

Link spre comentariu

Salut. 

Frumos proiect. Doresc si eu sa-l fac.

Vad ca sunt mai multe variante, Imi puteti spune care este cera mai performanta si stabila combinatie?

In viitor doresc sa adaug si un radio clasic in jurul unui DSP RF, asa ca o varianta de "placa de baza"(board) cat mai performanta este preferabila.

 

Multumesc.

Link spre comentariu

IMHO :

-performanta : YoRadio dar numai cu WROVER (...fiindca PSRAM)

-"low cost" : varianta Elektor, stabila, dar cu destule limitari, mai ales pe partea de afisare

 

M-am apucat sa modific vers.Elektor pt display OLED (0,96 sau 1.3"), mi se pare o "risipa" folosirea displayului TFT color. Va anunt daca imi iese ceva...

Link spre comentariu

Salut.

Multumesc pentru raspunsul rapid.

Am googalit dupa ESP32- WROVER si a rezultat o multime de variante. Puteti sa-mi spuneti care varianta este cea mai performanta pentru acest proiect si eventual cu resurse extra pentru adaugarea in viitor a unui radio RF.

As dorii si o sugestie pentru un display mai mare. De unde le-ati procurat.

 

Multumesc.

 

Link spre comentariu

Am reusit sa pornesc si sa afisez ceva pe oledul de 0.96"

Dar nu reusesc sa merg mai departe, sa afisez timpul si postul de radio.

Ba reusesc sa afisez doar timpul, ba reusesc sa le afisez pe amandoua, dar cand schimb postul se suprapune scrisul...Iar daca postul are un nume mai lung (Kiss Fm live) se afiseaza un  rand mai jos ....

 

err-disp.thumb.jpg.7b06198014f2013432ac177b45533127.jpg

 

Poate reuseste cineva sa il faca sa afiseze corect, va rog ! Eu nu inteleg unde trebuie sa comand stergerea (updatarea) displayului.

 

Am modificat scree.ino :

 


// ------------------------------------- ROUTINES de GESTION de l'ECRAN TFT ------------------------------------------

void init_screen() 
{
	display.begin(SSD1306_SWITCHCAPVCC, 0X3C);
	display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("ESP32Radio");
  display.display();
  delay(2000);
}

void cadre_screen()
{
      display.clearDisplay();
}

void aff_name(uint8_t station, uint8_t posY)
{
    uint8_t x;
//    tft.setTextColor(ST77XX_RED);
//    tft.setTextSize(2);
    display.setTextSize(1);
    String affName = Name;
    affName.trim();
    uint8_t l = affName.length();
    x = (screenWidth - l*11)/2 - 4;                                //character length = 5+1
//    tft.fillRect(1,posY,screenWidth-2,16,0);                       //x,y,width,height,color
//    tft.setCursor(x,posY);
//    tft.println(affName); 
    display.setCursor(x,posY);
    display.println(affName);
}

void aff_volume(uint8_t posY)
{
    char volumestring[10];
    uint8_t x;
    sprintf(volumestring,"Vol:%d/%d",cur_volume, MAX_VOLUME);
    x = (screenWidth - String(volumestring).length()*6)/2;        //character length = 5+1
//    tft.setTextSize(1);
//    tft.setTextColor(ST77XX_GREEN);
//    tft.fillRect(1,posY,screenWidth/2-8,8,0);                     //x,y,width,height,color
//    tft.setCursor(10,posY);
    display.setCursor(10,posY);
    if (cur_volume != 0){
//      tft.println(volumestring); 
    display.println(volumestring);
    }else{
//      tft.setTextColor(ST77XX_RED);
//      tft.println("   MUTE");
    display.println("   MUTE");
//      tft.setTextColor(ST77XX_GREEN);
    }
}

void aff_mute(uint8_t posY)
{
    uint8_t x;
//    tft.setTextSize(1);
//    tft.fillRect(1,posY,screenWidth/2-8,8,0);                     //x,y,width,height,color
//    tft.setCursor(10,posY);
    display.setCursor(10,posY);
//    tft.setTextColor(ST77XX_RED);
//    tft.println("   MUTE");
      display.println("  MUTE");
//    tft.setTextColor(ST77XX_GREEN);
}

void aff_channel(uint8_t posY)
{
    uint8_t x;
    char channelstring[20];                                             
    sprintf(channelstring,"Channel:%d/%d",cur_station,maxStation);
    x = (screenWidth - String(channelstring).length()*6)/2;         //character length = 5+1
//    tft.setTextSize(1);
//    tft.setTextColor(ST77XX_GREEN);
//    tft.fillRect(screenWidth/2-5,posY,screenWidth/2-1,8,0);         //x,y,width,height,color
//    tft.setCursor(screenWidth/2-5,posY);
    display.setCursor(screenWidth/2-5,posY);
//    tft.println(channelstring); 
    display.setTextSize(1);
    display.println(channelstring);
}

void aff_time(uint8_t posY)    
{      
   readTime();
   if (Minute != Minute_old) {
      Minute_old = Minute;
      sprintf(NTPtime,"%02d/%02d/%04d %02d:%02d",Jour,Mois,Annee,Heure,Minute); //format NTPtime      
//      tft.setTextColor(ST77XX_YELLOW);
//      tft.setTextSize(1);
      display.setTextSize(1);
      uint8_t x = (screenWidth - String(NTPtime).length()*6)/2;    //character length = 5+1
//      tft.fillRect(1,posY,screenWidth-x,8,0);                      //x,y,with,heigh - clear all line 
//      tft.setCursor(x,posY);
      display.setCursor(x,posY);
//      tft.println(NTPtime); 
      display.println(NTPtime); 
   }
}

void aff_info(String info, int posY)
{
   uint8_t x;
//   tft.setTextSize(1);
//   tft.setTextColor(ST77XX_ORANGE);                                             
   x = (screenWidth - info.length()*6)/2;                           //character length = 5+1
//   tft.fillRect(1,posY,screenWidth-2,8,0);//x,y,width,height,color
//   tft.setCursor(x,posY);
  display.setCursor(x,posY);
//   tft.println(info); 
  display.println(info);
}

void Message(String message, uint8_t posY, uint8_t size)
{
//   tft.setTextSize(size);
   uint8_t x;
   x = (screenWidth - message.length()*6*size)/2;                  //character length = 5+1
//   tft.fillRect(1,posY,screenWidth-x+2,8*size,0);                      //x,y,width,heigh - clear all line 
//   tft.setCursor(x,posY);
//   tft.println(message); 
  display.setCursor(x,posY);
  display.println(message);
}

 

si in programul principal :

 

void loop(){
   if (!modeAP){                                                   // only if not AP mode         
      audio.loop();                                  
      aff_time(8);
      check_buttons(); 
      check_IR();
      display.display();
      if ((millis()- t0_rssi) >= DELAY_RSSI){
         t0_rssi = millis();
         rssi = WiFi.RSSI();                                       // updates rssi every 2s (DELAY_RSSI)
      }
   }else{
      if(flagSerial){
         flagSerial = false;
         Serial.println("Waiting for WiFi credentials !");                // updates message every 2s (DELAY_RSSI)
      }  
   }
}

 

Link spre comentariu

Asta e tot ce m-am priceput sa fac sa afiseze. Trebuie sa verific daca am mutat corect pinii pt volum (+si-)

 

disp.jpg.192f6e13b634a5941fe57b21e8cbe98b.jpg

Link spre comentariu

@Val : Va trimisesem schema si soft (originale) pe Wetransfer (v-am dat linkul prin PM).

Voi posta aici versiunea mea, dupa ce verific functionarea butoanelor.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări