Pages: [1]   Go Down
Author Topic: Trasmissione tra 2 schede Arduino  (Read 854 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 80
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
Code:
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:
Code:
#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!
« Last Edit: January 25, 2013, 05:37:20 pm by Piero78 » Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 269
Posts: 21834
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Jr. Member
**
Karma: 0
Posts: 80
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Azz... ho collegato TX con RX e viceversa, ma non la massa...   smiley-red

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.
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 333
Posts: 22921
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Azz... ho collegato TX con RX e viceversa, ma non la massa...   smiley-red

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:
http://arduino.cc/en/Reference/SoftwareSerial
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 269
Posts: 21834
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Azz... ho collegato TX con RX e viceversa, ma non la massa...   smiley-red
centrato e affondato.
Buon lavoro ciao Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 80
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Problema risolto, grazie!
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

aggiugi la dicitura "risolto" nel titolo
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: