Está en la página 1de 3

INTEGRANTES

NELSON DAVID ORTEGA BLANCO


LUIS MEJIA VEGA

LINK https://www.tinkercad.com/things/c4hlYN7baR0-trabajo/editel?sharecode=s5-
dNUtw9XIshK_aKaShJHfHoyG3itInZcrjwLejBXA

IMAGEN DEL CIRCUITO

CODIGO DEL CRCUITO

//importamos libreria servo


#include <Servo.h>

//variable servo
Servo servomotor;

int grados = 90; // Inicializa en la posición 90°


int resta=7; // Boton para sumar angulo
int suma=8; // Boton para restar angulo

// Control de velocidad y sentido motor aficionado

int salida1=9; //Entrada 5 del L293D


int salida2=10; //Entrada 7 del L293D
int pot=A0; //Potenciómetro

int valorp; //Variable que recoge el valor del potenciómetro


int pwm1; //Variable del PWM 1
int pwm2; //Variable del PWM 2

void setup() {

servomotor.attach(2);
pinMode(suma, INPUT); // Configuros pines de entrada
pinMode(resta, INPUT);
servomotor.write(grados); // Muevo el motor hasta 90°

//Inicializamos los pins de salida


pinMode(salida1,OUTPUT);
pinMode(salida2, OUTPUT);

void loop() {

//Almacenamos el valor del potenciómetro en la variable


valorp=analogRead(pot);

//Como la entrada analógica del Arduino es de 10 bits, el rango va de 0 a 1023.


//En cambio, la salidas del Arduio son de 8 bits, quiere decir, rango entre 0 a 255.
//Por esta razón tenemos que mapear el número de un rango a otro usando este código.
pwm1 = map(valorp, 0, 1023, 0, 255);
pwm2 = map(valorp, 0, 1023, 255, 0); //El PWM 2 esta invertido respecto al PWM 1

//Sacamos el PWM de las dos salidas usando analogWrite(pin,valor)


analogWrite(salida1,pwm1);
analogWrite(salida2,pwm2);

//LOGICA DEL SERVOMOTOR

if (digitalRead(suma) == LOW) // Pregunto por el boton suma = 12 Presionado, se activa con estado
Bajo
{
grados++; // Suma grados

if (grados >= 135) // Proteje el motor, para que no exceda los 135°, se puede dañar el motor
{
grados = 135;
}
}

else if (digitalRead(resta) == LOW)


{
grados--; // Resta grados
if (grados <= 45)// Proteje el motor, para que no descienda de los 45°.
{
grados = 45;
}
}

else {
servomotor.write(90);
delay(10);
}

servomotor.write(grados); // Escribo nuevo angulo en grados


}

LOGICA DE PROGRAMACION

La situación fue expuesta en clase , por tanto el único cambio hecho al código fue el cambio de
nombre a variables y la comprensión del sentido máximo aplicado al servomotor en cuanto a la
rotación máxima del mismo se refiere.El código se encuentra explicado lo suficiente pues ha sido
comentada la mayoría de las líneas, por tanto explixcarlo en esta sección sería caer en la redundancia.

También podría gustarte