OM/YL Online  

   

Login  

   

donazione  

 
   Donazione a sostegno e per lo
      sviluppo
del Club Italiano
                Modi Digitali
               Psktrentunisti

   

MultiTrans  

   
   
Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: Sostituzione controller Yaesu con display Nextion

Sostituzione controller Yaesu con display Nextion 4 Mesi 5 Giorni fa #1746

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 596
  • Ringraziamenti ricevuti 104
  • Karma: 44
Risolto in parte.....
Esiste una nuova libreria ITEADLIB_Arduino_Nextion-master, dalla quale basta (per il mio sketch) caricare:

#include <Nextion.h>
#include <NexButton.h>
#include <NexText.h>
#include <NexPage.h>


Ora però mi dice che lo sketch non funziona su Arduino Nano, ho provato a caricare su Arduino Mega e funziona.... ora provo a snellire qualcosa.
Ultima modifica: 4 Mesi 5 Giorni fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Sostituzione controller Yaesu con display Nextion 4 Mesi 5 Giorni fa #1748

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 596
  • Ringraziamenti ricevuti 104
  • Karma: 44
FUNZIONA!!!

Ecco lo sketch modificato (aggiunti i finecorsa software se il rotore non ne fosse dotato):
// Sostituzione frontalino meccanico rotore Yaesu G-450C con display touch Nextion Advanced da 7''

byte PotentiometerPin = A0;  // pin del potenziometro

int PotentiometerValue;  // variabile del potenziometro
int GaugeValue;  // variabile del gauge
int ProgressBarValue;  // variabile progressbar
int ProgressBar2Value; // variabile progressbar2
int Numerogradi;// visualizza sul display il numero dei gradi di rotazione
int DigitNumber; //Valore digitato sul tastierino numerico
int CurrentPage = 0;  // variabile pagina iniziale


#include <SoftwareSerial.h>
SoftwareSerial NextionSerial(0,1);
#include <NexButton.h>
#include <NexText.h>
#include <Nextion.h>
#include <NexPage.h> 

NexButton b0 = NexButton(0, 10, "b0");
NexButton b1 = NexButton(0, 11, "b1");
NexButton b16 = NexButton(3, 12, "b16");
NexButton b17 = NexButton(3, 11, "b17");
NexButton b15 = NexButton(2, 15, "b15");  //Tasto GO TO con valore impostato su tastierino numerico

//
NexPage page0 = NexPage(0, 0, "page0");  // Pagina 0
NexPage page1 = NexPage(1, 0, "page1");  // Pagina 1
NexPage page2 = NexPage(2, 0, "page2");  // Pagina 2
NexPage page3 = NexPage(3, 0, "page3");  // Pagina 3

NexTouch *nex_listen_list[] = 
{
  
  &b0,  // CW a pagina 0
  &b1,  // CCW a pagina 0
  &b15,   //-------------------- Tasto GO TO tastierino numerico
  &b16, // CW a pagina 3
  &b17, // CCW a pagina 3
  &page0, 
  &page1, 
  &page2, 
  &page3,  
  NULL  
};  // Fine eventi touch


// Pulsanti Avanti e indietro Rotore:

// CW

void b0PushCallback(void *ptr)  
{
  digitalWrite(2, HIGH);  // Rotore gira in senso Orario CW
}  
void b0PopCallback(void *ptr)  
{
  digitalWrite(2, LOW);  // Rotore stop
} 

void b16PushCallback(void *ptr)  // Rotore avanti da pagina 3
{
  digitalWrite(2, HIGH); 
}  
void b16PopCallback(void *ptr)  
{
  digitalWrite(2, LOW);  // Rotore stop
} 


// CCW

void b1PushCallback(void *ptr)  // Rotore indietro CCW
{
  digitalWrite(3, HIGH);  
}  
void b1PopCallback(void *ptr)  
{
  digitalWrite(3, LOW);  // Rotore stop
}  


void b17PushCallback(void *ptr)  
{
  digitalWrite(3, HIGH);  // Rotore indietro da pagina 3 CCW
} 
void b17PopCallback(void *ptr)  
{
  digitalWrite(3, LOW);  // Rotore stop
} 


// Inizio prova puntamento da tastierino numerico ////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // End of press event

// Cambio eventi a seconda della pagina selezionata
void page0PushCallback(void *ptr) 
{
  CurrentPage = 0;  
}  
void page1PushCallback(void *ptr)  
{
  CurrentPage = 1;  
} 
void page2PushCallback(void *ptr)  
{
  CurrentPage = 2;  
} 
void page3PushCallback(void *ptr) 
{
  CurrentPage = 3;  
}  // Fine cambio eventi


void setup() 
{

  pinMode(PotentiometerPin, INPUT);  
  Serial.begin(9600);  

  b0.attachPush(b0PushCallback);
  b0.attachPop(b0PopCallback);  
  b1.attachPush(b1PushCallback); 
  b1.attachPop(b1PopCallback); 
                                  // INSERIRE b15 PAGINA 2?????
  b16.attachPush(b16PushCallback);
  b16.attachPop(b16PopCallback);  
  b17.attachPush(b17PushCallback); 
  b17.attachPop(b17PopCallback); 
  page0.attachPush(page0PushCallback);  // Pagina controllo rotazione
  page1.attachPush(page1PushCallback);  // Pagina cartina zone DXCC
  page2.attachPush(page2PushCallback);  // Pagina tastierino numerico
  page3.attachPush(page3PushCallback);  // Pagina Elevazione e azimuth


  pinMode(13, OUTPUT); // Led overlap
  pinMode(2, OUTPUT);  //Rotazione in senso orario CW
  pinMode(3, OUTPUT);  //Rotazione in senso antiorario CCW

}  //Fine SETUP

