Soy nuevo en esto de la programación y me surgió un problema que no se como resolver, aún no tengo mi código completo, así que esto es todo lo que llevo hasta el momento.
#include <Servo.h>
char dato ('A','a','x');
Servo base;
int pbase, contador=0;
void setup()
{
base.attach(13);
Serial.begin(9600);
}
void loop()
{
if(contador==0)
{
pbase=base.read();
if (pbase=base.read()>(0))
{
base.write(0);
}
contador ++;
}
switch(dato)
{
case 'A': //Base Izquierda
{
do while(Serial.read()=='A')
{
while(Serial.read()=='A')
{
for (pbase = 0; Serial.read()=='A'; pbase += 1)
{
base.write(pbase);
delay(15);
break;
}
}
}
}
}
}
Hola, sin la intención de ofender, el código es un desastre, porque mejor no aclaras que es lo que intentas lograr, y quiza es mas fácil empezar de cero, dime ¿de que trata tu codigo? para que usas el servo y como lo piensas mover?
No te preocupes soy nuevo y entiendo que el código esta hecho un asco, lo he modificado ligeramente, así que espero que sea mas fácil para alguien que me pueda ayudar.
La intención es que mediante una aplicación para celular la cual ya está hecha, envíe los carácteres a tráves de un modulo HC-05 a la placa con el código del arduino, para que mueva los servomotores.
No se donde leiste que este es el modo de leer el puerto serie pero no es correcto
NO puedes usar Serial.read(); cuando se te da la gana. Sonará hasta grosero pero es asi.
Debes ser ordenado para leer el puerto serie.
Y todo comienza asegurándote que hay datos en el mismo.
if (Serial.available() >0 ) { te indica que hay bytes para leer
y luego has una sola lectura con Serial.read() y debes procesar lo que recibas.
tienes varias lineas que no entiendo que es lo que hacen, si te fijas quite todos los while() que no les veo razón de estar ahi, ahora dime para que haces esto:
if(contador==0) ///PARA QUE USAS TODO ESTO QUE ESTÁ DENTRO DEL IF?
{
// Leer posicion inicial
pbase=base.read();
pbrazo1=brazo1.read();
pbrazo2=brazo2.read();
pbrazo3=brazo3.read();
pinclinacionpinza=inclinacionpinza.read();
ppinza=pinza.read();
//Escribir posicion inicial
base.write(pbase);
brazo1.write(pbrazo1);
brazo2.write(pbrazo2);
brazo3.write(pbrazo3);
inclinacionpinza.write(pinclinacionpinza);
pinza.write(ppinza);
contador++;
}
y luego, creo que esto no funciona adecuadamente
if(pbase>=175)
pbase=175;
if(pbase<=180 && pbase>=0)[/code
porque no simplemente mueves el servo hasta donde lo necesitas y quitas esa condicional, no me gusta como lo haces.
Dame un panorama mas amplio de lo que quieres hacer, por ejemplo, cuando mandas una 'A' por el puerto serie, ¿que quieres que suceda?