ejemplos arduino

11
Ejemplos > Digital I/O LED parpadeante En la mayoría de los lenguajes de programación, el primer programa que tú escribes imprime en la pantalla del ordenador la frase "Hola Mundo". Ya que una placa Arduino no tiene una pantalla, haremos parpadear un LED. Circuito: Codigo: /* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }

Upload: josetigrillo

Post on 28-Oct-2015

69 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Ejemplos Arduino

Ejemplos > Digital I/O

LED parpadeanteEn la mayoría de los lenguajes de programación, el primer programa que tú escribes imprime en la pantalla del ordenador la frase "Hola Mundo". Ya que una placa Arduino no tiene una pantalla, haremos parpadear un LED.

Circuito:

Codigo:

/*  Blink  Turns on an LED on for one second, then off for one second, repeatedly.   This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards.// give it a name:int led = 13;

// the setup routine runs once when you press reset:void setup() {                  // initialize the digital pin as an output.  pinMode(led, OUTPUT);     }

// the loop routine runs over and over again forever:void loop() {  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)  delay(1000);               // wait for a second  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW  delay(1000);               // wait for a second}

Ejemplos > E/S Analógica

Entrada AnalógicaUn potenciómetro es un elemento pasivo con un eje que proporciona una resistencia variable, la cual puede ser leída por una placa Arduino como un valor analógico. En este ejemplo, ese valor controlará la frecuencia con la que parpadeará un LED Conectamos 3 cables a la placa Arduino. El primero desde masa a uno de los pines extremos del potenciómetro. El segundo, desde 5 voltios al otro pin extremo del potenciómetro. El tercero desde el pin analógico 2 al pin medio del potenciómetro.

Page 2: Ejemplos Arduino

Al girar el eje del potenciómetro, cambiamos el valor de la resistencia entre los pines de los extremos y el pin central del potenciómetro. Esto cambia la "cercanía" relativa del pin central a 5 Voltios y a masa, ofreciendo diferentes valores analógicos de entrada. Cuando giramos el eje a tope en un sentido, llegarán 0 voltios al pin central, y leeremos 0. Cuando giramos el eje a tope, pero en el otro sentido, llegarán 5 voltios al pin central y leeremos 1023. Entre medias, analogRead () retorna un número entre 0 y 1023 que es proporcional al valor del voltaje aplicado al pin central.

Circuito

/*  Analog Input Demonstrates analog input by reading an analog sensor on analog pin 0 and turning on and off a light emitting diode(LED)  connected to digital pin 13.  The amount of time the LED will be on and off depends on the value obtained by analogRead().   The circuit: * Potentiometer attached to analog input 0 * center pin of the potentiometer to the analog pin * one side pin (either one) to ground * the other side pin to +5V * LED anode (long leg) attached to digital output 13 * LED cathode (short leg) attached to ground  * Note: because most Arduinos have a built-in LED attached  to pin 13 on the board, the LED is optional. Created by David Cuartielles modified 30 Aug 2011 By Tom Igoe  This example code is in the public domain. http://arduino.cc/en/Tutorial/AnalogInput */

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

Page 3: Ejemplos Arduino

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);      // turn the ledPin on  digitalWrite(ledPin, HIGH);    // stop the program for <sensorValue> milliseconds:  delay(sensorValue);            // turn the ledPin off:          digitalWrite(ledPin, LOW);     // stop the program for for <sensorValue> milliseconds:  delay(sensorValue);                  }

Ejemplos > E/S Analógicas

Apagado gradualDemuestra el uso de la salida analógica (PWM) para apagar gradualmente un LED.

Circuito

Un LED conectado al pin de salida 9 a través de una resistencia de 220 ohmios.

Code

/* Fading  This example shows how to fade an LED using the analogWrite() function.  The circuit: * LED attached from digital pin 9 to ground.  Created 1 Nov 2008 By David A. Mellis modified 30 Aug 2011 By Tom Igoe 

Page 4: Ejemplos Arduino

 http://arduino.cc/en/Tutorial/Fading  This example code is in the public domain.  */

int ledPin = 9;    // LED connected to digital pin 9

void setup()  {   // nothing happens in setup }

void loop()  {   // fade in from min to max in increments of 5 points:  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5)

{     // sets the value (range from 0 to 255):    analogWrite(ledPin, fadeValue);             // wait for 30 milliseconds to see the dimming effect        delay(30);                              }

  // fade out from max to min in increments of 5 points:  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5)

{     // sets the value (range from 0 to 255):    analogWrite(ledPin, fadeValue);             // wait for 30 milliseconds to see the dimming effect        delay(30);                              } }

Ejemplos > E/S (I/O) Digital

BotónLos pulsadores o switches conectan dos puntos de un circuito al ser pulsados. Este ejemplo enciende el LED integrado en el pin 13 cuando pulsas el botón. Conecta tres cables a la placa Arduino. Los dos primeros, rojo y negro, conectan a las dos hileras largas verticales de los laterales de la placa universal (breadboard ) para proporcionar acceso a la fuente de 5 voltios y a masa (ground). El tercer cable va desde el pin digital 2 a una patilla del pulsador. Esa misma patilla del pulsador se conecta a través de una resistencia pull-down (en este caso 10 KOhms) a masa. El otro extremo del pulsador se conecta a la fuente de 5 voltios. Cuando el pulsador está abierto (sin pulsar) no hay conexión entre las dos patas del pulsador, de forma que el pin está conectado a tierra (a través de la resistencia pull-down) y leemos un LOW (bajo ó 0). Cuando el botón se cierra (pulsado), se establece la unión entre sus dos extremos, conectando el pin a 5 voltios, por lo que leemos un HIGH (alto ó 1). También puedes cablear el circuito en sentido contrario, con una resistencia "pull-up" que mantenga la entrada en HIGH, y que pase a LOW cuando se pulse el botón. Así, el comportamiento del programa (sketch) se invertirá, con el LED normalmente encendido y apagado cuando se pulsa el botón. Si se desconectas el pin digital de E/S del todo, el LED puede parpadear de forma errática. Esto se debe a la entrada es "flotante", es decir, al azar se tornará en HIGH o LOW. Por eso se necesita la resistencia pull-up o pull-down en el circuito.

Circuito

Page 5: Ejemplos Arduino

Code

/*  Button  Turns on and off a light emitting diode(LED) connected to digital   pin 13, when pressing a pushbutton attached to pin 2.    The circuit: * LED attached from pin 13 to ground  * pushbutton attached to pin 2 from +5V * 10K resistor attached to pin 2 from ground  * Note: on most Arduinos there is already an LED on the board attached to pin 13.   created 2005 by DojoDave <http://www.0j0.org> modified 30 Aug 2011 by Tom Igoe  This example code is in the public domain.  http://www.arduino.cc/en/Tutorial/Button */

// constants won't change. They're used here to // set pin numbers:const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

// variables will change:int buttonState = 0;         // variable for reading the pushbutton status

void setup() {  // initialize the LED pin as an output:  pinMode(ledPin, OUTPUT);        // initialize the pushbutton pin as an input:  pinMode(buttonPin, INPUT);     }

void loop(){  // read the state of the pushbutton value:  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.  // if it is, the buttonState is HIGH:  if (buttonState == HIGH)

Page 6: Ejemplos Arduino

{         // turn LED on:        digitalWrite(ledPin, HIGH);    }   else

{    // turn LED off:    digitalWrite(ledPin, LOW);   }}

Ejemplos > Librarías > LiquidCrystal

LiquidCrystalLa librería LiquidCrystal te permite controlar displays LCD que sean complatibles con el driver Hitachi HD44780. Hay muchos de ellos ahí fuera, y puedes comunicarte con ellos a través del interfaz de 16 pines. Este sketch de ejemplo imprime "Hello World!" en el LCD y muestra el tiempo en segundos desde que Arduino fué reseteado por última vez.

Salida del sketch en un LCD de 2x16 El LCD tiene un interfaz paralelo, significando esto que el microcontrolador tiene que manipular varios pines del interfaz a la vez para controlarlo. El interfaz consta de los siguientes pines: Un pin de selección de registro (RS) que controla en qué parte de la memoria del LCD estás escribiendo datos. Puedes seleccionar bien el registro de datos, que mantiene lo que sale en la pantalla, o un registro de instrucción, que es donde el controlador del LCD busca las instrucciones para saber cual es lo siguiente que hay que hacer. El pin de lectura/escritura (R/W)que selecciona el modo de lectura o el de escritura. Un pin para habilitar (enable) que habilita los registros. 8 pines de datos (D00-D07). Los estados de estos pines (nivel alto o bajo) son los bits que estás escribiendo a un registro cuando escribes, o los valores de lectura cuando estás leyendo. Hay también un pin de contraste del display (Vo), pines de alimentación (+5V y GND) y pines de retro-iluminación (Bklt+ y Bklt-), que te permiten alimentar el LCD, controlar el contraste del display, o encender y apagar la retro-iluminación, respectivamente. El proceso de controlar el display involucra la colocación de los datos que componen la imagen de lo que quieres mostrar, en los registros de datos, y luego, colocar las instrucciones, en el registro de instrucciones. La librería LiquidCrystal te simplifica todo este proceso de forma que no neesitas saber las instrucciones de bajo nivel. Los LCD-s compatibles con Hitachi pueden ser controlados de dos modos: 4 bits u 8 bits. El modo de 4 bits requiere siete pines de E/S de Arduino, mientras el modo de 8 bits requiere 11 pines. Para mostrar texto en la pantalla, puedes hacer la mayoría de las cosas en modo 4 bits, por lo que el ejemplo muestra como controlar un LCD de 2x16 en modo de 4 bits. NOTA: La librería LiquidCrystal tiene revisiones venidas a menos después de la versión 0016 de Arduino. Gracias a Limor Fried por reescribirla para incluir los modos de 4 y 8 bits y otras funcionalidades. Estas notas hacen referencia a la versión actual como es Arduino 0017.

Circuito

El pin RS del LCD conectado a la E/S digital en el pin 12

Page 7: Ejemplos Arduino

El pin enable del LCD conectado a la E/S digital en el pin 11. Los pines D4 - D7 conectado a las E/S digitales desde el pin 5 hasta el 2. Los pines de voltaje y tierra conectados a +5V y tierra. El pin Vo, que controla el constraste, conectado a un potenciómetro. Ajusta el potenciómetro

para que el texto tenga el contraste que tú quieras.

Code

/*  LiquidCrystal Library - Hello World  Demonstrates the use a 16x2 LCD display.  The LiquidCrystal library works with all LCD displays that are compatible with the  Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface.  This sketch prints "Hello World!" to the LCD and shows the time.   The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 5 * LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground * 10K resistor: * ends to +5V and ground * wiper to LCD VO pin (pin 3)  Library originally added 18 Apr 2008 by David A. Mellis library modified 5 Jul 2009 by Limor Fried (http://www.ladyada.net) example added 9 Jul 2009 by Tom Igoe modified 22 Nov 2010 by Tom Igoe  This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal */

Page 8: Ejemplos Arduino

// include the library code:#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {  // set up the LCD's number of columns and rows:   lcd.begin(16, 2);  // Print a message to the LCD.  lcd.print("hello, world!");}

void loop(){  // set the cursor to column 0, line 1  // (note: line 1 is the second row, since counting begins with 0):  lcd.setCursor(0, 1);  // print the number of seconds since reset:  lcd.print(millis()/1000);}

El coche fantástico

Descripción del ejercicioHemos denominado este ejemplo como "El coche fantástico" en memoria de la serie deTV de los años 80 en la que el famoso David Hasselhoff tenía una máquina de IA conduciendo su Pontiac. El coche estaba equipado con gran cantidad de LED-s de todos los tamaños posibles que realizaban efectos parpadeantes.De esta manera hemos decidido, con el objetivo de aprender programación secuencial y buenas técnicas para programar la placa E/S, sería interesante usar el coche fantástico como una metáfora.Este ejemplo hace uso de 6 LED-s conectados a los PIN 2 a 7 de la placa mediante resistencias de 220 Ohmios. El primer código de ejemplo hace parpadear a los LED en secuencia de uno en uno, utilizando sólo las funciones digitalWrite(pinNum,HIGH/LOW) y delay(time). El segundo ejemplo muestra cómo usar una secuencia de control for(;;;) para hacer lo mismo, pero en menos líneas de código. El tercer y último ejemplo se centra en el efecto visual de apagar y encender los LED-s de una forma más suave.

Elementos necesarios:· 6 LED-s.· 6 resistencias de 220 Ohmios.· Una placa protoboard.· Cables para realizar las conexiones

Esquema.

Page 9: Ejemplos Arduino

Código fuente/* El coche fantástico 1* ---------------------** Básicamente una extensión del LED parpadeante.*** (cleft) 2005 K3, Malmo University* @author: David Cuartielles* @hardware: David Cuartielles, Aaron Hallborg*/int pin2 = 2; // PIN-es de los LEDPrácticas con Arduino Nivel I20int pin3 = 3;int pin4 = 4;int pin5 = 5;int pin6 = 6;int pin7 = 7;int timer = 100; // Temporizadorvoid setup(){pinMode(pin2, OUTPUT); // Configuración de los PIN-es como salidapinMode(pin3, OUTPUT);pinMode(pin4, OUTPUT);pinMode(pin5, OUTPUT);pinMode(pin6, OUTPUT);pinMode(pin7, OUTPUT);}void loop() {digitalWrite(pin2, HIGH); // Enciende y apaga secuencialmente LED-sdelay(timer);digitalWrite(pin2, LOW);delay(timer);digitalWrite(pin3, HIGH);delay(timer);digitalWrite(pin3, LOW);delay(timer);digitalWrite(pin4, HIGH);delay(timer);digitalWrite(pin4, LOW);delay(timer);digitalWrite(pin5, HIGH);delay(timer);digitalWrite(pin5, LOW);delay(timer);digitalWrite(pin6, HIGH);delay(timer);digitalWrite(pin6, LOW);delay(timer);digitalWrite(pin7, HIGH);

Page 10: Ejemplos Arduino

delay(timer);digitalWrite(pin7, LOW);delay(timer);digitalWrite(pin6, HIGH);Prácticas con Arduino Nivel I21delay(timer);digitalWrite(pin6, LOW);delay(timer);digitalWrite(pin5, HIGH);delay(timer);digitalWrite(pin5, LOW);delay(timer);digitalWrite(pin4, HIGH);delay(timer);digitalWrite(pin4, LOW);delay(timer);digitalWrite(pin3, HIGH);delay(timer);digitalWrite(pin3, LOW);delay(timer);}