Fala galera blza?

Estou quebrando a cabeça aqui numa comunicação que estou tentando fazer, vamos ver se alguem já passou por isso e pode me dar uma luz...

Tenho o Mega (Wire Master) com um Ethernet Shield (Webserver rodando). E um UNO (Ligado 4 Dimmers AC e 4 Potenciômetros) como Wire Slave 2.

No Mega eu recebo comandos via web (Atraves de Socks PHP).

Eu leio esses comandos e faço um teste neles (Switch, case).

Caso eu solicite para ligar um Dimmer, o Mega manda via Wire uma string informando qual dimmer ligar e com qual potencia para o UNO.

O uno por sua vez, faz a leitura.

Funciona...

Eu mando via web um 1° Comando para ligar o Dimmer2 (Por Exemplo).

Em seguida mando via web um 2° comando, para ligar o Dimmer4 (Por Exemplo).

Quando tento enviar o 3° ou 4° ou 5° comando (pode ser para ligar ou mudar intensidade ou desligar) meu Mega trava e não faz mais nada.

O Uno continua rodando legal.

Já fiz e refiz o código de envio...

Mas sempre na mesma, os 2 primeiros comandos vão legal e a partir do 3° não, e com várias tentativas o Mega trava.

Alguem já passou por isso?

Abraços

Exibições: 2064

Responder esta

Respostas a este tópico

Só um exemplo de como estou enviando:

Após fazer os testes e ver o que o comando esta pedindo eu mando pro Uno assim (programação para testes ainda)

char comando[3];
comando[0] = '4'; //Dimmer que ele deve ligar no Uno
comando[1] = 2; //1° Caracter da potencia
comando[2] = 5; //2° Caracter da potencia
comando[3] = 5; //3° Caracter da potencia

//Forma um char assim: 4255 (onde 255 é a potencia máxima da minha lampada 4 do Uno)

Wire.beginTransmission(2); //Comunica com Uno que é o Slave 2.
Wire.write(comando); // "Escreve" o comando para ele.
Wire.endTransmission(2); //Encerra a transmissão.

Abraços

Cara, não sei porque mas a biblioteca WIRE para mim sempre trava, não encontrei ainda o motivo, tenta usar a versão nova da IDE talvez tenham consertado.

Para contornar isso, eu inclui um watchdog, que reinicia após 4s sem resposta.

Mas que M hein?

Estou baixando a IDE Beta 1.5.2 para ver se melhora... já estou usando a 1.0.5.

Qual outra maneira de comunicar os 2 Arduinos se não for por Wire ou Serial (Ambos estão travando o mega no meu caso).?!?

Abraços

Galera, tem alguma estranha no meu mega, ou não estou sabendo programar...

Recebo todos os outros comandos locais via ethernet shield sem nenhum travamento...

Quando eu recebo um comando que faz algum tipo de comunicação com o outro arduino (já testei via Serial1 e I2C) o mega trava após 1 ou 2 comandos enviados.

Percebi que após enviar 1 ou 2 comandos (via Serial1 ou I2C), o mega esta travando antes de entrar no Switch/Case para verificações do novo comando.

Como falei, Isso não ocorre quando envio comandos que não fazem comunicação, ou seja, comandos que apenas mandam ligar ou desligar pinos do próprio mega.

Ou seja, é alguma coisa que após realizar a comunicação via Serial1 ou Wire faz o arduino travar.

Já estou de cabeça quente com isso... esta me tirando o sono, o projeto ja esta empacado nisso faz 2 dias =/

Se alguém tiver uma luz!

Abraços e obrigado desde já!

O mega envia e recebe pelo i2C?

O mega por enquanto só esta enviando... mas o proximo passo será receber kkk

Tiago eu to vendo no exemplo que vc declarou um array de char com 3 posições mas vc usa 4, será que o problema não é esse?

Cara, consegui... 

Era erro de lógica bem dizer...

No meu Switch/Case, eu mandava ele conectar com o uno em cada case;

Mudei e fiz uma conexão só no final... nos cases eu recebo apenas uma flag do comando e no final mando...

Estou testando faz 1h +- e nada de travar o mega.

Alem de incluir depois de Wire.begin(); o seguinte:

TWBR = 12;

Pelo que estava lendo isso acelera a conexão I2C para até 400kHz segundo tabela constante nesse site (muito bom por sinal):

http://www.gammon.com.au/forum/?id=10896


Abraços e valeu pela ajuda galera!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço