LI FI SISTEMA non funziona(li-fi system doesn't work)

non funziona aiutatemi.
C'è un problema con il software del ricevitore. Il mio prof. ha detto di abbassare il baud rate ma non funziona lo stesso. Il progetto consiste nel trasmettere tramite la seriale del trasmettitore(led) una stringa al ricevitore. Ma ricevo solo caratteri strani e incorretti.

Buongiorno e benvenuto, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà, quindi ti consiglio di farla al più presto. :wink:

Già leggendo questo nell'articolo che hai linkato:

Steps:

1. The transmitter code will be uploaded into Arduino Transmitter while
the receiver code will be uploaded into Arduino Trasnmitter.

vengono dei dubbi.

Altri dubbi poi qui:

3. Connect Arduino receiver with the photodiode, the DO pin is connected to D0 pin on Arduino Nano (it is written as RX0)

D0 è il pin di ricezione della seriale del Nano (RX0 appunto) ed è riservato alla connessione PC->Nano. Il pin D1 è riservato alla connessione NAno->PC. Prova a cambiare pin, ad es. D2.

Se non sei obbligato a seguire quel progetto, prova a vedere qualche esempio della libreria PJON, che implementa (anche) la comunicazione fra Arduini. Penso però che il prof volesse che tu capissi il protocollo che sta dietro quel modo seriale di comunicazione.

Ciao,
P.

Il codice di ricezione non si vede. Deve ovviamente essere adatto e speculare al tipo di trasmissione in arrivo, che vedo essere prodotta via software con bit della durata di 4ms con duty cycle del 25 o 75% (1ms o 3ms). Per riottenere qualcosa di sensato da questi bit bisogna ricomporli fino a ottenere il byte di partenza.

Il baud rate si riferisce alla comunicazione PC←→Arduino, per non rischiare di saturare il buffer di ricezione dovrebbe essere basso quanto la trasmissione ottica... 40ms a byte, sotto i 250 bit/s.

il codice del ricevitore è questo:
const int selangmasa=1;
int a[7];

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  if(digitalRead(0)==LOW)
  {
  	for (int i=0;i<7;i++)
  	{ 
      while(digitalRead(0)!=LOW);
      delay(2*selangmasa);
      a[i]=!digitalRead(0);
   		delay(2*selangmasa);
   	}
  	delay(4*selangmasa);
  	int m=decimal(a);
    char l= char(m);
  	Serial.println(l);
  }
}

int decimal(int c[])
{
  int i, j=0 , decimal=0, temp;
  for(i=6;i>=0;i--)
  {
  	temp=c[i];
   	for(int m=0;m<j;m++) 
    temp=temp*2;
    decimal=decimal +temp;
    j++;
  }
 	return decimal;
}

@jp200126 : In conformità al REGOLAMENTO, fosse anche per una sola riga, il codice va racchiuso negli appositi tag ... :roll_eyes:

... cortesemente, quindi, edita il tuo post più sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice.

Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac all'intero del IDE). Grazie. :slight_smile:

Guglielmo