// practica 8 Control de servomotor
#include <LiquidCrystal.h>
LiquidCrystal lcd(0,1,2,3,4,5);
int servo = 15, potenciometro = 26;
int bt1 = 6,bt2 = 10,bt3 = 14, bt4 = 22;
int grados;
void setup() {
pinMode(servo,OUTPUT); lcd.begin(16,2);
pinMode(bt1,INPUT_PULLUP); pinMode(bt4,INPUT_PULLUP);
pinMode(bt2,INPUT_PULLUP); pinMode(bt3,INPUT_PULLUP);
}
void loop(){
while (digitalRead(bt1)==LOW){grados = 2250;// 0 grados
digitalWrite(servo,HIGH); delayMicroseconds(grados);
digitalWrite(servo,LOW); delayMicroseconds(20000-grados);
lcd.setCursor(0,1);lcd.print("180.00");
}
while (digitalRead(bt2)==LOW){ grados = 1130; // 90 grados
digitalWrite(servo,HIGH); delayMicroseconds(grados);
digitalWrite(servo,LOW); delayMicroseconds(20000-grados);
lcd.setCursor(0,1);lcd.print(" 90.00");
}
while (digitalRead(bt3)==LOW){ grados = 550; // 180 grados
digitalWrite(servo,HIGH); delayMicroseconds(grados);
digitalWrite(servo,LOW); delayMicroseconds(20000-grados);
lcd.setCursor(0,1);lcd.print(" 0.000");
}
while (digitalRead(bt4)== LOW){ // grados variables
int pot = analogRead(potenciometro)*2250/1023; // 0 - 2000
grados = analogRead(potenciometro)*180/1023;
if (pot < 550){pot = 550;}
lcd.setCursor(0,1);lcd.print(round(grados),2);
digitalWrite(servo,HIGH); delayMicroseconds(pot);
digitalWrite(servo,LOW); delayMicroseconds(20000-pot);
}
lcd.setCursor(2,0);lcd.print("ServoMotor A:");
lcd.setCursor(7,1);lcd.print("Grados");
}