#include <Servo.h>
Servo motor1;
Servo motor2;
int posicion_motor1=0;
int pulsadorizquierda=2;
int estado_pulsadorizquierda=0;
int incremento_de_angulo=10;
int pulsadorderecha=5;
int estado_pulsadorderecha=0;
int posicion_motor2=0;
int pulsadorarriba=3;
int estado_pulsadorarriba=0;
int pulsadorabajo=4;
int estado_pulsadorabajo=0;
void setup()
{
motor1.attach(9);
pinMode(pulsadorizquierda,INPUT);
pinMode(pulsadorderecha,INPUT);
motor1.write(posicion_motor1);
motor2.attach(10);
pinMode(pulsadorarriba,INPUT);
pinMode(pulsadorabajo,INPUT);
motor2.write(posicion_motor2);
}
void loop() {
estado_pulsadorizquierda= digitalRead(pulsadorizquierda);
estado_pulsadorderecha= digitalRead(pulsadorderecha);
estado_pulsadorarriba= digitalRead(pulsadorarriba);
estado_pulsadorabajo= digitalRead(pulsadorabajo);
if (estado_pulsadorizquierda==HIGH)
{
posicion_motor1 = posicion_motor1 + incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor1.write(posicion_motor1);
delay(100);
if (posicion_motor1 >= 180){
posicion_motor1=0; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor1.write(posicion_motor1);
}
}
if (estado_pulsadorderecha==HIGH)
{
posicion_motor1 = posicion_motor1 - incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador derecho
motor1.write(posicion_motor1);
delay(100);
if (posicion_motor1 <= 0){
posicion_motor1=180; //Hacemos que vuelva a su posicion inicial al llegar a su limite de giro
motor1.write(posicion_motor1);
}
}
if (estado_pulsadorarriba==HIGH)
{
posicion_motor2 = posicion_motor2 + incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor2.write(posicion_motor2);
delay(100);
if (posicion_motor2 >= 180){
posicion_motor2=0; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador superior
motor2.write(posicion_motor2);
}
}
if (estado_pulsadorabajo==HIGH)
{
posicion_motor2 = posicion_motor2 - incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador inferior
motor2.write(posicion_motor2);
delay(100);
if (posicion_motor2 <= 0){
posicion_motor2=180; //Hacemos que vuelva a su posicion inicial al llegar a su limite de giro
motor2.write(posicion_motor2);
}
}
}
viernes, 12 de abril de 2019
jueves, 28 de marzo de 2019
Servo controlado co M_block
#include <Servo.h>
Servo miservo;
int pos=0;
int TECLA=0;
void setup() {
Serial.begin(9600);
miservo.attach(9);
pos=0;
}
void loop() {
miservo.write(pos);
delay(50);
Serial.println(pos);
if (Serial.available() > 0) { //esto da algo de error
delay(100);
TECLA=Serial.read();
if (TECLA==49){ //es decir, "1"
pos=0; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==50){ //es decir, "2"
pos=45; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==51){ //es decir, "3"
pos=90; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==52){ //es decir, "4"
pos=135; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==53){ //es decir, "5"
pos=180; //ángulo que debe tomar con la tecla indicada
}
}
}
Servo miservo;
int pos=0;
int TECLA=0;
void setup() {
Serial.begin(9600);
miservo.attach(9);
pos=0;
}
void loop() {
miservo.write(pos);
delay(50);
Serial.println(pos);
if (Serial.available() > 0) { //esto da algo de error
delay(100);
TECLA=Serial.read();
if (TECLA==49){ //es decir, "1"
pos=0; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==50){ //es decir, "2"
pos=45; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==51){ //es decir, "3"
pos=90; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==52){ //es decir, "4"
pos=135; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==53){ //es decir, "5"
pos=180; //ángulo que debe tomar con la tecla indicada
}
}
}
Así conseguiriamos girar el servo al angulo deseado mediante las teclas
Servo controladopor ponteciometro
1.- Mueve un servo según una determinada entrada analógica. Mediante un joystick o un dispositivo que cuente con un potenciómetro podemos controlar el movimiento de un servo.
int val; //introducimos la variable val
#include <Servo.h>
Servo servo;
int pot = 3; //entrada analógica del potenciometro
void setup() {
Serial.begin(9600);
servo.attach(6);
}
void loop() {
int valorpot= analogRead(pot);
val=map(valorpot,0,1023,0,180); //el valor de ""val" ira variando según varie el valor del potenciometro
Serial.println(val); //hacemos que nos muestre el angulo de giro en el monitor
delay(500);
servo.write(val);
delay(100);
}
Así conseguiriamos que el servomotor giré exactamente el ángulo que deseemos mediante un controlador, el cual es en este caso en potenciómetro.
int val; //introducimos la variable val
#include <Servo.h>
Servo servo;
int pot = 3; //entrada analógica del potenciometro
void setup() {
Serial.begin(9600);
servo.attach(6);
}
void loop() {
int valorpot= analogRead(pot);
val=map(valorpot,0,1023,0,180); //el valor de ""val" ira variando según varie el valor del potenciometro
Serial.println(val); //hacemos que nos muestre el angulo de giro en el monitor
delay(500);
servo.write(val);
delay(100);
}
Así conseguiriamos que el servomotor giré exactamente el ángulo que deseemos mediante un controlador, el cual es en este caso en potenciómetro.
viernes, 22 de marzo de 2019
Limpiaparabrisas
1.- Modifica el programa para que el LIMPIAPARABRISAS se mueva más lentamente cuando se mueva en un sentido y más rapidamente en el otro.
#include <Servo.h>
#define pinServo 9
Servo miservo;
int pos=0;
void setup() {
miservo.attach(pinServo); //declaramos la salida del sevo
}
void loop() {
for (pos=0; pos<=170; pos=pos+1); {
miservo.write(pos); //movemos el servo en un sentido
delay(800);
}
for (pos=170; pos>=10; pos=pos-70); {
miservo.write(pos); //aumentamos el posicionamiento para aumentar la velocidad
delay(700);
}
}
#include <Servo.h>
#define pinServo 9
Servo miservo;
int pos=0;
void setup() {
miservo.attach(pinServo); //declaramos la salida del sevo
}
void loop() {
for (pos=0; pos<=170; pos=pos+1); {
miservo.write(pos); //movemos el servo en un sentido
delay(800);
}
for (pos=170; pos>=10; pos=pos-70); {
miservo.write(pos); //aumentamos el posicionamiento para aumentar la velocidad
delay(700);
}
}
Movimiento de Servo Simple
Actividades para tomar contacto con las funciones mas simples de los servomotores
Suscribirse a:
Entradas (Atom)