En ocasiones conectar correctamente un sensor o un componente electrónico en Arduino hace la diferencia que nuesto hardware funcione correctamente o lamentablemente mal, o se queme.
A continuación una lista de conexiones simples y mas utilizadas a la hora de realizar proyecto con Arduino:
Tengo que aclarar que Arduino tiene salidas de polo Negativo por lo que se tiene que conectar siempre el opuesto a 5 volts
Conectar Led a Arduino
Para conectar un Led es necesario proteger la salida con una resistencia de 220 ohms
código de prueba:
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); // Wait for 1000 millisecond(s) digitalWrite(13, LOW); delay(1000); // Wait for 1000 millisecond(s) }
En este caso estamos tratando la salida 13 como Digital por el comando digitalWrite
Con el mismo Circuito podemos hacer a través del código tratar la salida como analógica enviando un pulso PWM con el comando analogWrite:
int led=13; void setup() { /* No configuramos nada*/ } void loop() { for (int i=0; i<=255; i++) //aumenta el valor de i hasta 255 { analogWrite(led, i); //escribe el valor de i delay(100); // Wait for 1000 millisecond(s) } delay(500); }
lo que hace este programa ejemplo es aumentar la velocidad con el valor i hasta llegar a 255 en un bucle for(no sale del bucle hasta llegar a 255).
Conectar Motor a Arduino
Con estos 2 métodos anteriores podemos controlar un motor de corriente continua, hay que destacar que si utilizamos el método digital hacemos un control ON/OFF, mientras que si lo hacemos de un modo analógico como PWM tendremos un control de la velocidad del motor cambiando el valor de la variable ente 0 (parado) a 255(máxima velocidad)
Materiales:
diodo 1N4001
Otra forma de trabajar el Pulso PWM es atraves de pulseWidth con la libreria Servo.h si realizamos la siguiente conexión
Conectar Servo Motor a Arduino
con pulseWidth podemos controlar un servo motor como se ve en la imagen para proteger la salida de Arduino UNO (salida 13) tiene una resistencia de 220 ohms, y el servo tiene en la alimentación un regulador de voltage de 5 volts LM7805
#include//incluimos la libreria Servo.h int i = 0; // Variable que utilizaremos para incrementar el valor desde 0 a 1023 Servo servo_13; // asignamos la salida 13 como Servo motor void setup() { servo_13.attach(13); //configuramos la salida 13 como servo } void loop() { for (i = 0; i <= 1023; i += 1) { // esto es un bucle que hasta que no llega a 1023 no sale de el incrementando 1 en 1 cada vez que lo lee delay(50); // espera 50 milisegundos servo_13.write(map(i, 0, 1023, 0, 180)); //escribe el valor actual en el rango de 0 a 180 grados } //al llegar al valor sale del bucle for // vuelve al inicio de loop }
con este ejemplo lo que hacemos es incrementar de 0 a 1023 losgrados de un servo escalados en 180 grados
Control de Led RGB
Para controlar un tira de led RGB utilizamos la libreria NeoPixel de adafruit
Matriales:
Tira circular de led 2812 LED BOARD-SW1240/AN
código Ejemplo:
#include// llamamos a libreria NeoPixel #define PIN 2 // pin de control para los leds. #define NUMPIXELS 12 // Numero de leds a los que tiene que asiganar los valores. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 100; // da el valor de 100 milisegundos a la variable de espera. int redColor = 0; // pone a 0 el valor del color rojo. int greenColor = 0; // pone a 0 el valor del color verde. int blueColor = 0; // pone a 0 el valor del color azul. void setup() { // Inicia la libreria NeoPixel. pixels.begin(); } void loop() { setColor(); // llama a la funcion set color. for (int i=0; i < NUMPIXELS; i++) { // envia el valor de cada de led rojo, verde y azul 1 a 1. pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor)); // envia los datos de colores a los leds. pixels.show(); // tiempo de espera en milisegundos. delay(delayval); } } // setColor() void setColor(){ // asigana un valor aleatoria para rojo, verde y azul. redColor = random(0, 255); // asigana un valor aleatoria entre 0 y 255. greenColor = random(0,255); // asigana un valor aleatoria entre 0 y 255. blueColor = random(0, 255); // asigana un valor aleatoria entre 0 y 255. // vuelve a una linea por debajo de donde fue llamada la funcion. }
con este pequeño código ejemplo podemos ver que de forma aleatoria va cambiando uno a uno el color de cada led
Entradas
conectar un switch o pulsador a Arduino
Arduino tiene definidas por hardward que tipo de entrada son las que podemos utilizar como digitales( Digital PWM) y analogicas (Analog IN)
Esta ves utilizaremos la conexión 2 como entrada Digital siguiendo el esquema de la imagen anterior
Materiales:
código ejemplo:
const int boton=2; //asignamos la constante boton al pin 2 const int led=13; //asignamos la constante le al pin 13 int estado = 0; //la variable de estado la definimos como 0 void setup() { pinMode(led, OUTPUT); //configuramos a led como salida pinMode(boton, INPUT); // configuramos boton como entrada } void loop() { //igualamos la varible estado con el valor de la lectura del boton estado = digitalRead(boton); //con if verificamos cual es el estado if (estado == HIGH){ // si el valor del boton es alto digitalWrite(led, HIGH); //enciende el led } else { // si el valor del pulsador es bajo digitalWrite(led,LOW); } }
Lo que hace este pequeño programa es igualar la salida 13 con el estado de la entrada 2 demostrando que el led integrado en Arduino UNO marcado como L encienda o este apagado
Conectar un potenciometro o resistencia variable a Arduino
Materiales:
potenciometro linela de 200K ohms
código ejemplo:
int pote = 0; // igualamos la variable a 0 int led = A0; //asignamos a led el pin A0 void setup() { pinMode(A0, INPUT); //configuramos como entrada analogica A0 pinMode(13, OUTPUT); // configuramos como salida 13 } void loop() { pote = analogRead(A0); //igualamos el valor de pote a la lectura de A0 digitalWrite(13, HIGH); // encendemos el led delay(pote); //espera en milisegundos el valor del potenciometro digitalWrite(13, LOW); // apaga el led delay(pote); //espera en milisegundos el valor del potenciometro // vuelve a leer loop de el inicio }
Con este código ejemplo es utilizar el valor del potenciometro(A0) para aumentar o reducir el tiempo de espera de delay en milisegundos para que apague o encienda el led
Comments
Trackbacks and Pingbacks
[…] Librerías ArduinoConexiones de Sensores y Dispositivos Arduino → Español English Français Deutsch Italiano Português […]
Comments are closed.