Ya hemos presentado en el blog a Arduino (https://www.ikkaro.com/kit-inicio-arduino-super-starter-elegoo/) y de hecho aparecen en varios proyectos entre ellos este (https://www.ikkaro.com/node/529)
Ahora vamos a avanzar un poco más y vamos a modular señales por ancho de pulso (PWM), esto nos puede servir por ejemplo para manejar servomotores como los presentados aquí (https://www.ikkaro.com/introduccion-al-aeromodelismo-electrico/) o leds rgb entre otros. Para el que no conozca que es PWM es una modulación que se le hace a una señal y que sirve para «transmitir información a través de un canal de comunicaciones o para controlar la cantidad de energía que se envía a una carga» (Wikipedia)
Los servomotores se controlan con 3 hilos: uno para el voltaje positivo, otro para el tierra y otro para la señal de control, que viene modulada en PWM.
Arduino por su lado tiene 6 salidas digitales que pueden actuar como salidas PWM (son los pines: 11, 10, 9, 6, 5, 4) y además una librería preparada para el manejo de servos. Por lo tanto, vamos a utilizar una de esas salidas para hacer nuestras primeras pruebas controlando un servomotor.
El código ejemplo de la librería servo de Arduino puede servirnos, conectamos el voltaje a 5v, masa a gnd y la señal de control del servomotor (que es la que viene modulada en PWM) a uno de los pines de arduino que tenga PWM, por ejemplo en este código al pin digital 9.
// Sweep
// by BARRAGAN <http://barraganstudio.com>
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
int pos = 0; // variable to store the servo position
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
}
}
Este código nos permitiría hacer girar el servomotor de 0º a 180º y después de vuelta a los 0ª.
Proximamente más.
[resaltado]Este artículo fue escrito originalmente por ErSame para Ikkaro[/resaltado]