sexta-feira, 7 de agosto de 2015

Comunicação entre dois Arduinos

Nesse tutorial trago uma solução para quando apenas um arduino não é suficiente para determinadas aplicações, que exigem de mais portas ou necessitam de um processamento dividido para as funcionalidades do hardware.
Logo é possível utilizar uma conexão entre dois ou mais arduinos e fazê-los trocar informações.


Para fazer isso é necessário, obviamente ter dois ou mais arduinos (segundo algumas pesquisas, é possivel conectar até 112 deles, mas não possuo tantos para fazer essa experiência).




O primeiro passo é bem simples (na realidade todos). Basta interligar os GNDs das placas.
O mesmo deve ser feito com as portas analógicas 4 e 5 de cada arduino, cada uma à sua respectiva na outra placa, como mostra o esquema abaixo:



Vamos à parte da codificação. Começando pelo arduino responsável por enviar as informações. O código é bem simples, utilizando a biblioteca Wire.
Neste exemplo há a verificação se o número (x) é par antes de ser enviado, apenas para efeito de testes.

#include <Wire.h>
 
void setup()
{
 Wire.begin();
}
 
byte x = 0;
 
void loop()
{
 if(x%2==0)
 {
 sendMessage(x);
 }
 x++;
 delay(500);
}
 
void sendMessage(int val)
{
 Wire.beginTransmission(4);
 Wire.write(val);
 Wire.endTransmission();
}


O segundo código, que fica no arduino responsável por receber as informações, é o que está logo abaixo. Nele há uma rotina de interrupção para quando os dados são recebidos. Os dados podem ser verificados no monitor Serial do arduino receptor.

#include <Wire.h>
void setup()
{
 Wire.begin(4);
 Wire.onReceive(receiveEvent);
 Serial.begin(9600);
}
void loop()
{
 delay(100);
}
void receiveEvent(int howMany)
{
 int x = Wire.read();
 Serial.println(x); 
}


Agora basta a criatividade de cada um para utilizar deste tutorial e fazer diversas aplicações ‘divididas’ entre controladores.
← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário