Trasmissione tra 2 schede Arduino

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!

hai collegato TX con RX e viceversa e la massa dei 2 Arduini?
Ciao Uwe

Azz... ho collegato TX con RX e viceversa, ma non la massa... :blush:

Una domanda, posso creare una porta seriale sw anche sulla Arduino UNO ed usare quella invece di quella hw (pin 0 e 1)?
In pratica lavorerei su 2 porte sw, una su ogni scheda.

Piero78:
Azz... ho collegato TX con RX e viceversa, ma non la massa... :blush:

Una domanda, posso creare una porta seriale sw anche sulla Arduino UNO ed usare quella invece di quella hw (pin 0 e 1)?
In pratica lavorerei su 2 porte sw, una su ogni scheda.

Certo che puoi, usando la SoftwareSerial:

Piero78:
Azz... ho collegato TX con RX e viceversa, ma non la massa... :blush:

centrato e affondato.
Buon lavoro ciao Uwe

Problema risolto, grazie!

aggiugi la dicitura "risolto" nel titolo

Ciao, ma nel tuo esperimento da quanto ho capito hai collegato fisicamente i piedini delle due schede? Giusto?