Estou trabalhando em um projeto que inicialmente é para funcionar assim, vai ter dois Arduinos e os dois vão precisar se comunicar.
No Arduino Mestre pretendo colocar algumas funções como um display 16x2, um menu de configurações e no Arduino Escravo controlar um motor de passo com a Biblioteca AccelStepper.
Eu estava olhando alguns exemplos da comunicação I2C e Serial, mas pelos exemplos que ele envia somente uma variável.
Preciso que o Arduino Mestre envie as informações como velocidade, aceleração e deslocamento. No Arduino Escravo preciso ler as informações que citei acima e retornar para o Arduino Mestre quando o deslocamento foi concluído.
Consigo fazer isto com a Comunicação I2C ou Serial ou tem alguma outra forma de fazer?
Tags:
sugiro q estude essas funçoes
Estava olhando as funções write e read, e olhei em um exemplo que tem como transmitir três dados da seguinte forma 10, 30, 20.
Porém não encontrei como pegar no Arduino mestre o valor de três variáveis e colocar como no exemplo e no Arduino Escravo pegar o valor recebido e distribuir em outras três variáveis.
Oi DCK, bom dia.
post o seu code aqui, (mas como arquivo anexado), de ambos (Master e slave), par que possamos
avaliar e auxilia-lo na sua dificuldade.
Rui
Boa Tarde Rui,
Ainda não consegui fazer o código do Arduino Master e slave, pois não pretendia usar dois arduinos mas como no arduino master tem muitas funções quando vou acionar o motor de passo ele fica dando umas travadas.
Também não consegui fazer o código da comunicação serial, pois ainda não entendi como transferir e receber vários dados.
Se você tiver algum documento ou exemplo ou link para me passar fico agradecido.
OI DCK,
não entendi sua observação dizendo que não pretendia usar 2 arduinos,
pois o titulo do seu tópico refere-se exatamente à isto ! ??
Rui
É que desenvolvi todo o código somente com um arduino, mas quando cheguei na parte para acionar o motor de passo ele trava as vezes.
Por esse motivo que pretendo usar mais um arduino como slave somente para acionar o motor de passo.
Ou tem outra alternativa melhor?
Não seria mais facil resolver o problema do travamento?
Será que precisa de dois Arduinos?
Primeira questão :
- Qual a distância entre os dois Arduinos? isso vai definir o tipo de comunicação.
A distância é pequena, cerca de 10 cm.
Olá amigo,
Como vc utiliza serial para transmitir e receber, coloque tudo em uma string com os valores separados por virgula ou qualquer outra coisa:
String GetFromSerial()
{
String mySerialInput="";
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// read all the available characters
while (Serial.available() > 0) {
// Put char in string.
char str=Serial.read();
mySerialInput+=str;
}
}
return mySerialInput;
}
E depois no seu "master" separe na função que precise com:
if(inChar=='\n') {
aux=getValue(inBf, ',', 0);
int xval = aux.toInt();
aux=getValue(inBf, ',', 1);
int yval=aux.toInt();
aux=getValue(inBf, ',', 2);
int zval=aux.toInt();
aux=getValue(inBf, ',', 3);
int gval=aux.toInt();
String getValue(String data, char separator, int index)
{
int found = 0;
int strIndex[] = { 0, -1 };
int maxIndex = data.length()-1;
for(int i=0; i<=maxIndex && found<=index; i++){
if(data.charAt(i)==separator || i==maxIndex){
found++;
strIndex[0] = strIndex[1]+1;
strIndex[1] = (i == maxIndex) ? i+1 : i;
}
}
return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}
Olá Douglas,
Só uma pequena dica, você deseja trabalhar com blocos de dados, já pensou em trabalhar com matrizes (arrays) ?
Estou estudando comunicação sem fio entre arduinos atraves de xbees e nrf24l01 e no geral se utilizam matrizes para blocos de dados de carga valida.
Eu já consegui comunicação serial I2C entre dois Arduinos.
Veja esse exemplo:
http://labdegaragem.com/forum/topics/projeto-alarme-sem-fio-arduino...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por