Mi spiegate come far leggere ad Arduino un dato seriale e...

Vorrei qualche esempio su come leggere un dato seriale da 8 ,16 o 32 bit , come fare per inviarlo alla eeprom esterna e magari visualizzarlo nel display lcd .

Chiedo troppo ?
Nb. sè qualche anima buona mi vuole aiutare lo faccia aggiungendo qualche commento senza mandarmi su qualche link incomprensibile.

Ciao Salvo C.

Non stai chiedendo troppo ma.... sono argomenti che sono stati trattati un sacco di volte.
Ti consiglierei prima di leggere le vecchie discussioni ed anche il reference del sito e poi, se non hai chiaro dei concetti, di chiedere le cose che non hai capito.

Queste vecchie discussioni dove le cerco .
Mi sento imbranato però devo capire dove reperire info.

Ciao Salvo C.

La eeprom memorizza 1 Byte da 8 bit. Devi suddividere i 16 o 32 bit in 2 o 4 da 8bit e scriverle uno dopo l' altra sul eeprom.

Cerca su google "arduino 2 byte eeprom memorizzare"
e trovi:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1293582211
e tanti altri

Ciao Uwe

Purtroppo si è verificato quello che temevo , è possibile che voi non abbiate uno stretch pronto già commentato da passare oppure
buttate giù due righe .
Forse io sbaglio a fare richieste "impegnative" sè vi limitate solo a fare segnalazioni allora e finita , non apprenderò mai, io ho dei limiti nella programmazione ma non posso stare dietro al solito esempio come accendere un led, ho bisogno anche di quache esempio più articolato però commentato, questo è il forum giusto? e soprattutto voi siete cosi disposti a darmi un supporto tecnico?

Ciao Salvo C.

facciamo così, tu provaci, se non funziona posta il codice e l'errore che noi proviamo a sistemarlo.

Altrimenti anche con la pappa pronta non imparerai mai :slight_smile:

se invece vuoi la pappa pronta chiamami in privato che ci accordiamo sul prezzo $)

Lesto di nome e di fatto ? :wink:
Hai passato la fase ludica mi sembra onesto mettere del mio anche sè avrei preferito partire da un listato già organizzato da chi sa programmare comunque domani posto qualche rigo .
Per puntualizzare solo il primo e il secondo rigo condivido del tuo intervento ,il terzo non lo prendo in considerazione sò che scherzi.
Mi diresti come aggiungere lo stretch al messaggio?

Ciao Salvo C.

Mi diresti come aggiungere lo stretch al messaggio?

C'è una icona con il simbolo del cancelletto (#) dentro, cliccaci su, compaiono due tag,
[cod.] qui il codice [/cod.], vedi che ho dovuto sostituire la e di code altrimenti non mostra i tag ma li attiva.
Puoi incollare il tuo codice preventivamente compiato posizionando il cursore tra i tag e premere Ctrl-V, incollare.

Ciao.

non scherzo mica tanto, se qualcuno mi paga il codice lo scrivo e rilascio tanto di fattura :grin:

tornando seri, questo è il comando che ti serve per mandare il dato alla eeeprom: http://arduino.cc/en/Serial/Write, qual'è la differenza tra la Serial.print()?

