Pages: [1]   Go Down
Author Topic: Generare due sequenze diverse  (Read 248 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti,
Sono appena entrato a far parte degli utilizzatori di arduino.
Vi chiedo se qualcuno è in grado di aiutarmi a generare due sequenze di bit su due piedini OUT diversi.
Queste sequenze devono essere indipendenti tra di loro e avere velocità diverse.
Sono riuscito a generare la prima sequenza mediante l'utilizzo di un array nel quale carico la sequenza di bit tra trasmettere e poi mediante un ciclo for cacciare dal piedino la sequenza una alla volta in serie alla velocità di 2 bit al secondo mediante l'utilizzo di DELAY. Con la seconda sequenza ho dei problemi: non riesco a sovrapporla temporalmente alla prima!!!!
Precisamente dovrei simulare uina comunicazione con tecnica spread spectrum del tipo Directory Sequence: la prima sequenza è ll'informazione da trasmettere mentre la seconda, molto più veloce, rappresenterebbe la sequenza di chip.
Vi ringrazio anticipatamente!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao, non sono molto esperto (anzi sono proprio principiante) ma mi sembra di aver letto che un problema di frequenze costanti e indipendenti dal programma era necessario x pilotare i led Ir e la soluzione erano alcune righe di codici e gli interrupt.

Da qualche parte c'è un lungo post "barriere infrarossi" o qualcosa di simile. Non sono certo che sia la soluzione x te ma gli darei una occhiata.

Ciao
Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao

il tuo problema principale è che delay() è una funzione bloccante... se si parla di tempi quali 2bit/s puoi tranquillamente utilizzare la funzione millis per capire quando sono passati 500ms e inviare il nuovo bit... egualmente per la seconda sequenza.

Qualcosa tipo:

loop {

  if(millis() - tempoUltimaSequenza1 > 500) {
    invioNuovoBit();
    tempoUltimaSequenza1 = millis();
  }
}
Logged

lucadentella.it

Pages: [1]   Go Up
Jump to: