Mostrando entradas con la etiqueta Arduino. Mostrar todas las entradas
Mostrando entradas con la etiqueta Arduino. Mostrar todas las entradas

22 may 2016

Prácticas con Arduino

1. Parpadeo de un led





/*
  Parpadeo
  Enciende un LED por durante segundo y después lo apaga.
  */

int led = 13; // asigna a la variable led el valor 13

// la rutina de setup corre una vez o cuando se presiona reset
void setup() {              
  pinMode(led, OUTPUT);   // inicializa el pin 13 como pin de salida
}

// la rutina loop corre constantemente
void loop() {
  digitalWrite(led, HIGH);   // enciende el LED (HIGH es el nivel de voltaje)
  delay(1000);               // espera un segundo
  digitalWrite(led, LOW);    // apaga el LED poniendo el voltaje a LOW
  delay(1000);               // espera por un segundo
}

2. Semáforo



/*************/
/*  SEMÁFORO */
/*************/

//** Definiciones **//
int rojo=2;      //definimos el valor del pin para el led rojo
int amarillo=4;  //definimos el valor del pin para el led amarillo
int verde=7;     //definimos el valor del pin para el led verde

//** Programa **//

void setup() {
  pinMode(rojo,OUTPUT);   //declaramos el pin verde como salida
  pinMode(amarillo,OUTPUT);//declaramos el pin amarillo como salida
  pinMode(verde,OUTPUT);    //declaramos el pin rojo como salida
}

void loop() {
 digitalWrite(rojo,HIGH); //encendemos el led rojo
 delay(2000);             //esperamos 2 segundos
 digitalWrite(rojo,LOW);  //apagamos el led rojo

 digitalWrite(amarillo,HIGH); //encendemos el led amarillo
 delay(2000);                 //esperamos 2 segundos
 digitalWrite(amarillo,LOW);  //apagamos el led amarillo

 digitalWrite(verde,HIGH); //encendemos el led verde
 delay(2000);              //esperamos 2 segundos
 digitalWrite(verde,LOW);  //apagamos el led verde
}

3. Encendido progresivo de un led

Se trata aumentar y disminuir la luminosidad de un led usando la capacidad de ofrecer una tensión variable que da una salida analógica. Para ello se conecta un led al pin 11 y se provoca que su luminosidad pase de mínima a máxima, para luego ir de máxima a mínima. Los valores de salidas analógicas van del mínimo 0 al máximo 255.


int luminosidad = 0;  // variable para asignar la luminosidad al led
int led = 11; // pin del led
void setup()
{
  // en el setup no hay que configurar nada
}
void loop()
{
  for (luminosidad = 0 ; luminosidad <= 255; luminosidad=luminosidad+3) // fade in (del mínimo a máximo)
  {
    analogWrite(led, luminosidad);  // ilumina el led con el valor asignado a luminosidad (entre 0 y 255)
    delay(30); // espera 30 ms para que se vea el efecto
 }
 for (luminosidad = 255; luminosidad >=0; luminosidad=luminosidad-3)   // fade out (del máximo al mínimo)
 {
   analogWrite(led, luminosidad);
   delay(30);
 }
}

4. Secuencia de leds

Se trata de encender y apagar 5 leds secuencialmente. Los leds deben estar conectados a los pines 2, 3, 4, 5 y 6.
Se deben encender y posteriormente apagar los leds desde el pin 5 al 8, con un tiempo de duración de
encendido y apagado de 200 milisegundos.


Solución 1:
int tiempo=200; //declara una variable como entero y de valor 200
void setup() { //comienza la configuracion
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}
void loop() { //comienza el bucle principal del programa
digitalWrite(2,HIGH);
delay(tiempo);
digitalWrite(2,LOW);
delay(tiempo);
digitalWrite(3,HIGH);
delay(tiempo);
digitalWrite(3,LOW);
delay(tiempo);
digitalWrite(4,HIGH);
delay(tiempo);
digitalWrite(4,LOW);
delay(tiempo);
digitalWrite(5,HIGH);
delay(tiempo);
digitalWrite(5,LOW);
delay(tiempo);
digitalWrite(6,HIGH);
delay(tiempo);
digitalWrite(6,LOW);
delay(tiempo);
 }
