Go Down

Topic: Problema velocità di comunicazione (Read 505 times) previous topic - next topic

Sasso_Analogico

#15
Sep 16, 2018, 08:59 pm Last Edit: Sep 16, 2018, 09:02 pm by Sasso_Analogico
al millesimo di secondo?
considera che il ricevitore parte comunque dopo aver ricevuto il pin alto inviato dal primo :)

e comunque per comunicare così ci vuole un protocollo di scambio

ma scusa perchè non uni la softwareSerial con cui puoi usare qualsiasi pin tu voglia ed è gia fornita di protocolli funzionanti?...
Probabilmente sarebbe meglio così. Peccato! Mi sarebbe piaciuto fare il programma da 0 senza usare nessuna libreria scritta da altri.

Patrick_M

#16
Sep 16, 2018, 09:09 pm Last Edit: Sep 16, 2018, 09:10 pm by Patrick_M
:D anche arduino è un circuito fatto da altri, allora perchè non partire dal chip e fare tutto :D


tieni presente che se ne hai voglia, la libreria te la studi, dopodichè ti crei il tuo corrispondente che fa quello che vuoi tu e come lo vuoi tu... Però è impegnativo ;)
per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)

Sasso_Analogico

#17
Sep 16, 2018, 09:17 pm Last Edit: Sep 16, 2018, 09:18 pm by Sasso_Analogico
Va bene dai, allora mi metto a studiare =D . Grazie a tutti!

Claudio_FF

#18
Sep 16, 2018, 11:47 pm Last Edit: Sep 16, 2018, 11:51 pm by Claudio_FF
Quote from: Sasso_Analogico
....Il programma del Ric parte quando sul pin A0 si riceve un HIGH (ovvero appena premo il pulsante sul Tras), per poi entrare sul "while infinito".
Ci sono due errori fondamentali.
Il primo è aver fatto coincidere il momento in cui Arduino-A cambia il bit trasmesso, con lo stesso momento in cui Arduino-B campiona l'ingresso (la lettura dell'ingresso sul ricevitore dovrebbe avvenire a metà del tempo tra due variazioni dei bit trasmessi). Il secondo è essersi affidati a delay per un tempo infinito (anche due Arduini identici prima o poi si sfasano).

Serve sempre una sincronizzazione. O realizzata con i tempi e i livelli (come sulla seriale), o con appositi segnali aggiuntivi (come il clock del bus i2c).
* * * *    if non è un ciclo   * * * *
* * * Una domanda ben posta è già mezza risposta. * * *

gpb01

#19
Sep 17, 2018, 06:28 am Last Edit: Sep 17, 2018, 06:29 am by gpb01
Serve sempre una sincronizzazione. O realizzata con i tempi e i livelli (come sulla seriale), o con appositi segnali aggiuntivi (come il clock del bus i2c).
>Sasso_Analogico: Esattamente come dice Claudio_FF ... sia I2C che SPI, che trasferiscono i dati su un pin, comunque ne usano un'altro per dare il clock, altrimenti, senza clock, devi inventarti tu un protocollo asincrono con tanto di bit di start e di stop ... in ciascuno dei due casi, stai reinventando l'acqua calda, quindi tanto vale che usi un tipo di trasferimento standard !

Con la seriale puoi permetterti di distanziare le due schede un po' di più, con I2C o SPI, arrivi al massimo a 10/15 cm ... vedi tu le tue esigenze.

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

uwefed

c'é un altro errore grave:
int mem[9];
crei un array di 9 elementi e ne usi 10:
for (int k=0; k<=9; k++){

Probabilmente sarebbe meglio così. Peccato! Mi sarebbe piaciuto fare il programma da 0 senza usare nessuna libreria scritta da altri.
Quando saprai programmare e dopo che hai studiato le varie codifiche di trasmissione potrai farlo e non con la conoscenza da principiante pensare di saper programmare meglio di chi lo sa.

Ciao Uwe

Sasso_Analogico

c'é un altro errore grave:
int mem[9];
crei un array di 9 elementi e ne usi 10:
for (int k=0; k<=9; k++){
Scusa ma è da qualche mese che non prendevo in mano c++ e in testa mi era rimasto che se inizializzo un array per esempio mem[9] gli slot che ha sono 10, partendo dallo 0, 1,....9, mi sono sbagliato, perdonami!

Quando saprai programmare e dopo che hai studiato le varie codifiche di trasmissione potrai farlo e non con la conoscenza da principiante pensare di saper programmare meglio di chi lo sa.

Ciao Uwe

Comunque grazie per questa "frecciatina" gratuita, visto che mi sembra di essere stato molto umile (sapendo di non essere bravo quanto voi); non intendevo assolutamente mettermi sopra a chi ha scritto quella libreria!

Per quelli che hanno trovato altri errori, scusate ma quei programmi gli ho riscritti in 5 min solo per postarli nel forum (senza postare quelli completi che erano un casino...=D).

Scusate e grazie ancora per la dritta!

Claudio_FF

Quote from: Sasso_Analogico
quei programmi gli ho riscritti in 5 min solo per postarli nel forum (senza postare quelli completi che erano un casino...=D).
Ok, però noi si può ragionare solo su quello che vediamo, mica su quello che non viene mostrato  :)
* * * *    if non è un ciclo   * * * *
* * * Una domanda ben posta è già mezza risposta. * * *

uwefed

Un array da nove elementi per esempio mem[9] va da mem[0] a mem[8].

Studiati quali protocolli di trasmissione sicnroni o asincroni ci sono e scriviti il Tuo interfavvia usando uno di questi. Ci sono protocolli anche con 1 collengamento segnale (oltra la massa comune) che si autosinconizzano.

Ciao Uwe


Go Up