Arduino es un sistema microcontrolado de hardware libre y código abierto, multiplataforma, barato, con un entorno de programación sencillo y simple, basado en el microcontrolador ATMEGA en sus diferentes versiones de Atmel. Existen diferentes versiones de las placas arduino, yo he usado la llamada Arduino Duemilanove es la sucesión de la Arduino Diecimila, que monta el nuevo procesador ATMega328.
Dispone de 14 pines de entada y salida digitales, de los cuales 6 se pueden usar como salidas PWM (Pulse Width Modulation), 6 entradas analógicas, se conecta al puerto USB, (con un cable como el de las impresoras), también dispone de un conector de corriente.
Todo lo que necesitamos saber sobre este estupendo sistema está en la web oficial: http://www.arduino.cc/
En Tecnología es un sistema ideal para controlar los proyectos que solemos realizar con nuestros alumnos, control de puertas, barreras, semáforos, ascensores,…
En esta y sucesivas entregas iremos realizando prácticas básicas basadas en este hardware:
Para comenzar necesitamos:
Descargar e instalar el entorno de programación Arduino. No hace falta instalación simplemente descomprimimos el paquete en una carpeta y lanzamos el ejecutable “arduino”.
Conectar nuestra placa al PC. Si no detecta automáticamente los drivers éstos los podremos encontrar en la carpeta arduino-xx/drivers/FTDI USB Drivers/
Arrancamos el entorno, y en el menú Tools configuramos la conexión (serial Port) y nuestra placa (en este caso Arduino Duemilanove).
La sintaxis del lenguaje es muy parecida al lenguaje C, la estructura básica de cualquier programa es la siguiente:
void setup()
{
//declaro variables, asigno PinMode o inicializo las comunicaciones serie.
}
void loop()
{
//se ejecuta a continuación, incluye el código que lee entradas, activa salidas…es el núcleo del código.
}
Os aconsejo leer el manual adjunto para ampliar un poco más en el entorno Arduino, en él encontrareis un apartado donde se describen la base de la programación de este sistema, muy fácil si tenemos conocimientos de programación.
A partir de aquí podremos empezar con nuestras prácticas:
Práctica 1: El coche fantástico.
Necesitaremos 8 diodos LED, ocho resistencias de 220 Ohmios y una placa de prototipos y conectamos el esquema como el de la figura. Los diodos leds se encenderán y apagaran siguiendo un patrón establecido en el código, se muestran tres posibles opciones, podremos variar el tiempo de encendido y apagado, modificando la variable timer. Aquí el código:
/* Coche fantático 1*/ int pinArray[] = {2, 3, 4, 5, 6, 7,8,9}; int count = 0; int timer = 70; void setup(){ for (count=0;count<8;count++) { pinMode(pinArray[count], OUTPUT); } } void loop() { for (count=0;count<8;count++) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer); } for (count=7;count>=0;count--) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer); } }
/* El coche fantástico2*/ int pinArray[] = {2, 3, 4, 5, 6, 7,8,9}; int count = 0; int timer = 15; //timer marca como queremos que vaya de rápido la ráfaga de encendido-apagado de los LEDS void setup(){ for (count=0;count<8;count++) { pinMode(pinArray[count], OUTPUT); } } void loop() { for (count=0;count<7;count++) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count + 1], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer*2); } for (count=7;count>0;count--) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count - 1], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer*2); } }
/* Estrella fugaz *--------------- * Este programa es una variante del ejemplo del coche * fantástico. Muestra mediante un loop una estrella * fugaz que es dibujada en una linea de LED-s * directamente conectados a la placa Arduino * * Puedes controlar la velocidad a la que la estrella * se mueve gracias a una variable llamada "waitNextLed" * * También puedes controlar la longitud de la cola * de la estrella a través de la variable "tail length" * * @author: Cristina Hoffmann * @hardware: Cristina Hofmann * */ // Variable declaration int pinArray [] = { 2,3,4,5,6,7,8,9,10,11,12 }; // Declaración de los PIN-es mediante un array int controlLed = 13; // LED de control int waitNextLed = 100; // Tiempo antes de encender el siguiente LED int tailLength = 4; // Número de LED-s que permanecen encendidos antes de empezar a apagarlos para formar la cola int lineSize = 11; // Número de LED-s conectados (que es también el tamaño del array) void setup() // Configuración de los PIN-es como salida digital { int i; pinMode (controlLed, OUTPUT); for (i=0; i< lineSize; i++) { pinMode(pinArray[i], OUTPUT); } } void loop() { int i; int tailCounter = tailLength; // Se establece la longitud de la cola en un contador digitalWrite(controlLed, HIGH); // Se enciende el LED de control para indicar el inicio del loop for (i=0; i<lineSize; i++) { digitalWrite(pinArray[i],HIGH); // Se encienden consecutivamente los LED delay(waitNextLed); // Esta variable de tiempo controla la velocidad a la que se mueve la estrella if (tailCounter == 0) { digitalWrite(pinArray[i-tailLength],LOW); // Se apagan los LED-s en función de la longitud de la cola. } else if (tailCounter > 0) tailCounter--; } for (i=(lineSize-tailLength); i<lineSize; i++) { digitalWrite(pinArray[i],LOW); // Se apagan los LED delay(waitNextLed); // Esta variable de tiempo controla la velocidad a la que se mueve la estrella } }
Hola se puede hacer uno pero con más led’s si es posible con todos los punes del arduino??
Si efectivamente Leandro se puede hacer, un saludo
Muchas Gracias
BUENAS ARDUINO NECESITO HACER EL COCHE FANTASTICO Y NO SE COMO ACERLO ME AN DEJADO EN LA UNP TENGO QUE PRESENTARLO AYUDAME
GRACIAS……
hola arduino soy un principiante de la electronica quiero acer el coche fantastico y no se como acerlo me an dejado en la unp lo quiero urgente paso a paso porfa ayudame
gracias….
AMIGO #1, SE NOTA QUE ERES NUEVO EN ELECTRONICA; POR QUE NUNCA UTILIZAMOS LA PALABRA QUE BAILEN LOS LED’S, Y PARA SER HONESTOS NUNCA HE VISTO BAILAR UNO, QUIZAS SI LE PONES UN POCO DE MUSICA BAILE PERO LO VEO IMPOSIBLE. PERO TE EXPLICO ALGO..ME IMAGINO QUE LA CONEXION DE TUS 253 LED’S ESTAN CONECTADOS EN SERIE, ES DECIR TODOS DEBEN DE CONTAR CON CATODO COMUN, OSEA QUE LA POLARIDAD NEGATIVA SE CONECTA AL NEGATIVO DE TU FUENTE, Y EL CATODO DE LOS DIODOS SE CONECTAN CON OTROS CATODOS DE UNA SERIE DE LED’S…ALGO ASI SEMEJANTE A LOS DE UNA SERIE DE FOCOS PARA ARBOLITO DE NAVIDAD…PUES ES SIMPLE CONECTALE UNA CAJITA DE CONTROL PARA SERIES NAVIDEÑAS Y SI CUENTA CON MUSIQUITA PUES ASI SI HARAS BAILAR A LOS LED’S, JAJAJAJAJAJAJAJ. PERO TE RECUERDO QUE LAS SALIDAS DE LOS CONTROLES DE LAS SERIES NAVIDEÑAS SON OPERADOS POR TRANSISTORES, EN LA CUAL LA BASE RECIBE LA SEÑAL DE UN CIRCUITO SECUENCIADOR O PEQUEÑO PROCESADOR QUE YA TIENE UN PROGRAMITA QUE HACE QUE LAS SERIES PRENDAN Y APAGUEN AL RITMO DE LA MUSICA…PERO ESAS SALIDAS SON DE VOLTAJE MAS ALTO QUE LOS QUE TRABAJA LOS LED’S Y EVIDENTEMENTE SE TE QUEMARIAN, ASI QUE DEBES DE INGENIARTELAS PARA ADAPTAR EL VOLTAJE DE TU FUENTE AL SISTEMA CUIDANDO LA POLARIDAD DE LA MISMA, ASI QUE SUERTE Y PONLE UNA CUMBIA, SALSA, REGGUETON O ALGO QUE HAGA QUE BAILEN ALRITMO…SALUDOS
Hola amigo Ardunio.
soy un principiante en la electronica, deseo que me ayudes, hice una cruz de leds de 40cn x 40 cn me cayeron 253 led de 3v verdes. y lo conecto a una fuente de poder de 220v a 5 v. y me encienden de puta madre, lo que me falta es hacerlos vailar y no se como, he visto varios videos, y circuitos pero ninguno me valen para mis 253 leds. deseo que me ayudes a crear juegos como: la cuncuna o efecto auto fantastico. – prende y apaga – de menor a mayor el encendido.
gracias ardunio espero tu respuesta.
Buenas; veo que estas puesto en el tema; tengo que hace un semaforo con transito de peatones y pulsador, pero con una «pequeña dificultad»: que el pulsador cuando va a cambiar a Verde para los coches y pulses el pulsador, espere un tiempo antes de volver a cambiar a verde.
Te agradeceria mucho tu ayuda, de usted depende el aprobado de un curso dificil