Solución 2 (usando FOR):
int tiempo=200;
int n;
void setup() { //comienza la configuracion
for (n=2;n<7;n++) {
pinMode (n, OUTPUT);
}
}
void secuencia() {
for (n=2;n<7;n++) {
digitalWrite (n, HIGH);
delay (tiempo);
digitalWrite (n, LOW);
delay (tiempo);
}
}
void loop() {
secuencia();
}

5. Coche fantástico

Se trata de encender y apagar 6 leds secuencialmente. Los leds deben estar conectados a los pines
2, 3, 4, 5, 6 y 7.
Se deben encender y apagar los leds desde el pin 2 al 7, con un tiempo de encendido y apagado de 50 ms, más tarde se deben encender y apagar los leds desde el pin 7 al 2, con un tiempo de encendido y apagado de 50 ms. La secuencia se debe repetir indefinidamente.
El efecto del programa es el de las luces delanteras del "Coche fantástico".

Solución 1:
int n=0;
int tiempo=50;
void setup() { //comienza la configuración
  for (n=2;n<8;n++) {
    pinMode(n,OUTPUT);
  }
}
void loop() {
    for (n=2;n<8;n++) {
    digitalWrite (n,HIGH);
    delay(tiempo);
    digitalWrite (n,LOW);
    delay(tiempo);
  }
  for (n=7;n>=2;n--) {
    digitalWrite (n,HIGH);
    delay(tiempo);
    digitalWrite (n,LOW);
    delay(tiempo);
  }
}

Solución 2 (Mejorando el efecto visual):
int leds[]={2,3,4,5,6,7};
int n=0;
int tiempo=30;
void setup() { //comienza la configuración
  for (n=0;n<6;n++) {
    pinMode(leds[n],OUTPUT);
  }
}
void loop() {
    for (n=0;n<6;n++) {
    digitalWrite (leds[n],HIGH);
    delay(tiempo);
    digitalWrite(leds[n+1],HIGH);
    delay(tiempo);
    digitalWrite (leds[n],LOW);
    delay(tiempo*2);
  }
  for (n=5;n>=0;n--) {
    digitalWrite (leds[n],HIGH);
    delay(tiempo);
    digitalWrite(leds[n-1],HIGH);
    delay(tiempo);
    digitalWrite (leds[n],LOW);
    delay(tiempo*2);
  }
}

6. Simulación de la luz de una vela

Se trata de simular el movimiento de la llama de una vela. Hacemos uso de la instrucción para generar un numero aleatorio que lo asignamos a una salida analógica PWM y otro número que lo asociamos a la variable de temporización (tiempo que esperamos para cambiar el valor de la salida).


  /* Simula luz de vela*/

int ledPin = 9;    // selecciona el puerto PWM
int val = 0;       // define y pone a cero la variable "brillo"
int delayval = 0;  // define el intervalo de cambio de valor de salida

void setup() {
  randomSeed(0);            // inicializa el generador de números aleatorios
  pinMode(ledPin, OUTPUT);  // declara el pin de SALIDA pin 9
}

void loop() {
  val = random(100,255);       // genera un número aleatorio entre 100 y 255 que asigna a la variable val
  analogWrite(ledPin, val);    // envía ese valor a la salida pin 9

  delayval = random(50,150);   // genera un numero aleatorio entre 50 y 150 y lo asigna a la variable de temporización
  delay(delayval);             // espera un tiempo delayval medido en milisegundos
}

7. Encender y apagar un led con un pulsador

Al presionar el pulsador se encenderá el led. Si se presiona nuevamente el led se apaga.
FUNCIONAMIENTO:
  • Se utilizara la variable val la cual leerá digitalmente lo que sucede en el pin 2 (pulsador), su comando seria digitalRead(PULSADOR). 
  • Utilizamos la orden if. La estructura if es un condicional que permite decidir en función del valor de la variable val, si este es alto (HIGH=1) o si es bajo (LOW=0). Se utiliza una variable estado (state) que registrará los cambios de HIGH y LOW
  • Para que el LED se encienda, si state==1 se utiliza el comando  digitalWrite(LED,HIGH). Para quel LED pueda apagarse se utiliza el mismo comando digitalWrite(LED,HIGH).


// Práctica encender LED con un pulsador y luego apagar LED con el mismo
 //botón pulsador
