Go Down

Topic: Usare da solo un ATMEGA 328 programmato su Arduino uno (Read 1 time) previous topic - next topic

saverio13

Devo passare dalla chiromante, poiché per me è un brutto periodo (elettronicamente parlando).

Dopo aver ricontrollato la scheda e aggiunto i condensatori, mi aspettavo qualche piccolo segnale di vita.
Niente.
Ho fatto una nuova scheda pensando che mi sia sfuggito qualche cosa. Non funziona come prima.
Ho ricontrollato e copiato pari pari il circuito montato sul Arduino, ma ancoa noiente.

Mi è ritornato il dubbio che nello schema già postato, manchi qualche collegamento sul micro, oppure che bisogna programmare il 328 con un programma adatto che non sia "Arduino Uno".

Mi sembra impossibile che un probabile piccolo errore mi blocchi in questo modo.

Saverio.

Etemenanki

Hai controllato anche il quarzo ? ... come ho detto, magari piegando i pin li hai mandati a toccare il lato inferiore del case ... inoltre non bisognerebbe mai piegarli perche' il sigillo fra pin e case e' di vetro, e se il pin viene piegato ad angolo troppo vicino al sigillo, si puo rompere (e basta che il pin ruoti su se stesso anche di poco per distruggere la strisciolina di cristallo all'interno) ...

Poi, che valore hanno i due condensatori che hai messo sul cristallo ? ... a volte sono critici ...
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

saverio13

Hai controllato anche il quarzo ? ... come ho detto, magari piegando i pin li hai mandati a toccare il lato inferiore del case ... inoltre non bisognerebbe mai piegarli perche' il sigillo fra pin e case e' di vetro, e se il pin viene piegato ad angolo troppo vicino al sigillo, si puo rompere (e basta che il pin ruoti su se stesso anche di poco per distruggere la strisciolina di cristallo all'interno) ...

Poi, che valore hanno i due condensatori che hai messo sul cristallo ? ... a volte sono critici ...
Ho usato un nuovo quarzo e nella piegatura sono stato molto attento.
Ho cambiato i due condensatori e anziché da 22 pf ho provato metterne due da 18.
Non so più cosa provare.
In trasparenza, sul display, si vede un breve tremolio quando invio i dati, ma non visualizza nulla.

Saverio.

gpb01

Ma la prova del blink l'hai fatta ? ? ? ...
... perché invece di usate tanti "impicci" un LED è il sistema di debug più semplice ::)

Guglielmo
Search is Your friend ... or I am Your enemy !

saverio13

Ma la prova del blink l'hai fatta ? ? ? ...
... perché invece di usate tanti "impicci" un LED è il sistema di debug più semplice ::)

Guglielmo
Altra sorpresa (si fa per dire).
Con il solo blink senza collegamenti al display e ingresso tastiera, funziona.
Con display e tastiera collegata alla scheda, il blink non funziona.
Accertato questo, mi aspetta una nuova serie di prove scollegando filo per filo.

Saverio.

Etemenanki

Mi viene un dubbio ... cosa intendi con "tastiera" ? ... se sono pulsanti e non una tastiera I2C o roba simile, hai messo le resistenze di pulldown (o pullup, dipende dalla configurazione) ed i condensatori per il debounce, sui pin che fanno da ingressi ? ... o ti sei limitato a collegarci i fili dei tasti, trasformando il tutto in una grossa antenna captadisturbi ? ... ;)
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

saverio13

Mi viene un dubbio ... cosa intendi con "tastiera" ? ... se sono pulsanti e non una tastiera I2C o roba simile, hai messo le resistenze di pulldown (o pullup, dipende dalla configurazione) ed i condensatori per il debounce, sui pin che fanno da ingressi ? ... o ti sei limitato a collegarci i fili dei tasti, trasformando il tutto in una grossa antenna captadisturbi ? ... ;)
Ho detto che i dati vengono introdotti da tastiera, ma in realtà dalla tastiera, vengono processati da un micro e poi in uscita da quest'ultimo vengono inviati al 328 già convertiti in ASCII.

Ho rismontato tutti i collegamenti che vanno al 328 e al display e questa sera vedremo i risultati.

Saverio.

saverio13


 



Che dire. C'è l'abbiamo fatta. Grazie a tutti.

Dopo montaggi e smontaggi di collegamenti, ho provato a sostituire il display, il risultato si vede.
Il vecchio display aveva sempre funzionato ma in questo caso aveva fallito.

