Us col·loco un codi amb l'explicació al costat que he fet per tal de llegir un valor analògic i fer mou-re un servo en una posició segons la funció map().
El codi del servo és el mateix que el de l'entrada de control de servo motors, però ara afegirem escriure a la pantalla els valors llegits i al que està el servomotor!
El circuit:
El codi:
// incluim les llibreries:
#include <LiquidCrystal.h>
#include <Servo.h>
Servo myservo; //creem un objecte que es digui servo.
int val; //Aquesta dada l'utilitzarem per a indicar els graus al que em de col·locar el servo.
// inicialitzem la llibreria indicant els pins on hi ha connectat cada cosa
// i és lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2); //configurem la pantalla
myservo.attach(9); //indiquem a quin pin hi ha connectat el servomotor
}
void loop() {
lcd.clear(); //primer de tot netejem la pantalla, perque sinò es quedarà l'ultim text escrit al darrere
lcd.setCursor(0, 0); //com en el loop escriure'm a la segona línia, em de tornar a la primera per a escriure-ho be
lcd.print("Valor: "); //escrivim el text
//lcd.setCursor(7, 0); //no fa falta escriure'l, ja que el text de la dada continuarà darrere
int sensorValue = analogRead(A0); //llegim l'entrada
lcd.print(sensorValue); //i precedim el text anterior amb el valor
val = map(sensorValue, 0, 1023, 0, 179); //indiquem quin angle ha de tenir el servo
myservo.write(val); //escrivim l'angle al servo i fem que es mogui
lcd.setCursor(0,1); //canviem a la segona fila
lcd.print("Posicio: "); //escrivim "posició :"
//lcd.setCursor(9, 1); //no fa falta escriure'l perquè el text del valor s'escriurà darrere de l'últim text
lcd.print(val); //i el valor en angles de la posició del servo
delay(200); //en esperem per tornar a fer una lectura del potenciòmetre
}
Al final ens hauria de sortir una cosa així:
Cap comentari:
Publica un comentari a l'entrada