const int LED = 8;
const int PULSADOR = 2;
int val = 0; //val se emplea para almacenar el estado del pulsador
int state = 0; // 0 LED apagado. 1 LED encendido
int old_val = 0; // almacena el antiguo valor de val
void setup(){  // definir si la variable es de entrada // o salida.
 pinMode(LED,OUTPUT); // establecer que el pin digital es una señal de salida
 pinMode(PULSADOR,INPUT); // y PULSADOR como señal de entrada
 }
void loop() {       // loop = realice un lazo continuamente
 val= digitalRead(PULSADOR); // lee el estado del pulsador
if ((val == HIGH) && (old_val == LOW)){
 state=1-state;
 delay(10);
 }
 old_val = val; // valor del antiguo estado
if (state==1){
 digitalWrite(LED, HIGH); // enciende el LED
 }
else{
 digitalWrite(LED,LOW); // apagar el LED
 }
 }

8. Encender y apagar un led con dos pulsadores

Un pulsador encenderá el led y el otro lo apaga.

int LED = 8; //LED
int pulsador1 = 2; // primer pulsador
int pulsador2 = 6; // segundo pulsador

 void setup () { 
  pinMode (LED, OUTPUT); //configurado como salida
  pinMode (pulsador1,INPUT); //configurado de entrada
  pinMode (pulsador2, INPUT);
}

 void loop () {
  if (digitalRead(pulsador1) == HIGH){ //si el pulsador1 está en alto
    digitalWrite (LED, HIGH); //encender el LED
  }
  else if (digitalRead(pulsador2) == HIGH){ //si el pulsador2 está en alto
    digitalWrite (LED, LOW); // apagar el LED
  }
}

9 may 2015

Arduino: cursos y tutoriales

Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.
Placa Arduino UNO:
Entorno de desarrolo de Arduino:
Arduino puede detectar el exterior utilizando una variedad de sensores y puede controlar su entorno modificando el encendido de luces, motores y otros actuadores. El microcontrolador de la placa se programa utilizando el lenguaje de programación de Arduino. Los proyectos de Arduino puede ser independiente o se pueden comunicar con el software que se ejecuta en un ordenador (por ejemplo, Flash, Processing, MaxMSP). Las placas pueden ser construidos a mano o compradas ensambladas, el software puede ser descargado de forma gratuita. Los diseños de referencia de hardware están disponibles bajo una licencia de código abierto, que pueden adaptarlos a nuestras necesidades.

Páginas web de referencia para el trabajo con Arduino:

Enlaces a la web oficial de Arduino

Web de Tecnología sobre arduino

Cursos Arduino en español

Cursos Arduino en inglés

  • Open Source Hardware Group. Curso básico de Arduino en doce vídeos, en los que daremos los primeros pasos para programar una de estas placas. Aquí podéis ver el primero de esos vídeos.
  • Massachusetts Institute of Technology tiene otro vídeo en el que se nos explica rápidamente todo lo que podemos hacer con un Arduino.
  • Forefront. Otro curso concentrado y rápido para los que no tengan mucho tiempo: explicaciones concisas y rápidas y un ejemplo de programación básico para ver si la afición os despierta interés.
  • Coursetalk. Tiene otro curso con el que podemos aprender a crear proyectos interactivos. Es bajo demanda, de modo que podemos unirnos a él sin estar atados a fechas fijas.
  • Lista de reproducción de diez vídeos en YouTube nos enseñará desde cero cómo hacer proyectos como una lámpara que cambia de color dependiendo de nuestros ánimos en Twitter, desde un nivel básico hasta algo más avanzado.
  • SchooX. Tiene un curso de diez lecciones más un anexo con materiales para aprender todos los aspectos más técnicos de Arduino. Ideal para completar conocimientos desde un curso más básico.

Dibujo de montajes de circuitos con Arduino

  • Fritzing Fritzing es una iniciativa de hardware de código abierto que hace que la electrónica sea accesibles como material creativo para cualquier persona. Ofrece una herramienta de software, un sitio web de la comunidad y servicios con el mismo espíritu de Processing y Arduino, fomentando un ecosistema creativo que permite a los usuarios documentar sus prototipos, compartirlos con otros, enseñan la electrónica en clase, y el diseño y fabricación de PCB profesionales.

Creación de circuitos con simulador

5 jun 2012

Arduino. Semáforo a 220 V con TRIACS











Twitter Facebook Tuenti LinkedIn gmail Favorites More