FISI4087-Angulos de motor servo en LCD

Objetivo: Usando una Arduino como interface, controlar un motor servo y mostrar sus angulos en un LCD.

 

Angulos de motor servo en LCD

Por: Fernand E Torres Davila y Eric Rivera Rosa

Combinando la capacidad de generar texto en un LCD y controlar un motor servo, podemos lograr mucahs aplicaciones. Para este experimento se genero un código que muestre el ángulo mostrado por el motor servo, variando el motor con un potenciometro..

Codigo Utilizado

#include <Servo.h>

#include <LiquidCrystal.h>

LiquidCrystal lcd(2,3,4,5,6,7);

byte degree[8]= { //Creating the angle character

B00110,

B01001,

B01001,

B00110,

B00000,

B00000,

B00000,

B00000,

};

const int SERVO =8;//Servo on Pin 8

const int POT=0; // POT on Analog Pin 0

Servo myServo;

int val = 0; // For storing the reading from the POT

int i = 0;

int j = 0;

void setup() {

// put your setup code here, to run once:

lcd.createChar(0, degree);

lcd.begin(20,4);

lcd.home();

lcd.setCursor(0,0);

lcd.print("E&F Angles");

Serial.begin(9600);

myServo.attach(SERVO);

lcd.setCursor(10,3);

}

void loop() {

val = analogRead(POT); //Read Pot

Serial.println(val);

val = map(val,0,1023,0,179); //Scale it to servo range

myServo.write(val); //sets the servo

delay(15); //waits for the servo

lcd.setCursor(0,1);

lcd.print(val +1 );

delay(40);

if(val <=100 && val > 90 && i==0){

lcd.clear();

lcd.home();

lcd.setCursor(0,0);

lcd.print("E&F Angles");

lcd.setCursor(2,1);

lcd.write((byte)0);

i++;

j=0;

}

if(val < 10){

lcd.setCursor(1,1);

lcd.print(" ");

lcd.setCursor(2,1);

lcd.print(" ");

lcd.setCursor(1,1);

lcd.write((byte)0);

j=0;

}

if(val > 100){

lcd.setCursor(3,1);

lcd.write((byte)0);

i=0;

}

if (val >10 && val<89){

lcd.setCursor(2,1);

lcd.write((byte)0);

i=0;

j++;

}

}

Videos