Prezados. Meu problema parece simples mas não estou conseguindo resolver. Preciso mudar o estado de portas digitais via SERIAL pois utilizo modulo xbee.
Quando insiro caractere manualmente na serial, consigo normalemente mudar de HIGH para LOW e vice-versa.
Porem quando quem escreve na serial é meu sensor analógico isto não acontece. O estado das portas não modifica.
Pensei que fosse problemas com os Xbee mas quando testo direto no Arduino, sem o Xbee tampouco consigo.
Segue o codigo simplificado somente como exemplo do meu problema:

int ledPin = 13; // Set the pin to digital I/O
int valor_sensor = 0;
int captura_buffer = 0;

void setup(){
pinMode(ledPin, OUTPUT);
pinMode(A1, INPUT);//sensor pressão
Serial.begin(9600);
}

void loop()
{
digitalWrite(ledPin, HIGH);
valor_sensor = analogRead(A1);
Serial.println(valor_sensor);
captura_buffer = Serial.read(); // Lê byte do buffer serial;
while(Serial.available() > 0)
{
if (captura_buffer > 8)
{
digitalWrite(ledPin, LOW);
}

}

delay(1000);
}

Exibições: 58

Responder esta

Respostas a este tópico

Boa tarde Claudio!

Eu fiz um programa que envia dados para porta serial através do Java, e nesse caso quando o java envia um determinado numero para porta serial, o código no arduino interpreta o comando e aciona a respetiva saída digital, verifique se isso pode te ajudar, outra ideia é tentar levar a leitura do seu sensor analógico para o java e quando isso ocorrer ele manda dados para serial:

if(Serial.available() > 0){ //verifica se existe comunicação com a porta serial
      dado = Serial.read();//lê os dados da porta serial
      switch(dado){
         case 1:  //quando receber o digito "1" na serial
           digitalWrite(E0,HIGH); //a saída "E0" é acionada 
         break; 
         case 2: //quando receber o digito "2" na serial
           digitalWrite(E1,LOW); //a saída "E1" é desligada
         break;

Espero ter ajudado!

Abraço!

Att: Isaac Moreno

Obrigado pelo interesse. Vou testar e posto o resultado.

Não funciona.

Continua a mesma coisa. Se digito os dados manualmente no Serial monitor aciona as portas, poren se os dados provem do sensor nao funciona.

Oi COR, boa tarde.

Teste este code.

http://pastebin.com/zKFR9XiQ.

Um detalhe, você está testando o valor 8, mas vai receber valores ASCII pela serial, a não ser que

utilize ao invés de Serial.read(), use Serial.parseInt().

Rui

Não vi a diferença com meu codigo. Vou tentar com o Serial.parseInt() como vc sugere e posto o resultado. Obrigado pelo interesse.

Se você olhar com mais atenção, verá e entenderá a diferença.

Não funcionou Rui.

Continua igual. Se for digitado um inteiro consigo acionar as portas digitais pela serial poren se o inteiro e adicionado a serial via sensor nao funciona.

Boa noite Claudio ,de uma olhada nesse codigo e ve se e isso que voce quer,  esta em anexo.

ele apaga com valor do captura_buffer maior que 4 e acende com valor 4.

Anexos

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2017   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço