Você está na página 1de 4

CODIGO UTILIZADO

#include <LiquidCrystal.h>
#include <Servo.h>
Servo Servo1;
const int rs = 12 , en = 11 , d4 = 5 , d5 = 4 , d6 = 3 , d7 = 2 ;
LiquidCrystal lcd( rs , en , d4 , d5 , d6 , d7 ) ;
float angulo=0;
int cuenta=0;
int const pinServo=9;
const int pulsadorIncremento = 7;
const int pulsadorDecremento = 8;
const int tiempoAntirrebote = 10;
int estadoPulsadorIncremento;
int estadoPulsadorAnteriorIncremento;
int estadoPulsadorDecremento;
int estadoPulsadorAnteriorDecremento;
int estado3;

boolean antirrebote(int pin)


{
int contador = 0;
boolean estado;
boolean estadoAnterior;
do
{
estado = digitalRead(pin);
if(estado != estadoAnterior)
{
contador = 0;
estadoAnterior = estado;
}
else
{
contador = contador+ 1;
}
delay(1);
} while(contador < tiempoAntirrebote);
return estado;
}

void setup() {
pinMode(pulsadorIncremento, INPUT);
pinMode(pulsadorDecremento, INPUT);
pinMode(13,INPUT);
Servo1.attach(9);
lcd.begin(16,2);
}

void loop() {
estadoPulsadorIncremento = digitalRead(pulsadorIncremento);
if(estadoPulsadorIncremento != estadoPulsadorAnteriorIncremento){
if(antirrebote(pulsadorIncremento)){
cuenta=cuenta+5;
if(cuenta==0){
angulo=0;
}
if(cuenta > 100)
{
cuenta = 100;
}
}
}
estadoPulsadorAnteriorIncremento = estadoPulsadorIncremento;
estadoPulsadorDecremento = digitalRead(pulsadorDecremento);
if(estadoPulsadorDecremento != estadoPulsadorAnteriorDecremento){
if(antirrebote(pulsadorDecremento))
{
cuenta=cuenta-5;
if(cuenta==0){
angulo=0;
}
if(cuenta < 0)
{
cuenta = 0;
}
}
}
estadoPulsadorAnteriorDecremento = estadoPulsadorDecremento;
actualizarNumero();
displaylcd();
}

void actualizarNumero(){
switch(cuenta){
case 5:
angulo=4.5;
break;
case 10:
angulo=9;
break;
case 15:
angulo=13.5;
break;
case 20:
angulo=18;
break;
case 25:
angulo=22.5;
break;
case 30:
angulo=27;
break;
case 35:
angulo=31.5;
break;
case 40:
angulo=36;
break;
case 45:
angulo=40.5;
break;
case 50:
angulo=45;
break;
case 55:
angulo=49.5;
break;
case 60:
angulo=54;
break;
case 65:
angulo=58.5;
break;
case 70:
angulo=63;
break;
case 75:
angulo=67.5;
break;
case 80:
angulo=72;
break;
case 85:
angulo=76.5;
break;
case 90:
angulo=81;
break;
case 95:
angulo=85.5;
break;
case 100:
angulo=90;
break;

}
}
void displaylcd(){

lcd.setCursor(12,0);
lcd.print("[%]");
lcd.setCursor(0,0);
lcd.print("SetPoint:");
lcd.setCursor(9,0);
lcd.print(cuenta);
lcd.setCursor(0,1);
lcd.print("Angulo:");
lcd.setCursor(7,1);
lcd.print(angulo);
Servo1.write(angulo);

Você também pode gostar