estou com um problema fiz um robô controlado por bluetooh, ele anda em tdas as direções mais qndo eu aciono o servo motor ele fica disparado ou parado se acionar o servo primeiro, tentei usar o millis mais não estou conseguido
Vê o exemplo blink without delay nos exemplos do Arduino.
Boa tarde,
Já tentou interrupção...?
//VARIAVEL QUE RECEBE DADOS BLUETOOTH
char comando;
#include <Servo.h> //BIBLIOTECA SERVO MOTOR
Servo myservo; //CONTROLA A POSIÇÃO NA VARIÁVEL "POS" DO SERVO MOTOR
int pos = 0; //VARIÁVEL PARA ARMAZENAR POSIÇÃO DO SERVO MOTOR
void setup()
{
//DEFINE O PINO DO SERVO MOTOR
myservo.attach(10);
//DEFININDO ENTRADAS E SAIDAS
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
//INICIANDO A SERIAL
Serial.begin(9600);
}
void loop()
{
//CONTROLE
while (Serial.available() > 0)
{ int x;
char comando = Serial.read();
switch (comando)
{
case 'B'://Tras
//Gira o Motor A e B no sentido horario
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
break;
case 'F': //frente
//Gira o Motor A e B no sentido anti-horario
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
break;
case 'L'://esquerda
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
break;
case 'R'://direita
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
break;
case 'S'://parado
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
break;
case 'U'://arma
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
for (pos = 180; pos >= 0; pos -= 0) {
myservo.write(pos);
break;
default:
break;
}
}
}
}
}