hola a todos
estoy haciendo un control para un servo a través de una app, para controlarlo con mi celu, pero quiero que los datos escritos en el servo se vean en un lcd 2x16, sin el código para el lcd el servo funciona de maravilla pero con el código del lcd queda inservible, aquí les pongo el codigo:
#include <Servo.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8 ) ; // (13"RS", 12"E", 11"D4", 10"D5", 9"D6" y 8"D7")
char buffer[16];
char dato;
Servo servo1;
int serv, contador = 0;
void setup()
{
lcd.begin(16, 2);
servo1.attach(2);
Serial.begin(9600);
}
void loop()
{
if (Serial.read() == 'a')
{
lcd.setCursor(0, 0);
lcd.print("servo derecha ");
lcd.setCursor(0, 1);
sprintf(buffer, "%d ", serv);
lcd.print(buffer);
lcd.setCursor(7, 1);
lcd.print("Grados");
}
if (Serial.read() == 'b')
{
lcd.setCursor(0, 0);
lcd.print("servo izquierda ");
lcd.setCursor(0, 1);
sprintf(buffer, "%d ", serv);
lcd.print(buffer);
lcd.setCursor(7, 1);
lcd.print("Grados");
}
if (contador == 0)
{
// Leer posicion inicial
serv = servo1.read();
//Escribir posicion inicial
servo1.write(serv);
contador++;
}
dato = 'x';
dato = Serial.read();
switch (dato)
{
case 'a': //servo a la derecha
{
while (Serial.read() != 'x')
{
if (serv <= 5)
serv = 5;
if (serv <= 180 && serv >= 0)
{
serv--;
servo1.write(serv);
delay(15);
}
}
break;
}
case 'b': //servo a la izquierda
{
while (Serial.read() != 'x')
{
if (serv >= 175)
serv = 175;
if (serv <= 180 && serv >= 0)
{
serv++;
servo1.write(serv);
delay(15);
}
}
break;
}
}
}
a ver sí me pueden ayudar, he pasado por varias partes el código del lcd dentro y fuera del switch pero por ningun lado me funciona se traba el funcionamiento, le agradezco de antemano ![]()