Il primo test di ricezione può essere effettuato con il "monitor seriale" del software Arduino, presente nel menù strumenti.
Successivamente potete usare i software forniti alla fine del tutorial oppure, realizzare un programma voi, con le librerie disponibili, che troverete a fine tutorial.
Un programma esempio per la trasmissione dei dati dei sensori ad ultrasuoni potrebbe essere il seguente:
//***************************************************************************
//Programma test per il robot Poor versione 2
//Setto le porte di uscita per le funzioni:
//Integrato trovato sulla macchinetta SM6135W oppure RX2-C
//Avanti PIN 10 ---- Integrato 10
//Indietro PIN 9 ---- Integrato 11
//Destra PIN 5 ---- Integrato 6
//Sinistra PIN 6 ---- Integrato 7
//Sensore ultrasuoni destra PIN 13
//Sensore ultrasuoni centro PIN 12
//Sensore ultrasuoni sinistra PIN 11
//Trigger ultrasuoni PIN 3
//
//Il protocollo di trasmissione delle informazioni inizia
//con un [ e termina con un ] divide i campi con un segno tilde |
//esempio [34|5|34]
//L'ordine dei sensori è sinistro cento destro
//
//Realizzato da: Daniele Loddo alias Ivotek
//Data: 04/03/2016
//Web: www.mignololab.org www.ivotek.it
//Email: info@mignololab.org ivotek@gmail.com
//***************************************************************************
//Dichiaro le variabili per utilizzare i nomi al posto dei numeri
//Spreco memoria ma il codice risulta leggibile al principiante
int Destra = 5;
int Sinistra = 6;
int Avanti = 10;
int Indietro = 9;
int UltrasDx = 13;
int UltrasSx = 11;
int UltrasCx = 12;
int UltrasTr = 3;
//Variabili per contenere i valori dei sensori
int vUltrasDx;
int vUltrasSx;
int vUltrasCx;
int vLineaCSx;
//Variabili per contenere il tempo dell'eco
long TempoechoDx;
long TempoechoSx;
long TempoechoCx;
//Variabili per la conversione in centimetri
long centimetriD;
long centimetriS;
long centimetriC;
void setup() {
//Apro la seriale a 9600
Serial.begin(9600);
//Setto i PIN come out o in per pilotare i motori e i sensori di linea del robot.
pinMode(Avanti,OUTPUT); //Setto la porta Avanti come uscita
pinMode(Indietro,OUTPUT); //Setto la porta Indietro come uscita
pinMode(Destra,OUTPUT); //Setto la porta Destra come uscita
pinMode(Sinistra,OUTPUT); //Setto la porta Sinistra come uscita
pinMode(UltrasDx, INPUT); //Setto la porta UltrasDx come ingresso
pinMode(UltrasSx, INPUT); //Setto la porta UltrasSx come ingresso
pinMode(UltrasCx, INPUT); //Setto la porta UltrasCx come ingresso
pinMode(UltrasTr, OUTPUT); //Setto la porta UltrasT come uscita
}
void loop() {
//Controllo se la seriale è connessa
while (!Serial) {;}
//Genero un impulso di 10 micro secondi per il trigger
digitalWrite(UltrasTr, LOW ); //Azzero l'uscita
delayMicroseconds(3); //Attendo 3 microsecondi
digitalWrite(UltrasTr, HIGH ); //Alzo il livello a uno
delayMicroseconds( 10 ); //Attendo 10 microsecondi
digitalWrite(UltrasTr, LOW ); //Azzero l'uscita
//Prelevo il tempo dai sensori
TempoechoDx = pulseIn( UltrasDx, HIGH,38000 );
delay(10);
//Genero un impulso di 10 micro secondi per il trigger
digitalWrite(UltrasTr, HIGH ); //Alzo il livello a uno
delayMicroseconds( 10 ); //Attendo 10 microsecondi
digitalWrite(UltrasTr, LOW ); //Azzero l'uscita
TempoechoSx = pulseIn( UltrasSx, HIGH,38000 );
delay(10);
//Genero un impulso di 10 micro secondi per il trigger
digitalWrite(UltrasTr, HIGH ); //Alzo il livello a uno
delayMicroseconds( 10 ); //Attendo 10 microsecondi
digitalWrite(UltrasTr, LOW ); //Azzero l'uscita
TempoechoCx = pulseIn( UltrasCx, HIGH,38000 );
//Converto il tempo in centimetri
centimetriD = 0.034 * TempoechoDx / 2;
centimetriS = 0.034 * TempoechoSx / 2;
centimetriC = 0.034 * TempoechoCx / 2;
//Invio i dati alla seriale usando un protocollo semplice
//*centrimetriS-centimetriC-centimetriD
Serial.print("[");
Serial.print(centimetriS);
Serial.print("|");
Serial.print(centimetriC);
Serial.print("|");
Serial.print(centimetriD);
Serial.print("]");
//Torno a capo per una facile lettura sul terminale
Serial.println("");
}
Aggiunta il link al corso Linux Uno su Udemy.
Aggiunto il tutorial per la realizzazionedi un Arcade con materiale di riciclo.