He mirado en varias webs y videos de YouTube pero no consigo entender como hacer para cambiar mis delays por millis en el código. Tengo entendido que para mi proyecto es mucho mejor usar millis y por eso quiero cambiarlo. El proyecto es un vehículo que se controla con arduino, un HC-06 y una app creada por mi en AppInventor. Tiene dos motores DC y dos servos para hacer un giro horizontal y otro vertical. Los servos no son del todo precisos y puede ser por el delay porque corriente suficiente tienen. En la parte que controla los motores no he colocado ningún delay pero yo creo que estaría bien ponerle algo de 100 milisegundos aprox. Si me explicáis cómo hacerlo lo agradezco un montón. Dejo por aquí el código:
/*
Ocupación pines
0 TX
1 RX
2 ECHO ULTRASONIDOS
3 izqA
4 TRIG ULTRASONIDOS
5 izqB
6 derA
7
8
9 derB
10 SERVO HORIZONTAL
11 SERVO VERTICAL
12
*/
#include <SoftwareSerial.h> // Libreria de Tx Rx Serial para Bluetooth
#include <Servo.h>// Incluye la Libreria Servo
int bluetoothTx = 0; // bluetooth tx al pin 0
int bluetoothRx = 1; // bluetooth rx al pin 1
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
int izqA = 3;
int izqB = 5;
int derA = 6;
int derB = 9;
int vel = 200; // Velocidad de los motores (0-255)
int estado = 'c'; // inicia detenido
Servo ser_hor, ser_ver; // Creamos los Objetos para los Servos Horizontal y Vertical
int servopos_hor = 90; // Posicion Inicial del Servo Horizontal
int servopos_ver = 90; // Posicion Inicial del Servo Vertical
void setup() {
Serial.begin(9600);
bluetooth.begin(9600); // Setea la conexion Serial del Bluetooth al Móvil
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);
ser_hor.attach(10);// Servo Horizontal conectado al pin 10
ser_ver.attach(11);// Servo Vertical conectado al pin 11
}
void loop() {
//Lee desde el bluetooth y escribe al USB Serial
if (bluetooth.available() >= 2 )
{
estado = Serial.read();
unsigned int servopos = bluetooth.read();
unsigned int servopos1 = bluetooth.read();
unsigned int realservo = (servopos1 * 256) + servopos;
Serial.println(realservo);
if (realservo >= 1000 && realservo < 1180) {
int servo1 = realservo;
servo1 = map(servo1, 1000, 1180, 0, 180);
ser_hor.write(servo1);
Serial.println("ser_hor ON");
delay(10);
}
if (realservo >= 2000 && realservo < 2180) {
int servo2 = realservo;
servo2 = map(servo2, 2000, 2180, 0, 180);
ser_ver.write(servo2);
Serial.println("ser_ver ON");
delay(10);
}
}
if (estado == 'a') { // Boton desplazar al Frente
analogWrite(derB, vel);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
}
if (estado == 'b') { // Boton IZQ
analogWrite(derB, vel);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
if (estado == 'c') { // Boton Parar
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
if (estado == 'd') { // Boton DER
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(izqA, vel);
analogWrite(derA, 0);
}
if (estado == 'e') { // Boton Reversa
analogWrite(derA, vel);
analogWrite(izqA, 0);
analogWrite(derB, 0);
analogWrite(izqB, vel);
}
}