Actualizado el 29 de Abril del 2019 (Publicado el 26 de Octubre del 2018)
1.656 visualizaciones desde el 26 de Octubre del 2018
7,5 MB
58 paginas
Creado hace 13a (29/10/2010)
random[arq]
Tutorial (Versión en español – work in progress)
Por Juanma Sarrió
ARDUINO +
[P5, GRASSHOPPER, FIREFLY]
Arduino open source hardware developed by Massimo Banzi, David Cuartielles, Tom Igoe,
Gianluca Martino & David Mellis:
http://www.arduino.cc
Processing developed by Ben Fry & Casey Reas:
http://processing.org
Grasshopper developed by David Rutten:
http://www.grasshopper3d.com
Firefly developed by Andy Payne & Jason K Johnson:
http://www.fireflyexperiments.com/
Juanma Sarrió García
Tutorial Arduino, Arduino + P5, Arduino + GH + Fiirefly
EJEMPLOS BÁSICOS DE ARDUINO_
01_Blink
Esquema en Fritzing
Abrimos Arduino y una vez dentro de él, pulsamos el botón OPEN (El que tiene la flechita hacia
arriba), vamos al submenú DIGITAL y abrimos el ejemplo BLINK.
Código del ejemplo Blink de Arduino
int ledPin = 13; // LED conectado en el pin digital 13
// El Setup () sólo se lee UNA vez (como en Processing).
void setup() {
pinMode(ledPin, OUTPUT); // Declaramos el pin donde tenemos el Led como SALIDA
}
// El Loop () se lee constantemente.
void loop() {
digitalWrite(ledPin, HIGH); // Encendemos el LED (HIGH → Le pasamos los 5 voltios)
delay(1000); // Esperamos 1000 milisegundos (1 seg)
digitalWrite(ledPin, LOW); // Apagamos el LED (LOW → Le pasamos 0 voltios)
delay(1000); // Esperamos 1000 milisegundos (1 seg)
}
El uso de Leds es muy útil para monitorizar acciones y comprobar que funcionan conexiones o
sensores. En este ejemplo, el LED sólo tiene dos posiciones, o encendido o apagado, ya que lo estamos
controlando con un pin DIGITAL (que sólo admite esas dos posiciones). Sin embargo, un LED puede
adoptar más estados como veremos más adelante.
1
02_Button
Esquema en Fritzing
Juanma Sarrió García
Tutorial Arduino, Arduino + P5, Arduino + GH + Fiirefly
Pulsamos el botón OPEN (El que tiene la flechita hacia arriba), vamos al submenú DIGITAL y
abrimos el ejemplo BUTTON.
Código del ejemplo Button de Arduino
int buttonPin = 2; // Botón conectado al pin DIGITAL 2
int ledPin = 13; // LED conectado al pin Digital 13
int buttonState = 0; // Variable que leerá el estado del Botón ( 0 = LOW ; 1 = HIGH)
void setup() {
pinMode(ledPin, OUTPUT); // Declaramos el LED como SALIDA
pinMode(buttonPin, INPUT); // Declaramos el Botón como ENTRADA
}
void loop(){
// Leemos (digitalmente) el estado del botón y lo guardamos en la variable buttonState
buttonState = digitalRead(buttonPin);
// Si el botón está pulsado (HIGH) ...
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW); // Encendemos el LED (HIGH → 5 Voltios)
}
// ...en caso contrario (el botón no está pulsado → LOW)
else {
digitalWrite(ledPin, HIGH); // Apagamos el LED (LOW → 0 Voltios)
}
}
Como vemos, en este sketch, no sucede nada, salvo que apretemos el botón y cambiemos el
estado del botón, y a su vez, el de la variable buttonState.
2
03_Coche Fantástico
Esquema en Fritzing
Juanma Sarrió García
Tutorial Arduino, Arduino + P5, Arduino + GH + Fiirefly
Pulsamos el botón OPEN (El que tiene la flechita hacia arriba), vamos al submenú CONTROL y
abrimos el ejemplo ARRAYS.
Código del ejemplo Arrays de Arduino
int timer = 100; // Variable para controlar el retardo del loop (100 milisegundos)
int ledPins[] = { 2, 7, 4, 6, 5, 3 }; // Array de los pines donde conectaremos los LEDs
int pinCount = 6; // Longitud de la Array
void setup() {
int thisPin; // Variable temporal
// La Array está numerada desde 0 hasta (pinCount – 1), es decir de 0 a 5
// Usamos un bucle FOR para inicializar cada pin como SALIDA
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
}
}
void loop() {
/* Bucle FOR para ir encendiendo de uno en uno los leds. Funciona así:
Para el PRIMER led...lo enciendo durante los milisegundos que he indicado con la variable
timer...y lo apago...enciendo el SEGUNDO led, etc...
3
Juanma Sarrió García
Tutorial Arduino, Arduino + P5, Arduino + GH + Fiirefly
*/
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
digitalWrite(ledPins[thisPin], LOW);
}
/* Bucle FOR para ir encendiendo de uno en uno los leds. Funciona así:
Para el ÚLTIMO led...lo enciendo durante los milisegundos que he indicado con la variable
timer...y lo apago...enciendo el PENÚLTIMO led, etc...
*/
for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) {
// Encendemos el LED
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// Apagamos el LED
digitalWrite(ledPins[thisPin], LOW);
}
}
Este es el primer sketch donde podemos inspirarnos para realizar una instalación (o parte de ella).
Posteriormente, veremos cómo poder introducir una interacción con este sketch y que ya no esté “todo”
programado, si no que reaccione ante determinada luz, sonido, vibración, temperatura, presencia de
obstáculos,...
4
04_Sensor Analógico
Esquema en Fritzing
Juanma Sarrió García
Tutorial Arduino, Arduino + P5, Arduino + GH + Fiirefly
04_Sensor_Analógico_Potenciómetro_SerialPrintln.
vez
dentro
Una
de
Arduino,
abriremos
el
ejemplo
Código del ejemplo 04_Sensor_Analógico_Potenciómetro_SerialPrintln
int potPin = 0; // Potenciómetro en el pin ANALÓGICO 0
int ledPin = 9; // LED en el pin PWM 9 (los pines PWM permiten pasar un rango como un tren
de pulsos PWM → Pulse Width Modulation)
int valor; // variable para almacenar el valor capturado desde el potenciómetro
int valorMapeado; // variable para almacenar el valor mapeado
void setup() {
Serial.begin(9600); // Abrimos el puerto Serie de Arduino a una velocidad de 9600 baudios
pinMode(ledPin, OUTPUT); // Declaramos el LED como SALIDA
}
void loop() {
// Leemos analógicamente el potenciometro y lo guardamos en la variable valor
valor = analogRead(potPin);
// Mapeamos el valor de la variable valor entre el rango original del potenciometro (0 → 1023) y lo
pasamos al rango del LED ( 0 → 255 como en la definición de colores de Processing).
valorMapeado = map(valor,0,1023,0,255);
// Escribimos analógicamente el valorMapeado en el LED
analogWrite(ledPin,valorMapeado);
5
Juanma Sarrió García
Tutorial Arduino, Arduino + P5, Arduino + GH + Fiirefly
// Abrimos el Serial Monitor de Arduino y ahí podremos ver qué valores le vamos pasando al LED
Serial.println(valorMapeado);
}
En este ejemplo, vamos a empezar a ver como monitorizar operaciones o eventos en Arduino,
gracias al Puerto Serie. Esta técnica nos permitirá, posteriormente mandar datos o acciones a otros
programas como Processing, Grasshopper, Pure Data, Flash, o incluso a un Iphone/ Ipad o similar … para
dotar de mayor interactividad a nuestra instalación.
6
05_Piezoeléctrico (Zumbador)
Esquema en Fritzing
Juanma Sarrió García
Tutorial Arduino, Arduino + P5, Arduino + GH + Fiirefly
int ledPin = 13; // LED en el pin Digital 13
int knockSensor = 0; // Piezoeléctrico en el pinAnalógico 0
int threshold = 100; // Valor límite a partir del cual decidimos que se ha detectado un golpe o no
int sensorReading = 0; // Variable que guarda la lectura del piezoeléctrico
int ledState = LOW; // Variable que guarda el último estado del LED y que decide ON/OFF
void setup() {
pinMode(ledPin, OUTPUT); // Declaramos el pin como SALIDA
Serial.begin(9600); // Abrimos el Puerto Serie a 9600 baudios
}
void loop() {
// Leemos analógicamente el piezo y guardamos la lectura en sensorReading
sensorReading = analogRead(knockSensor);
/* Entramos en un bucle IF...
Si la lectura guardada en sensorReading es MAYOR O IGUAL que el límite que hemos fijado con la
variable threshold ….
*/
if (sensorReading >= threshold) {
ledState = !ledState; // Invertimos el valor de ledState (de LOW a HIGH)
digitalWrite(ledPin, ledState); // Escribimos digitalmente ese valor en el LED
// Escribimos en el Puerto Serie la palabra (es una String de texto) para saber que se ha cumplido la
acción
Serial.println("Knock!");
}
delay(100); // Retrasamos 100 milisegundos que el programa vuelva a empezar otro bucle del loop
(). Esta orden es muy útil para evitar que bloqueemos el Puerto Serie.
}
Los piezoeléctricos son unos elementos muy útiles, ya que son micrófonos de contacto. Si le
pasamos una vibración, nos puede devolver un voltaje, y si le pasamos voltaje, nos puede devolver un
sonido. Son actuadores fundamentales en las instalaciones sonoras caseras, como veremos
posteriormente, como puede ser un Theremin.
7
06_Fotoresistencia (LDR)
Esquema en Fritzing
Juanma Sarrió García
Tutorial Arduino, Arduino + P5, Arduino + GH + Fiirefly
int LDR_pin = 0; // LDR en el pin Analógico 0
int LED_pin = 6; // LED en el pin Digital PWM 6
int LDR_val; // Variable que almacena la lectura del LDR
int LDR_mapeado; // Variable mapeada para encender el LED
void setup() {
Serial.begin(9600); // Abrimos el Puerto Serie a 9600 baudios
pinMode(LED_pin,OUTPUT);
// Aunque no es necesario declarar los pines ANALOGOS como INPUTS, lo haremos
pinMode(LDR_pin,INPUT);
}
void loop(){
LDR_val = analogRead(LDR_pin); // leemos el valor del LDR
LDR_mapeado = constrain(LDR_val,0,255);// limitamos el valor del LDR al rango [0-255] para el LED
analogWrite(LED_pin,LDR_mapeado); // Le pasamos al LED el valor mapeado
Serial.print("LDR mapeado = ");// escribimos en el Puerto Serie el valor con que se enciende
Comentarios de: Tutorial Arduino + P5, Grasshopper, Firefly (0)
No hay comentarios