void loop() 
{

  delay(100);  

  PotentiometerValue = analogRead(PotentiometerPin);  // leggi il potenziometro da 0 a 1023

  
 if(CurrentPage == 2){ 
  

Numerogradi = map(PotentiometerValue, 2, 1025, 0, 450);
 if(Numerogradi > 359)  // se il valore di rotazione supera i 359°
  {
    Numerogradi = Numerogradi - 360;  // Sottrai 360° e riparti da 0° in overlap
  }

  Serial.print("n0.val=");  
  Serial.print(Numerogradi);  
  Serial.write(0xff);  
  Serial.write(0xff);
  Serial.write(0xff);
} 

  
if(CurrentPage == 3){ 
  

Numerogradi = map(PotentiometerValue, 2, 1025, 0, 450);
 if(Numerogradi > 359)  // se il valore di rotazione supera i 359°
  {
    Numerogradi = Numerogradi - 360;  // Sottrai 360° e riparti da 0° in overlap
  }

  Serial.print("n0.val=");  
  Serial.print(Numerogradi);  
  Serial.write(0xff);  
  Serial.write(0xff);
  Serial.write(0xff);
}

  if(CurrentPage == 0){ 

Numerogradi = map(PotentiometerValue, 2, 1025, 0, 450);
 if(Numerogradi > 359)  // se il valore di rotazione supera i 359°
  {
    Numerogradi = Numerogradi - 360;  // Sottrai 360° e riparti da 0° in overlap
  }

  Serial.print("n0.val=");  
  Serial.print(Numerogradi);  
  Serial.write(0xff);  
  Serial.write(0xff);
  Serial.write(0xff);


  GaugeValue = map(PotentiometerValue, 2, 1025, 90, 540);  

  if(GaugeValue > 359)  // se il valore di rotazione supera i 359°
  {
    GaugeValue = GaugeValue - 360;  // ricomincia da 0° (overlap)
  }

  Serial.print("z0.val=");  
  Serial.print(GaugeValue); 
  Serial.write(0xff);  
  Serial.write(0xff);
  Serial.write(0xff);



  Serial.print("va0.val=");  
  Serial.print(GaugeValue);  
  Serial.write(0xff);  
  Serial.write(0xff);
  Serial.write(0xff);


  ProgressBarValue = map(PotentiometerValue, 2, 820, 0, 100); 
  Serial.print("j0.val="); 
  Serial.print(ProgressBarValue);  
  Serial.write(0xff);  
  Serial.write(0xff);
  Serial.write(0xff);
  
  ProgressBar2Value = map(PotentiometerValue, 820, 1025, 0, 100);
  Serial.print("j1.val="); 
  Serial.print(ProgressBar2Value);
  Serial.write(0xff);  
  Serial.write(0xff);
  Serial.write(0xff);


  
// Led indicatore di overlap 
if(ProgressBar2Value > 2)
 {
  digitalWrite(13,HIGH); // Se la barra di OVERLAP parte, accendi il led
 }
else
 {
  digitalWrite(13,LOW);}  

if(ProgressBar2Value > 99)// Blocco software della rotazione superati i 449°
  {
 digitalWrite(2,LOW);
  } 


  nexLoop(nex_listen_list);  // controlla ogni azione touch

}}

Ecco come modificare la porta seriale per funzionare con UNO e Nano:


Questa immagine è nascosta ai visitatori. Prego accedi o registrati per visualizzarli.


Scaricare la nuova libreria ITEADLIB_Arduino_Nextion dalla quale si possono eliminare i seguenti file che appesantiscono la libreria:
Tutte le sottocartelle
doxygen.doxy
doxygen

Ora tutto funziona!
Ultima modifica: 4 Mesi 4 Giorni fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Sostituzione controller Yaesu con display Nextion 3 Mesi 3 Settimane fa #1749

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 596
  • Ringraziamenti ricevuti 104
  • Karma: 44
Udite Udite! Esistono ancora persone che si spremono le meningi per aiutare un'altra persona... Ho dovuto rivolgermi al Forum Internazionale di Arduino, perchè su quello italiano non ho trovato aiuto se non in piccola parte.
Su quello internazionale il buon Seithan mi sta aiutando e in parte ci è già riuscito. Prestissimo gli aggiornamenti.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Sostituzione controller Yaesu con display Nextion 3 Mesi 3 Settimane fa #1750

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 596
  • Ringraziamenti ricevuti 104
  • Karma: 44
Ecco i file provvisori ma funzionanti che mi ha modificato il buon Seithan sul Forum di Arduino (Forum Internazionale).






Questo allegato è nascosto ai visitatori. Prego accedi o registrati per visualizzarli.
Ultima modifica: 3 Mesi 3 Settimane fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Moderatori: iz8ifl, iz1tgh, IZ3ZLU, iz8guh
Tempo creazione pagina: 0.587 secondi
Powered by Forum Kunena
   
   
© PSKTRENTUNISTI ITALIAN CLUB (PIC)