home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


Non lo so fare
     
Autore Messaggio opzioni
rcc.roberto



[pagine pubblicate]

postato il:
12.02.2023, alle ore 18:13
Non riesco a scaricare il file che hai linkato, mi viene fuori un file con scritto ----- non confermato etc.

Comunque nella descrizione c'è una nota interessante
dice che la libreria non visualizza le variabili ma solo le stringhe

Perciò:
1 - devi memorizzare i valori in variabili float
2 - ricopiare detti valori in una variabile stringa
3 - visualizzare la variabile stringa


E SISTEMA I NOMI DELLE VARIABILI, ALTRIMENTI NON SI CAPISCE NULLA

temp_str
temp_flt

così hai chiaro in ogni momento che variabile usare.

Spero di essere stato utile.....Buon divertimento


.
rcc.roberto



[pagine pubblicate]

postato il:
12.02.2023, alle ore 18:14
Vedo che intanto è intervenuto primok..... sicuramente con lui risolvi
primok




una ogni 100 livelli
una ogni 10 livelli


postato il:
12.02.2023, alle ore 18:18
FrancoGual:
primok:
FrancoGual:
Io ero partito da questo.
https://thesolaruniverse.wordpress.com/2017/08/11/an-128x64-…
Che usa un DHT11, misero sensore, mentre io ho unBME280 che mirura tre valori.



unsigned char TEMP[10];


Ciao primo, sempre preciso e sintetico, ma a me dice poco.
ma suppongo, anzi do per certo il tuo commento e provo.
Grazie.


Mi spiego meglio:

nella funzione u8g.drawStr( 50, 13, TEMP); // Variabile non VA!!!

dove ha scritto NON VA, ti da errore perchè TEMP è un array di char.

La funzione che viene invocata è questa:
u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr(&u8g, x, y, s); }

ed il terzo argomento è un puntatore a char.



Più piccola è la mente più grande è la presunzione.
primok




una ogni 100 livelli
una ogni 10 livelli


postato il:
12.02.2023, alle ore 18:19
Compilato e non mi da errori. Poi bisogna vedere il resto se è scritto correttamente!!


Più piccola è la mente più grande è la presunzione.
FrancoGual



[pagine pubblicate]

postato il:
12.02.2023, alle ore 18:52
Sempre grazie primo, il resto dovrebbe funzionare, poichè se a quella stringa antepongo // e viene disabilitata, solo quella che scrive il dato, lo compila e vedo in monitor seriale i dati scorrere aggiornati e corretti.
Quindi devo solo far capire, parola grossa, all'IDE cosa voglio che faccia. :)



Anche il viaggio più lungo inizia con un piccolo passo.
Si vis pacem, para bellum!!!
Mark Zuckerberg ha reso suoi schiavi milioni di persone senza che se ne rendessero conto. F.G.
<Avete vinto voi,ma almeno non riuscirete a considerarmi vostro complice> Da Mediterraneo.
Inferno,Canto III,verso 51 Virgilio dice.........
FrancoGual



[pagine pubblicate]

postato il:
12.02.2023, alle ore 19:06
Questo è quello che ho a monitor seriale.
 Found BME280 sensor! Success.
Temp: 16.42°C Humidity: 49.27% RH Pressure: 1004.83MilliBar
16.43
49.28
1004.83
Temp: 16.50°C Humidity: 48.56% RH Pressure: 1004.83MilliBar
16.51
48.57
1004.83
Temp: 16.50°C Humidity: 51.00% RH Pressure: 1004.83MilliBar
 

In orizzontale i valori temp hum e pres.
In verticale con un centesimo in più, TEMP HUM e PRES che corrisponde.
Per capire bene il comando u8g,drawStr dovrebbe essere le prime due cifre indicano le coordinate dove scerivere e la terza cosa scrivere, la mia domanda è:
Perchè se in monitor seriale le variabili vengono scritte e in quel comando le da non assegnate?



Anche il viaggio più lungo inizia con un piccolo passo.
Si vis pacem, para bellum!!!
Mark Zuckerberg ha reso suoi schiavi milioni di persone senza che se ne rendessero conto. F.G.
<Avete vinto voi,ma almeno non riuscirete a considerarmi vostro complice> Da Mediterraneo.
Inferno,Canto III,verso 51 Virgilio dice.........
rcc.roberto



[pagine pubblicate]

postato il:
12.02.2023, alle ore 19:28
Forse per quello che ti ho scritto sopra
FrancoGual



