Ciao, sto cercando di effettuare una comunicazione tra 2 schede Arduino, nello specifico tra una Arduino UNO e una Romeo della DFRobot (basata su Arduino UNO).
La situazione è questa:
- La Arduino UNO è collegata ad una basetta dove sono presenti dei led da accendere per confermare l'avvenuta comunicazione.
Su di essa gira questo sketch:
const unsigned int ledPin = 13; // Settaggio del PIN a cui è connesso il led verde
const unsigned int ledPin2 = 12; // Settaggio del PIN a cui è connesso il led rosso
const unsigned int ledPin3 = 11; // Settaggio del PIN a cui è connesso il led giallo
void setup()
{
pinMode(ledPin, OUTPUT); // Settaggio del programma per lavorare in OUTPUT sul PIN 13
pinMode(ledPin2, OUTPUT); // Settaggio del programma per lavorare in OUTPUT sul PIN 12
pinMode(ledPin3, OUTPUT); // Settaggio del programma per lavorare in OUTPUT sul PIN 11
Serial.begin(9600); // Avvio la comunicazione seriale
}
void loop()
{
if (Serial.available()) // Se ci sono dati in lettura
{
int car = Serial.read(); // Leggo il dato
switch (car)
{
case '1':
digitalWrite(ledPin, HIGH); // Accendo il LED verde
break;
case '2':
digitalWrite(ledPin, LOW); // Spengo il LED verde
break;
case '3':
digitalWrite(ledPin2, HIGH); // Accendo il LED rosso
break;
case '4':
digitalWrite(ledPin2, LOW); // Spengo il LED rosso
break;
case '5':
digitalWrite(ledPin3, HIGH); // Accendo il LED giallo
break;
case '6':
digitalWrite(ledPin3, LOW); // Spengo il LED giallo
break;
}
}
}
- La Romeo è connessa alla Arduino UNO sfruttando la classe SoftSerial.h, attende comandi dal PC tramite la porta seriale hw e dovrebbe inviarli alla Arduino UNO.
Lo sketch che gira su di essa è il seguente:
#include <SoftwareSerial.h>
SoftwareSerial SerialeUNO(12, 13); // RX, TX 12(romeo)->1(UNO) 13(romeo)->0(UNO)
void setup()
{
Serial.begin(9600); // Seriale a cui è connesso il modulo bluetooth
SerialeUNO.begin(9600); // Seriale connessa all'Arduino UNO
}
void loop()
{
if (Serial.available()) // Se ci sono dati in lettura
{
int car = Serial.read(); // Leggo il dato
switch (car)
{
case '1':
SerialeUNO.print(1);
SerialeUNO.println();
//digitalWrite(ledPin, HIGH); // Accendo il LED verde
break;
case '2':
SerialeUNO.print("2");
SerialeUNO.println();
//digitalWrite(ledPin, LOW); // Spengo il LED verde
break;
case '3':
SerialeUNO.print("3");
SerialeUNO.println();
//digitalWrite(ledPin2, HIGH); // Accendo il LED rosso
break;
case '4':
SerialeUNO.print("4");
SerialeUNO.println();
//digitalWrite(ledPin2, LOW); // Spengo il LED rosso
break;
case '5':
SerialeUNO.print("5");
SerialeUNO.println();
//digitalWrite(ledPin3, HIGH); // Accendo il LED giallo
break;
case '6':
SerialeUNO.print("6");
SerialeUNO.println();
//digitalWrite(ledPin3, LOW); // Spengo il LED giallo
break;
}
}
}
Quando invio il comando dal PC verso la Romeo, il comando viene ricevuto, ma la comunicazione con la Arduino UNO non avviene.
Qualche suggerimento?
Grazie!