Buongiorno, dopo aver risolto il problema del display lcd usando il vecchio IDE di Arduino per il caricamento dello Sketch ora mi trovo a dover compilare per bene lo Sketch per il funzionamento della consolle.
Innanzitutto specifico che ho creato l'atmega 328 in standalone con quarzo da 16Mhz;
Sul pin 5 eseguirò la lettura del contagiri, dal motore al 74hc14n grazie alla libreria freqcounter e al suo esempio;
fin qui tutto mi riesce alla perfezione(almeno mi sembra);
sui pin analogici 0 e 1 con un partitore di tensione da 22K e 10K voglio leggere la tensione delle due batterie;
sul pin analogico 2 tra sensore(galleggiante) carburante 0-190 ohm e resistenza da 150 ohm leggere la quantità di carburante.
Ora prima di passare alla realizzazione dello sketch volevo chiedere:
All'azionamento della chiave prima di mettere in moto volevo fosse effettuato un controllo sui tre parametri analogici, benzina a bordo e valori batterie da visualizzare sul display, dopo di ciò il display si deve portare in fase di utilizzo normale, visualizzare i giri e il carburante, quest'operazione è da effettuare nel setup prima che inizi il loop?? soprattutto è possibile nel setup far effettuare queste operazioni??
Altra criticità mentale che ho è se sia il caso di creare un array di valori per il sensore carburante, vorrei creare una barra di 16 o meno quadratini per indicare la quantità(meno se riesco ad inserire sul display 16x2 dei simboli per indicare il pieno, mezzo pieno e così via)...operazione per me al quanto impossibile se non con un vostro aiuto viste le mie scarsissime conoscenze.
In attesa di risposte vi saluto nuovamente
enricode:
All'azionamento della chiave prima di mettere in moto volevo fosse effettuato un controllo sui tre parametri analogici, benzina a bordo e valori batterie da visualizzare sul display, dopo di ciò il display si deve portare in fase di utilizzo normale, visualizzare i giri e il carburante, quest'operazione è da effettuare nel setup prima che inizi il loop?? soprattutto è possibile nel setup far effettuare queste operazioni??
... in realtà, a parte il fatto che la funzione setup() viene richiamata UNA sola volta all'inizio e successivamente viene richiamata in continuazione la funzione loop(), NON ci sono differenze.
Puoi mettere il codice dove vuoi, sempre tenendo in mente quanto suddetto.
Quindi ci sta bene nel setup che mi legga i tre valori, dopo un bel clear del display e si prepara per la sola indicazione giri motore e carburante..
per quello che attiene il carburante?? conviene che io mi faccia una lettura del galleggiante a secco per misurare i centimetri come quanto sarà immerso nel serbatoio e quindi creare un array di questi valori??
enricode:
per quello che attiene il carburante?? conviene che io mi faccia una lettura del galleggiante a secco per misurare i centimetri come quanto sarà immerso nel serbatoio e quindi creare un array di questi valori??
Se usi un sensore (gallegante) del quale non hai riferimenti di calibrazione ... ovviamente devi farla tu ...
... lo poni a varie altezze, ti salvi i valori ritornati e ti sei fatto la tua calibrazione
Si in effetti creando il partitore di tensione, visto che il galleggiante ha solo 2 fili, farò leggere in analogico il valore.
Immaginando che il valore possa traballare converrebbe creare l'array
non riesco a scrivere le parentesi quadre
fuel 0
fuel 1
fuel 2
fuel 3
fuel 4
potrei impostare cos=
non riesco pi\ a scrivere con la tastiera non capisco cosa sia successo
... staccala e riattaccala così il PC la riconosce di nuovo
Si, ovviamente creerai dei valori estremi ed intermedi ... vuoto, 1/3, 1/2, 2/3, pieno ... e li salvi in un array di 5 elementi (se entri su un analog ti basta un array di 5 interi ... tanto hai valori da 0 a 1023).
Poi quando leggi confronti il valore letto con quelli negli array cercando quale è minore di quello letto e quale è maggiore, così capisci dove stai e puoi aggiornare il tuo indicatore.
Buongiorno, finalmente ieri sera ho avuto modo di fare qualche saldatura e collegare il galleggiante del carburante... non sapendo di preciso come formulare un array e soprattutto come accorpare i risultati per stamparli su display mi son divertito a provare la funzione map, solo che ho scoperto che il galleggiante non restituisce valori proporzionali al suo spostamento ed ho effettuato delle misurazioni con il centimetro per vedere quando cambiava valore ed ecco il risultato
a 0 centimetri valore 1021
a 2 centimetri valore 879
a 3 centimetri valore 770
a 5 centimetri valore 716
a ..........
a 19 centimetri valore 476
dai 21 centimetri fino alla fine valore 448
ora volendo prendere 5 di questi valori potrei inserirli in un array
vuoto[0] uguale {1023, 950}
quarto[1] uguale {800, 600}
mezzo[2] uguale ......
ma adesso sono incapace di richiamare questo array per restituire un risultato.
ovviamente so che con una funzione analogRead(pin) faccio leggere il valore del galleggiante ma dopo come posso effettuare il paragone, soprattutto voglio creare un simbolo, il quadratino pieno che cresce o decresce a seconda del risultato.
Sono in panne
help me
P.S. per quello che riguarda la tastiera, la prima volta che stavo provando a scrivere esempio di quello che volevo fare, ho fatto una combinazione di tasti per cercare le parentesi graffe e adesso ho un macello e la tastiera non restituisce pi\ valori corretti. Non so proprio dove sbattere la testa
#define PIN_GALL A0
#define N_LEVELS 5
int levelBounds[N_LEVELS] = {448, 476, 716, 770, 879};
int getLevel () {
int i, l = analogRead (PIN_GALL);
for (i = 0; l >= levelBounds[i] && i < N_LEVELS; i++)
;
return i;
}
Ti ritorna un valore da 0 a N_LEVELS, dove 0 vuol dire vuoto e poi progressivamente sempre più pieno.
(Scritto al volo e non testato, se rimani a secco in mezzo al mare non mi assumo nessuna responsabilità :D)
Scusami ma non ho ancora provato il tuo metodo e non so quando lo proverò perchè non c'ho capito un granchè, e oltretutto mi piacerebbe imparare le cose dai miei esperimenti...
Stavo pensando invece se io facessi due array?? nel primo i valori letti dal galleggiante e nell'altro impostati da me i litri, come quale funzione posso farli richiamare??
Cerco di spiegarmi meglio, se il valore è 1021 il corrispondente sarà vuoto, se è 879 sarà 6, se è 770 9 e così via, dopo la funzione analogRead come posso far fare il confronte e stampare il valore del secondo array??