semplice, la print trasforma il dato binario (autoriconoscendo il tipo di dato grazie alla programmazione ad oggetti in particolare l'overloanding), e trasformandolo nell'equivalente STRINGA ASCII(la classica scritta leggibile agli esseri umani).

Ora tu dirai, machemmenefrega, io voglio leggere non scrivere.

e invece no. o meglio

dato che la read legge un byte alla volta (8bit), non effettua nessuna conversione, quindi se il valore ti arriva in ASCII o in binario la read se ne frega e te lo passa paro paro. Quindi deve essere il programma (penso lato PC) che invia il dato ad inviarlo in forma binaria! oppure, tra la tua serial.read() e la scrittura su eeprom, scrivi un codice che a partire dalla stringa ascii ricava il vecchio valore binario (effettua un cast).

Ora, come ricastare all'origine la stringa dipende unicamente da che tipo di dato era in partenza, quindi o lo sai a prori e scrivi il tuo bel codice, oppure ti inventi un metodo per inviare via seriale anche il tipo di dato che sta per arrivare.

spero di non averti incasinato invece che averti aiutato :slight_smile:

Grazie Mauro abbastanza chiaro.
Lesto sè ho capito bene invece di usare serial.Write dovrò usare il serial.print() e sè si dentro le parentesi ci sara il dato?

Ciao Salvo C.

Chiedo troppo ?

Secondo me si, o meglio spezza il problema in tante piccole parti ed affrontale una per volta, ..Fatto. :smiley:
Bene, partiamo con il trasferimento di dati, che avviene dal pc verso la scheda o in verso opposto.

Se è il pc ad inviare dati:
Devi scrivere il programma per ascoltare i dati inviati dal pc, e puoi usare l'oggetto Serial ed i suoi metodi.
Serial.write(), Serial.print() e serial.println(), mi pare ci siano altri metodi che fanno cose simili ma in modo leggermente differente. Tra gli esempi c'è ne uno che usa la seriale aprilo studialo e modificalo, in una sola parola sperimenta.

Se è arduino ad inviare dati:
Dovrai scrivere il programma nel tuo pc ed avviarlo nel tuo pc. Come si fà a ricevere e inviare dati via seriale da Pc dipende dal linguaggio che stai usando. A che ci sei ci dici anche quale sistema operativo è installato sul tuo pc.

Dai anche uno sgardo al linguaggio C++ leggendo questo link Dal C al C++ - Wikibooks, manuali e libri di testo liberi

Ciao.

Mauro nel mio caso con Arduino vorrei leggere un dato esterno proveniente da: un telecomando , un lettore RFID o altro , poterlo memorizzare in eeprom interna o esterna e visualizzare su lcd il tutto.

Ciao Salvo C.

Mauro nel mio caso con Arduino vorrei leggere un dato esterno proveniente da: un telecomando , un lettore RFID o altro , poterlo memorizzare in eeprom interna o esterna e visualizzare su lcd il tutto.

Ok, solo che un telecomando, un lettore RFID, ho un rivelatore di luce o altro, viene connesso in modo differente a seconda del dispositivo. Parlando di telecomando ad esempio mi viene in mente il telecomando della tv o del condizzionatore (visto il caldo). Questi emettono segnali nella frequenza dell'infrarosso e richiedo un diodo ricevitore connesso ad arduino, quindi la seriale non serve, ma può servire per qualora il dispositivo ricevitore è dotato di interfaccia seriale. Ci sono altri pin su arduino con il quale si può instaurare una comunicazione tra dispositivi dotati degli stessi pin, questi sono i pin che fanno capo al I2C che mi pare sono i PIN 4 e 5 di Arduino.

Per memorizzare un dato sulla eeprom interna c'è l'esempio presente nell'ide dove vedi che usa la seguente istruzione composta: EEPROM.write(addr, val)
Io ho capito che non hai alcuna conoscenza sui linguaggi di programmazione, e questa lacuna la devi almeno parzialmente colmare leggendo qualcosa che riguarda il Linguaggio C++, nello specifico le classi, in quanto EEPROM è una istanza (predefinita) di classe EEPROMClass che ha due metodi write e read. Devi anche colmare la lacuna sulle funzioni (simili ai metodi di classe) tra le parentesi puoi passare delle variabili (argomenti), quindi diciamo che la funzione riceve dei dati da elabrare. E possibile fare anche la cosa inversa, cioè ritornare un dato e solo uno.

Alla fine ho capito il perchè della tua richiesta di cancellazione del forum, purtroppo si deve sgobbare un bel pò, e pensa che Arduino semplifica molte cose.

Ciao.

@Salvo:
non vorrei fare il polemico ma ti quoto cosa ho scritto all'inizio:

sono argomenti che sono stati trattati un sacco di volte.
Ti consiglierei prima di leggere le vecchie discussioni ed anche il reference del sito e poi, se non hai chiaro dei concetti, di chiedere le cose che non hai capito.

E' ovvio che dalle tue richieste successive non abbia guardato. Nel reference ci sono i comandi per leggere e scrivere nella EEPROM interna.
http://www.arduino.cc/en/Reference/EEPROM

Poi non puoi rispondere così a chi ti dice che ti devi impegnare un pochino, sia a cercare che a metterci del tuo:

Forse io sbaglio a fare richieste "impegnative" sè vi limitate solo a fare segnalazioni allora e finita , non apprenderò mai, io ho dei limiti nella programmazione ma non posso stare dietro al solito esempio come accendere un led, ho bisogno anche di quache esempio più articolato però commentato, questo è il forum giusto? e soprattutto voi siete cosi disposti a darmi un supporto tecnico?

Non prendermi per pignolo, è solo che non ho visto impegno da parte tua.

Ok Mauro, fermo restando che l'ingresso Arduino deve essere opportunamente interfacciato ( e qui non ho problemi) per leggere un dato in
arrivo, per quanto riguarda il C++ e qui coinvolgo anche Leo che non trovo pignolo anzi e pertinente il tuo appunto , però credimi ho guardato tanti stretch anche quello che hai linkato il fatto è che non capisco come scorre la sequenza capito ?
Voi già esperti leggendo un rigo già intuite il resto, io invece no! hai capito perchè voglio consigli, dettagli e commenti sui file perchè sui libri del linguaggio C o C++ non ci sono almeno chè non mi consigliate un buon testo.

Ciao Salvo C.

Qual è il problema: leggere i dati in arrivo dal PC e memorizzarli nella EEPROM interna oppure spedire al PC i dati memorizzati su EEPROM?

Cmq devi prima esercitarti nelle due 2 cose singolarmente e poi unisci le cose.
Ricordati che la seriale lavora per byte, quindi un numero viene spedito, se non diversamente fatto, per singoli codici ASCII. Quindi 123 arriva come "1", "2", "3".
Se hai numeri che stanno nell'intervallo 0-255 puoi usare un byte. Così spedire il byte 100, che in ASCII sarebbe "@", corrisponde in realtà al numero 100. Puoi anche memorizzarlo direttamente nella EEPROM in questa forma.