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);
}
Tags:
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.
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por