FORUM RADIOAMATORIALE - Help Arduino TFT 3.2 x Ampli LDMOS
    FORUM RADIOAMATORIALE
Sostieni il nostro lavoro. Per altri modi leggi FAQ


FORUM RADIOAMATORIALE
Nome Utente:

Password:
 


Registrati
Salva Password
Password Dimenticata?

 

    


Menù riservato agli utenti registrati - Registrati  




 Tutti i Forum
 Discussioni
 AUTOCOSTRUZIONE
 Help Arduino TFT 3.2 x Ampli LDMOS
I seguenti utenti stanno leggendo questo Forum Qui c'è:


Tutti gli utenti possono inserire NUOVE discussioni in questo forum Tutti gli utenti possono rispondere in questo forum
  Bookmark this Topic  
| Altri..
Autore Discussione  

IZ8IQL

oltre 100 messaggi sul Forum


Inserito il - 05/03/2017 : 18:20:01  Link diretto a questa discussione  Mostra Profilo  Visita l'Homepage di IZ8IQL Invia a IZ8IQL un Messaggio Privato
Ciao ragazzi,
voglio sostituire l'lcd del mio amplificatore a Mosfet con un diplay TFT touch .

Ho qualche difficoltà a scrivere il codice delle draw bar per la potenza, qualche anima pia potrebbe darmi qualche dritta ?

avete qualche link o codice da cui posso prendere spunto ?

per ora stavo facendo delle prove (allego il codice) ho generato tramite l'ingresso A0 (con un potenziometro) una variazione di barra che aumenta sul tft. Il problema e che dal min al max funziona, quando invece diminuisco la barra resta marcata e non si ridimensiona.


#include <UTFT.h>
#include <UTouch.h>

// Declare which fonts we will be using
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
extern uint8_t SmallFont[];
extern uint8_t SevenSegNumFontPlus[];


UTFT myGLCD(ITDB32S,38,39,40,41);
UTouch myTouch(6,5,4,3,2);


void setup()
{

myGLCD.InitLCD();
myGLCD.clrScr();
myGLCD.setFont(SmallFont);


}
void clearField()
{
myGLCD.setColor(0, 0, 255);
myGLCD.fillRect(1,15,318,224);
}

void loop()
{
int sensorValue = analogRead(A0);
myGLCD.setColor(255, 255, 255);

myGLCD.print("0", 4, 50);
myGLCD.print("20", 30, 50);
myGLCD.print("40", 56, 50);
myGLCD.print("60", 82, 50);
myGLCD.print("80", 108, 50);
myGLCD.print("100", 134, 50);

myGLCD.setColor(0, 150, 0);
myGLCD.fillRoundRect(4, 4, sensorValue/4 , 40);

}








Modificato da - IZ8IQL in Data 05/03/2017 18:22:52

 Firma di IZ8IQL 
La mia stazione:Icom IC-7700,FT1000 MP MARKV,FT857D, IC-781, ACOM-1000, KX3 , FT817, TS-590S

73's de iz8iql Antonio

 Regione Campania  ~ Prov.: Caserta  ~ Città: Grazzanise  ~  Messaggi: 121  ~  Membro dal: 03/10/2006  ~  Ultima visita: 18/04/2020

iw2fiv

oltre 1000 messaggi sul Forum



Inserito il - 05/03/2017 : 20:12:58  Link diretto a questa risposta  Mostra Profilo  Visita l'Homepage di iw2fiv Invia a iw2fiv un Messaggio Privato
Non sono un esperto ma io modificherei lo script in questo punto

myGLCD.setColor(0, 150, 0);
myGLCD.fillRoundRect(4, 4, sensorValue/4 , 40);
ponendo tra le due righe un istruzione che cancelli prima tutti i round scritti precedendemente e poi aggiunga quelli desiderati.

Ciao Carlo








  Firma di iw2fiv 
“E se tutti quanti accettavano la menzogna imposta dal Partito, se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera. “Chi controlla il passato” diceva lo slogan del Partito “controlla il futuro. Chi controlla il presente controlla il passato.”

G. Orwell 1984

 Regione Lombardia  ~ Prov.: Milano  ~ Città: Milano  ~  Messaggi: 1809  ~  Membro dal: 10/03/2005  ~  Ultima visita: 14/04/2024 Torna all'inizio della Pagina

IU3BRB

oltre 100 messaggi sul Forum



Inserito il - 06/03/2017 : 11:16:10  Link diretto a questa risposta  Mostra Profilo  Visita l'Homepage di IU3BRB Invia a IU3BRB un Messaggio Privato
nello sketch che ti posto vado a leggere i 5 volt nel connettore jack (impostabile con FS dal menu 60 dell'857) sotto il frontalino dell'857 su A5 e li tramuto in smeter (impostando SIG nel menu 60) forse la funzione clearbyte può esserti utile, la trovi in fondo allo sketch, dove vado ad annerire i quadretti che non servono piu, però uso la libreria GFX di adafruit



//S-METER Yaesu FT-857D,897D By Alberto IU3BRB


#include <Adafruit_GFX.h> // libreria grafica
#include <Adafruit_TFTLCD.h> // libreria hardware

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

// colori 16bit (invertiti...boh)
#define WHITE 0x0000
#define BLUE 0xFFE0
#define CYAN 0xF800
#define MAGENTA 0x07E0
#define RED 0x07FF
#define GREEN 0xF81F
#define YELLOW 0x001F
#define BLACK 0xFFFF
#define ORANGE 0x071F
#define GREY 0xC618
#define AZZURRO 0xFD20
#define PURPLE 0xAFE5
#define LGREY 0x7BEF


Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

int analogInput = A5; //analog pin A5
float VoltageOut = 0.0;
float VoltageIn = 0.0;
int refresh = 5; //refresh rate
int i = 0; //variable used for clearing our byte 'graph'
int value = 0; //variable to store value


void setup() {
tft.reset();
uint16_t identifier = tft.readID();
tft.begin(identifier);

tft.fillScreen(BLACK);

tft.setCursor(20,20);
tft.setTextColor(AZZURRO); tft.setTextSize(3); tft.setRotation(-45);
tft.println("Alberto - IU3BRB");

tft.setCursor(80,55);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("Locator:JN65DV");

tft.fillRect (1,85,106,5,GREEN);
tft.fillRect (106,85,106,5,LGREY);
tft.fillRect (212,85,106,5,RED);



tft.setCursor(40,110);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("Yaesu FT857/D S-METER");


tft.setCursor(0, 170);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("1");

tft.setCursor(25, 170);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("2");

tft.setCursor(52, 170);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("3");

tft.setCursor(83, 170);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("4");

tft.setCursor(111, 170);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("5");

tft.setCursor(140, 170);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("6");

tft.setCursor(168, 170);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("7");

tft.setCursor(199, 170);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("8");

tft.setCursor(228, 170);
tft.setTextColor(GREY); tft.setTextSize(2); tft.setRotation(-45);
tft.println("9");

tft.setCursor(255, 170);
tft.setTextColor(GREY); tft.setTextSize(1); tft.setRotation(-45);
tft.println("+30");

tft.setCursor(297, 170);
tft.setTextColor(GREY); tft.setTextSize(1); tft.setRotation(-45);
tft.println("+60");

tft.setCursor(50,215);
tft.setTextColor(ORANGE); tft.setTextSize(3); tft.setRotation(-45);
tft.println("YAESU FT857D");


tft.setTextColor(WHITE); tft.setTextSize(2); tft.setRotation(-45);
}

void loop(){
value = analogRead(analogInput); //reading the value on A5
value = map(value, 0, 1023, 0, 11);
//VoltageOut = (value * 4.84) / 1024.0;
VoltageIn = (value * 4.84) /11;
//VoltageOut / (R2/(R1+R2));

// tft.setCursor(13, 2); //printing the result to the LCD display
// tft.println(value);

delay(refresh); //refreshing the screen

voltmetergraph(); //calling my function voltmetergraph
}

void voltmetergraph()
{

if (VoltageIn >= 0.417){tft.fillRect (0, 150,28,15, LGREY);}else {tftClearByte(0);} // segnale 1
if (VoltageIn >= 0.834){tft.fillRect (29, 150,28,15, LGREY);}else {tftClearByte(29);} // segnale 2
if (VoltageIn >= 1.251){tft.fillRect (58, 150,28,15, LGREY);}else {tftClearByte(58);} // segnale 3
if (VoltageIn >= 1.668){tft.fillRect (87, 150,28,15, LGREY);}else {tftClearByte(87);} // segnale 4
if (VoltageIn >= 2.085){tft.fillRect (116,150,28,15, GREEN);}else {tftClearByte(116);} // segnale 5
if (VoltageIn >= 2.502){tft.fillRect (145,150,28,15, GREEN);}else {tftClearByte(145);} // segnale 6
if (VoltageIn >= 2.919){tft.fillRect (174,150,28,15, GREEN);}else {tftClearByte(174);} // segnale 7
if (VoltageIn >= 3.336){tft.fillRect (203,150,28,15, GREEN);}else {tftClearByte(203);} // segnale 8
if (VoltageIn >= 3.753){tft.fillRect (232,150,28,15, YELLOW);}else{tftClearByte(232);} // segnale 9
if (VoltageIn >= 4.17) {tft.fillRect (261,150,28,15, RED) ;}else {tftClearByte(261);} // segnale 9+30
if (VoltageIn >= 4.587){tft.fillRect (290,150,28,15, RED) ;}else {tftClearByte(290);} // segnale 9+60

}

void tftClearByte(int c) //clearbyte function
{
tft.setCursor(c,150);
for (i = 0; i < 11; i = i + 1) {tft.fillRect (c,150,28,15, BLACK);

}
}















Modificato da - IU3BRB in data 06/03/2017 11:36:05

  Firma di IU3BRB 
IU3BRB Alberto

 Regione Veneto  ~ Prov.: Treviso  ~ Città: San Vendemiano  ~  Messaggi: 254  ~  Membro dal: 01/02/2014  ~  Ultima visita: 24/03/2021 Torna all'inizio della Pagina

iz2hfg

oltre 5000 messaggi sul Forum



Inserito il - 06/03/2017 : 13:24:04  Link diretto a questa risposta  Mostra Profilo  Visita l'Homepage di iz2hfg  Clicca per vedere l'indirizzo MSN di iz2hfg Invia a iz2hfg un Messaggio Privato
Ciao Antonio,
Ritengo che il problema che sollevi è sostanzialmente nella mancanza nello sketch del ciclo di "reset/refresh" che appunto riguarda il display stesso.

Infatti quando il valore si incrementa, il display sembra funzionare perché (semplificando molto) di fatto si riempiono porzioni consecutive e precedentemente vuote del display, viceversa mancando tale ciclo (si riempiono di blank o altro tutti i settori) la barra rimane invariata.

In rete trovi di tutto e di più su tale argomento, basta cercare.

Inoltre attenzione con le letture poiché se il "tandem match" utilizzato deve rilevare tensioni con ampio range di frequenze (ad esempio 1,8-50MHz.) e lo stesso non è più che lineare (principalmente è la risposta del diodo che non è così lineare) la lettura risulterà falsata.
In questi casi per risolvere, si dovrebbe leggere anche la frequenza adottando una routine di correzione che appunto, in base al range di frequenza, compensi in più o in meno l'errore dovuto alla non linearità.

Buon divertimento.








Modificato da - iz2hfg in data 06/03/2017 13:29:10

  Firma di iz2hfg 
73 de Franco, IZ2HFG
SWL I2-1794
- Alla prima luce del quinto giorno, all'alba, guarda ad Est.....
- Habere non haberi!
- So di non sapere!
- Sono sempre pronto ad imparare, non sempre a lasciare che mi insegnino.
- Contro la stupidità, neanche gli dei possono lottare con successo.
=-> NO MSG PRIVATI <-=
QRZ:
https://www.qrz.com/db/iz2hfg
WebSite:
https://iz2hfg.jimdo.com
QSL:
https://www.eqsl.cc
e-mail:
iz2hfg(AT)gmail.com
((((73))))

 Regione Lombardia  ~ Prov.: Varese  ~ Città: Viggiù  ~  Messaggi: 5559  ~  Membro dal: 18/11/2005  ~  Ultima visita: Ieri Torna all'inizio della Pagina
  Discussione  
  Bookmark this Topic  
| Altri..
 
Vai a:

Arifidenza.it | Attività  - ARI Fidenza | Home La Sezione - ARI Fidenza
Questa pagina è stata generata in 0,12 secondi.