Ora "abbiamo" un nuovo problema.
Non sono riuscito a trovare come far andare nella seconda riga del display lo scritto.
Attualmente dopo i 16 caratteri, i caratteri successivi vengono nascosti e ricompaiono nella seconda riga dopo molti caratteri scritti.

Domanda, quale funzione devo attivare per andare a capo dopo il sedicesimo carattere?

Saverio.

pippo72

Ciao.

Non c'è nessuna funzione da richiamare.
Devi contare i caratteri e cambiare riga con setcursor.

Ciao
pippo72

saverio13

Grazie Pippo, mi hai dato una brutta notizia.  :)  :)

Saverio.
 

saverio13

Chiedo scusa al moderatore per aver aperto una nuova discussione sulla gestione del display, ma a mio parere, poiché l'argomento era diverso dal titolo di questa discussione, mi pareva più corretto aprire una nuova pagina specifica sull'argomento della gestione del display.

Saverio.

SukkoPera

Continuo a non capire dove sia il problema:
Code: [Select]
if (strlen (s) > 16) {
  lcd.setCursor (0, 1);
  lcd.print (s + 16);
 
  s[16] = '\0';
}

lcd.setCursor (0, 0);
lcd.print (s);


Sono andato un po' a caso, non ricordo bene le funzioni della libreria, ma dovresti capire qual è l'idea di fondo.
Make your Sega MegaDrive/Genesis region-free with Arduino! https://goo.gl/X7zBcq

Guida rapida a ESP8266: https://goo.gl/kzh62E

gpb01

... mi pareva più corretto aprire una nuova pagina specifica sull'argomento della gestione del display.
... certo, peccato che la domanda l'avevi già posta due post prima ed avessi già ricevuto la risposta:smiley-evil:

Consiglio, prenditi il datasheet del HD44780 (... tanto quei display sono tutti compatibli) e studiatelo, troverai sia la risposta corretta al tuo dubbo (... e che ti farà capire come funzionano quelli a 4 righe), sia tante altre belle cosette ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

saverio13

Consiglio, prenditi il datasheet del HD44780 (... tanto quei display sono tutti compatibli) e studiatelo, troverai sia la risposta corretta al tuo dubbo (... e che ti farà capire come funzionano quelli a 4 righe), sia tante altre belle cosette ;)

Guglielmo
Per Guglielmo.
Peccato che il datasheet è scritto in inglese e con questa lingua zoppico parecchio. Comunque forse qualcosa ne ricaverò.

Per SukkoPera.
Voglio ricordare che solo da qualche settimana mi sono avvicinato al linguaggio di Arduino e non conosco tutte le sue istruzioni.

Vediamo se so interpretare il tuo listato.

------------------------------
if (strlen (s) > 16) {
  lcd.setCursor (0, 1);
  lcd.print (s + 16);
 
  s[16] = '\0';
}

lcd.setCursor (0, 0);
lcd.print (s);
------------------------------

"strlen"  è il nome di una striga.
"(s)"è il numero di caratteri.
 
Quindi se il numero di caratteri di "strlen" è maggior di 16, porta il cursore a capo nella seconda riga del display e continua per altri 16 caratteri.

"s[16] = '\0';" questa riga non l'ho ben capita.

se anche la seconda riga è completa, riporta il cursore nella prima riga del display a capo riga.

"lcd.print (s);"  continua a stampare i caratteri.

Abbi pazienza per la mia poca conoscenza del linguaggio, ma questa righe le devo inserire in un breve programmino (che già funziona) che legge l'uscita di una porta parallela.

Saverio.






gpb01

Per Guglielmo.
Peccato che il datasheet è scritto in inglese e con questa lingua zoppico parecchio. Comunque forse qualcosa ne ricaverò.
Purtroppo scordati di fare qualsiasi cosa di un po' più serio in questo campo senza almeno riuscire a leggere i documenti in Inglese ... ::)


"strlen"  è il nome di una striga.
No, strlen() è una funzione che fa parte della libreria AVR libc e che trovi in <string.h>. Ti ritorna la lunghezza in caratteri della stringa che tu gli passi tra parentesi ;)

Guglielmo

P.S.: AVR libc è SEMPRE inclusa nell'IDE e quindi puoi usare tutte le comodissime funzioni che li trovi ;)
Search is Your friend ... or I am Your enemy !

Go Up