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 21 Ore 44 Minuti fa #1746

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 573
  • Ringraziamenti ricevuti 102
  • 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: 18 Ore 18 Minuti fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Sostituzione controller Yaesu con display Nextion 15 Ore 36 Minuti fa #1748

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 573
  • Ringraziamenti ricevuti 102
  • 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: 1 Ora 28 Minuti fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Moderatori: iz8ifl, iz1tgh, IZ3ZLU, iz8guh
Tempo creazione pagina: 0.457 secondi
Powered by Forum Kunena
   
   
© PSKTRENTUNISTI ITALIAN CLUB (PIC)