[pagine pubblicate]

postato il:
12.02.2023, alle ore 20:23
rcc.roberto:
Forse per quello che ti ho scritto sopra

Quella operazione, di prendere un valore e trasformarlo in stringa da dare in pasto al comando visualizza lo fa la riga precedente.
Allego la parte in oggetto. Cambiando gli apici con accento, ma per chi è del campo lo capirà.
 u8g.drawStr( 5, 13, 'Temp');       // do this for temperature
  dtostrf(tempC, 3, 1, temp_string);
  u8g.drawStr(50,13, temp_string);
  u8g.drawStr(105,13, '*C');  


In pratica, da quel poco che ho capito, dtostrf prende la variabile tempC preleva 3 cifre intere 1 decimale e la spara in temp_string e poi drawStr nel posto indicato scrive la temperatura (Variabile tempC)
Penso.



Anche il viaggio più lungo inizia con un piccolo passo.
Si vis pacem, para bellum!!!
Mark Zuckerberg ha reso suoi schiavi milioni di persone senza che se ne rendessero conto. F.G.
<Avete vinto voi,ma almeno non riuscirete a considerarmi vostro complice> Da Mediterraneo.
Inferno,Canto III,verso 51 Virgilio dice.........
primok




una ogni 100 livelli
una ogni 10 livelli


postato il:
12.02.2023, alle ore 20:42
FrancoGual:
rcc.roberto:
Forse per quello che ti ho scritto sopra

Quella operazione, di prendere un valore e trasformarlo in stringa da dare in pasto al comando visualizza lo fa la riga precedente.
Allego la parte in oggetto. Cambiando gli apici con accento, ma per chi è del campo lo capirà.
 u8g.drawStr( 5, 13, 'Temp');       // do this for temperature
  dtostrf(tempC, 3, 1, temp_string);
  u8g.drawStr(50,13, temp_string);
  u8g.drawStr(105,13, '*C');  


In pratica, da quel poco che ho capito, dtostrf prende la variabile tempC preleva 3 cifre intere 1 decimale e la spara in temp_string e poi drawStr nel posto indicato scrive la temperatura (Variabile tempC)
Penso.


Sostituisci la funzione con quella postata da me in soluzione e prova.



Più piccola è la mente più grande è la presunzione.
FrancoGual



[pagine pubblicate]

postato il:
13.02.2023, alle ore 22:12
Aggiornamento, ovvio non posso allegare il codice, che ora va, male ma va.
 Temp: 16.32°C Humidity: 49.30% RH Pressure: 1009.24 MilliBar 
tempS: 16°C HumidityS: 49.0% RH PressureS: 59.0 MilliBarS: 
tempS: 16.0°C HumidityF: 49% RH PressureF: 241 MilliBarF: 
 

Spiego.
Temp Humidity e Pressure sono i valori inviati dal sensore
tempS HumidityS e PressureS sono gli stessi valori scritti in Stringa o quella che deve essere visualizzata.
TempF HumidityF e PressureF sono le stesse variabili scritte in float.
In pratica mando a monitor le varie varibili, che appunto VARIANO, a cacchio loro.
Questa è la parte di codice che maneggia le variabili in oggetto.
Alla temperature e umidità elimina i decimali e la pressione mette valori a cacchio di cane!
// convert floats into char u8g strings    
  u8g.drawStr( 5, 13, 'Temp');       // do this for temperature
  dtostrf(tempC, 3, 1, temp_string);
  u8g.drawStr(50,13, temp_string);
  u8g.drawStr(105,13, '*C'); 

  u8g.drawStr(5,35, 'Um');             // do this for humidity
  dtostrf(hum_float, 3, 1, hum_string);
  u8g.drawStr(50,35, hum_string);
  u8g.drawStr(110,35, '%'); 
  
 u8g.drawStr(5,56, 'Pres');             // do this for pressure
  dtostrf(pres_float, 1, 1, pres_string);
  u8g.drawStr(50,56, pres_string);
  u8g.drawStr(110,56, 'mB');             



Anche il viaggio più lungo inizia con un piccolo passo.
Si vis pacem, para bellum!!!
Mark Zuckerberg ha reso suoi schiavi milioni di persone senza che se ne rendessero conto. F.G.
<Avete vinto voi,ma almeno non riuscirete a considerarmi vostro complice> Da Mediterraneo.
Inferno,Canto III,verso 51 Virgilio dice.........
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale