Olá.
Estou com o seguinte problema, fiz um app que envia dados pro arduino através da comunicações bluetooth. Estou conseguindo receber e ler sem problemas os caracteres, porém, preciso ler números inteiros, quando envio algum número inteiro ele apresenta bugs, como: envio 1000 e recebe 1, ou algo aleatório. Ou seja, meu problema está somente na variável "temporizador" que deveria receber um número inteiro, mas não estou conseguindo utilizar o parseInt corretamente.
Obs.: Usei "Serial" no Loop e não "bluetooth" só para teste, mas está ocorrendo o mesmo com o bluetooth, lê e recebe os caracteres, mas não os inteiros.
// Definindo as portas RX e TX do ARDUINO
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(10, 11); // RX, TX.
// Fim
// Variáveis
int k1 = 9;
int k2 = 6;
int k3 = 5;
int k4 = 3;
int temporizador;
String comando;
// Fim
// Desliga tudo
void reset() {
digitalWrite(k1, LOW);
digitalWrite(k2, LOW);
digitalWrite(k3, LOW);
digitalWrite(k4, LOW);
}
// Fim
// Sentido horário
void ligar() {
digitalWrite(k1, HIGH);
digitalWrite(k2, HIGH);
delay(temporizador);
digitalWrite(k2, LOW);
digitalWrite(k3, HIGH);
}
// Fim
// Sentido anti-horário
void esquerda() {
digitalWrite(k4, HIGH);
digitalWrite(k2, HIGH);
delay(temporizador);
digitalWrite(k2, LOW);
digitalWrite(k3, HIGH);
}
// Fim
// Configurações Iniciais
void setup() {
bluetooth.begin(9600); // Serial definido por mim.
Serial.begin(9600); // Serial do prog. do arduino.
pinMode(k1, OUTPUT);
pinMode(k2, OUTPUT);
pinMode(k3, OUTPUT);
pinMode(k4, OUTPUT);
}
// Fim
// Laço que será executado
void loop() {
// Ler informação recebida
while (Serial.available())
{
char mode = Serial.read();
comando += mode;
Serial.write(mode);
temporizador = Serial.parseInt();
Serial.write(temporizador);
// Fim
if(mode == 'L' || mode == 'R')
{
reset();
ligar();
}
else if(mode == 'E')
{
reset();
esquerda();
}
else if(mode == 'S' || mode == 'D')
{
reset();
}
break;
}
}
// Fim