Olá a todos, existe alguma forma de conectar dois ou mais arduinos por fios, sem precisar usar modulos sem fio, Xbee, Infrared ou até RF?? Se existir podem me explicar como funciona? Como fazer?
Por exemplo, de um arduino eu aperto um botão e envia um código para outro e o outro recebe este código e acende um led...

Obrigado,

Exibições: 1546

Responder esta

Respostas a este tópico

Obrigado!

utilizando i2c para o master temos:

/*
* I2C_Master
* Echo Serial data to an I2C slave
*/
#include <Wire.h>
const int address = 4; //the address to be used by the communicating devices
void setup()
{
Wire.begin();
}
void loop()
{
char c;
if(Serial.available() > 0 )
{
// send the data
Wire.beginTransmission(address); // transmit to device
Wire.write(c);
Wire.endTransmission();
}
}

e para o slave temos:

#include <Wire.h>
const int address = 4; //the address to be used by the communicating devices
void setup()
{
Wire.begin(address); // join I2C bus using this address
Wire.onReceive(receiveEvent); // register event to handle requests
}
void loop()
{
// nothing here, all the work is done in receiveEvent
}
void receiveEvent(int howMany)
{
while(Wire.available() > 0)
{
char c = Wire.read(); // receive byte as a character
Serial.print(c); // echo
}
}

grave esses programas com a versao 1.5 do IDE do Arduino, pois as versoes  mais antigas tem mudanças nos comandos de el e escrever no barramento i2c.

/*
* I2C_Master
* Echo Serial data to an I2C slave
*/
#include <Wire.h>
const int address = 4; //the address to be used by the communicating devices
void setup()
{
Wire.begin();
}
void loop()
{
char c;
if(Serial.available() > 0 )
{
// send the data
Wire.beginTransmission(address); // transmit to device
Wire.write(c);
Wire.endTransmission();
}
}

e para o slave temos:

#include <Wire.h>
const int address = 4; //the address to be used by the communicating devices
void setup()
{
Wire.begin(address); // join I2C bus using this address
Wire.onReceive(receiveEvent); // register event to handle requests
}
void loop()
{
// nothing here, all the work is done in receiveEvent
}
void receiveEvent(int howMany)
{
while(Wire.available() > 0)
{
char c = Wire.read(); // receive byte as a character
Serial.print(c); // echo
}
}

grave esses programas com a versao 1.5 do IDE do Arduino, pois as versoes  mais antigas tem mudanças nos comandos de el e escrever no barramento i2c.

Lembrando que alem de I2C, tambem tem SPI e USART.

Esse link fornece uma analise comparativa entre SPI e I2C: http://www.ebah.com.br/content/ABAAAe7xoAL/barramento-serial-spi-i-c

Estou escrevendo um relatorio comparando uso de SPI e USART na comunicacao entre dois arduinos (ainda preciso melhorar, mas acho que ja ajuda).

E tenho tambem uns codigos simples, que precisam ser aprimorados, mas servem como base.

Qual comunicacao voce vai utilizar depende dos requisitos do projeto. Voce vai ter que analisar e concluir qual é a melhor opcao para seu caso especifico.

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço