PDF de programación - Tutorial Arduino + P5, Grasshopper, Firefly

Imágen de pdf Tutorial Arduino + P5, Grasshopper, Firefly

Tutorial Arduino + P5, Grasshopper, Fireflygráfica de visualizaciones

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
  • Links de descarga
http://lwp-l.com/pdf14041

Comentarios de: Tutorial Arduino + P5, Grasshopper, Firefly (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad