DESCRIPCIÓN DE LA TARJETA ARDUINO (1)
BÁSICO
La información referente a esta tarjeta se puede encontrar en este
sitio:
http://www.arduino.cc
Localización en la tarjeta de los puertos de conexión:
- USB (para conectarse a la computadora)
- Alimentación de voltaje (X1), tierra, Vin, 5 y 3.3 voltios
- Analógicos (entradas, max. 5 Voltios)
- Digitales (in / out)
1.- LA CONEXIÓN DE LA TARJETA A LA
COMPUTADORA.
- para alimentar la tarjeta con el programa
- suministro de corriente
El software Arduino.
Principales elementos del Software.
El lenguaje de programación.
Configuración inicial: Especificar tipo de tarjeta y conexión serial.
2.- SUBIENDO LA PROGRAMACIÓN AL PROCESADOR.
ENCENDIENDO UN LED.
Cargar en el procesador el ejercicio Básico "Blink".
Cambiar algunos parámetros (puerto - LED exterior) y
delay.
Encendido del LED (exterior)
Observar la polaridad del LED
Códigos de color / valor de resistencia (
link)
Uso del protoboard (tableta para prototipos) (
link)
3.- COMPONENTES Y DIAGRAMAS
ELECTRÓNICOS
El software que se puede utilizar para la creación de diagramas
electrónicos es el
Fritzing.
Aquí se pueden representar los componentes y como se conectan entre si
en un protoboard y con la tarjeta Arduino.
Lectura de sensores en la tarjeta Arduino.
Conexión de sensores en el puerto analógico A0
Diagrama conexión fotoresistencia (LDR).
Observar el cambio de lectura en el puerto serial, conforme pase luz o
sombra sobre la fotorresistencia. Estos valores son los que nos
permiten tomar decisiones sobre algún evento que ocurre en determinada
condición. (IF)
Lectura de diferentes sensores:
botón (digital)
/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial
monitor
This example code is in the public domain.
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
Serial.println(buttonState);
delay(1); // delay in between reads for stability
}
sensor de distancia infrarrojo
sensor de distancia ultrasonido
(
sensores)
4.- EJERCICIO : ENCENDIENDO UN LED
(IF).
Combinando la lectura del LDR con el encendido del LED.
La función if (condición) para la toma de decisiones.
Fijamos un valor arbitrario (sensorValue < 240) para que se
encienda el LED. Tomar en cuenta que en lugar de un LED el pulso
puede utilizarse para cualquier tipo de actuadores, como motores,
relevadores, etc.
------------------------------------
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
if (sensorValue < 240) {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the
voltage level)
delay(100);
digitalWrite(led, LOW); // turn the LED off by making the
voltage LOW
//delay(1);
}
}
-----------------------------------
5.- EJERCICIO : MEDICIÓN DE UN SENSOR INFRARROJO.
Medición de la distancia a partir de un sensor infrarrojo
Sharp.
Observar los cambios de lecturas en el sensor (cargando el programa
analog read serial).
Conectar un potenciómetro de 10K y observar los cambios de lecturas.
(Analog Read Serial)
La lectura de los valores ocasionados por la rotación del
potenciómetro se leen a través del puerto analógico 0 (A0) y en el
puerto serial.
EJERCICIO: programar la tarjeta Arduino para que un potenciómetro
actúe sobre dos LED's como se ilustra a continuación
Bibliografía
Arduino Cookbook
Margolis Michael
O'Reilly Media
Beginning Arduino
McRoberts Michael
Apress
Getting Started with Arduino (Make: Projects)
Massimo Banzi
O'Reilly Media
En Internet:
http://www.arduino.cc
Learning
Arduino (Adafruit)
PROGRAMACIÓN DE ARDUINO. ACTIVIDADES.
EN
EL SALÓN DE CLASE (1)
EN
CASA y/o EN EL BLOG (2), (3) y (4)
______________________________________________________________________________
- Descargar e instalar el software Arduino.
- Realización de los ejercicios propuestos.
- Revisión de autores de New Media
- Propuesta de un proyecto
______________________________________________________________________________
CREACIÓN DE PROGRAMAS PARA ARDUINO. (2)
6.- UTILIZACIÓN DE UN LASER COMO
SWITCH.
Combinación de un generador laser y LDR.
7.- LECTURA DE UN SENSOR PIR.
-------------------------------------------
ref.: http://bildr.org/2011/06/pir_arduino/
Lectura de mensaje en puerto serial (serial monitor)
Se le puede añadir encendido de LED (Ejercicio)
------------------------------------------
int pirPin = 2; //digital 2
void setup(){
Serial.begin(9600);
pinMode(pirPin, INPUT);
}
void loop(){
int pirVal = digitalRead(pirPin);
if(pirVal == LOW){ //was motion detected
Serial.println("Motion Detected");
delay(2000);
}
}
-----------------------------------------
Otra opción: Mensaje de movimiento en serial y LED
-------------------------------------------
/*
* PIR sensor tester
*/
int ledPin = 13; // choose the pin for the LED
int inputPin = 2; // choose the input pin (for PIR
sensor)
int pirState = LOW; // we start, assuming no motion
detected
int val = 0; // variable for reading the pin
status
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input
Serial.begin(9600);
}
void loop(){
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, HIGH); // turn LED ON
if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected!");
// We only want to print on the output change, not state
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW); // turn LED OFF
if (pirState == HIGH){
// we have just turned of
Serial.println("Motion ended!");
// We only want to print on the output change, not state
pirState = LOW;
}
}
}
8.- LECTURA DE UN SENSOR DE ULTRASONIDO.
PW (Pulso) - También puede usarse en análogo.
------------------------------------------------------------
//Feel free to use this code.
//Please be respectful by acknowledging the author in the code if
you use or modify it.
//Author: Bruce Allen
//Date: 23/07/09
//Digital pin 7 for reading in the pulse width from the MaxSonar
device.
//This variable is a constant because the pin will not change
throughout execution of this code.
const int pwPin = 7;
//variables needed to store values
long pulse, inches, cm;
void setup() {
//This opens up a serial connection to shoot the results back to
the PC console
Serial.begin(9600);
}
void loop() {
pinMode(pwPin, INPUT);
//Used to read in the pulse that is being sent by the MaxSonar
device.
//Pulse Width representation with a scale factor of 147 uS per
Inch.
pulse = pulseIn(pwPin, HIGH);
//147uS per inch
inches = pulse/147;
//change inches to centimetres
cm = inches * 2.54;
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(500);
}
------------------------------------------------------
INTEGRACIÓN DE UN RELAY.
Del ejercicio anterior retomamos el programa de lectura e incorporamos
las siguientes modificaciones:
- si la distancia medida es menor a 60 centímetros envía una señal
(voltaje de 5 voltios) en este caso a un relay (relevador), conectado
a través de la salida digital 9 de la Arduino.
Aunque la conexión directa del relevador a la salida digital puede
funcionar, lo correcto es utilizar un transistor como switch, ejemplo:
2N2222 , para no cargar la salida digital del microprocesador. Notar
el cambio de conexión.
El diagrama Final, incluye conexión del sensor de distancia, el
relevador con el motor conectado.
-----------------------------------------------------
const int pwPin = 7;
long pulse, inches, cm;
void setup() {
pinMode (9, OUTPUT);
}
void loop() {
pinMode(pwPin, INPUT);
//Used to read in the pulse that is being sent by the MaxSonar
device.
//Pulse Width representation with a scale factor of 147 uS per
Inch.
pulse = pulseIn(pwPin, HIGH);
//147uS per inch
inches = pulse/147;
cm = inches * 2.54;
if (cm < 60) {
digitalWrite (9, HIGH);
}
else {
digitalWrite (9, LOW);
}
}
-----------------------------------------------------
9.- SALIDA A UN MOTOR.
Mover un motor servo con un potenciómetro.
10.- FUNCIÓN DE
MAPEO DE UN SENSOR A UN MOTOR.
Explicación de la función map.
---------------------------------------
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int a;
int i;
int lectura;
int val;
void setup() {
myservo.attach(3);
Serial.begin(9600);
}
void loop() {
a = 0;
for (i=1; i<40; i++){
int sensorValue = analogRead(A0);
a = (a+sensorValue);
}
lectura = (a/39);
Serial.println(lectura, DEC);
val = lectura; // reads the value (value between 0 and
1023)
val = map(val, 60, 560, 0, 179); // scale it to use it with
the servo (value between 0 and 180)
myservo.write(val); // sets the servo position
according to the scaled value
//delay // waits for the servo to get
there
}
---------------------------------------
11.- OTROS SENSORES
ACELERÓMETRO
This example code is in the public domain.
Version modificada para que encienda el LED
Reads an Analog Devices ADXL3xx accelerometer and communicates the
acceleration to the computer. The pins used are designed to be easily
compatible with the breakout boards from Sparkfun, available from:
http://www.sparkfun.com/commerce/categories.php?c=80
http://www.arduino.cc/en/Tutorial/ADXL3xx
The circuit:
analog 0: accelerometer self test
analog 1: z-axis
analog 2: y-axis
analog 3: x-axis
analog 4: ground
analog 5: vcc
created 2 Jul 2008
by David A. Mellis
modified 4 Sep 2010
by Tom Igoe
*/
// these constants describe the pins. They won't change:
const int groundpin = 18; // analog input pin 4 --
ground
const int powerpin = 19; // analog input pin 5 --
voltage
const int xpin = A3; // x-axis of the accelerometer
const int ypin = A2; // y-axis
//const int zpin = A1; // z-axis (only on 3-axis
models)
void setup()
{
// initialize the serial communications:
Serial.begin(9600);
// Provide ground and power by using the analog inputs as normal
// digital pins. This makes it possible to directly connect the
// breakout board to the Arduino. If you use the normal 5V and
// GND pins on the Arduino, you can remove these lines.
pinMode(groundpin, OUTPUT);
pinMode(powerpin, OUTPUT);
digitalWrite(groundpin, LOW);
digitalWrite(powerpin, HIGH);
pinMode(13, OUTPUT);
}
void loop()
{
// print the sensor values:
Serial.print(analogRead(xpin));
// print a tab between values:
Serial.print("\t");
Serial.print(analogRead(ypin));
// print a tab between values:
Serial.print("\t");
// Serial.print(analogRead(zpin));
Serial.println();
// delay before next reading:
if ((analogRead(ypin))>521){ // detecta movimiento en y
digitalWrite(13, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
}
delay(1);
}
Detección de audio.
Control por medio de reloj. Cronodot.
Bibliografía
Arduino Cookbook
Margolis Michael
O'Reilly Media
Beginning Arduino
McRoberts Michael
Apress
Getting Started with Arduino (Make: Projects)
Massimo Banzi
O'Reilly Media
En Internet:
http://www.arduino.cc
Learning
Arduino (Adafruit).
CÓMPUTO FÍSICO. ACTIVIDADES.
EN
EL SALÓN DE CLASE (1) (2)
EN
CASA (3) y (4)
____________________________________________________________________________________
- Desarrollo de un proyecto final que
preferentemente involucre la interacción del espectador. Se
formarán equipos de trabajo para el desarrollo de los proyectos.
- Presentación en clase del proyecto,
con referencias de autores.
- Exposición del trabajo final.
____________________________________________________________________________________
Última revisión 27 Abril 2015 x ADC
TEMPORIZADOR
Este ejercicio permite construir un temporizador con el circuito 555.
Al cerrar el circuito con el botón el LED queda encendido por un lapso
de tiempo que va de 0 a 10 aprox. cuando se alimenta con 6 voltios.
Cambiando el condensador electrolítico por uno de 220 microfaradios,
el tiempo va entre 0 y 23 segundos. Con un condensador de 1000
microfaradios a 25 voltios el tiempo va de 1 segundo y medio a
2minutos 15 segundos.
Componentes:
555
botón
LED
Potenciómetro 100K
Resistencia 6.8 K
Resistencia 1 K
Resistencia 220 ohms
Condensador Electrolítico 100 microfaradios 16 voltios
OSCILADOR
Componentes:
555
transistor NPN 2222 o similar
bocina 0.5 W / 4 ohms
LDR
capacitor 104
Resistencia 1 K
Resistencia 2200 ohms
Resistencia de 10 ohms
Última revisión 28 Mayo 2021 x ADC
Microprocesadores
Existen una serie de tarjetas que
contienen microprocesadores de fácil programación que permiten
"sensar" el mundo externo y actuar en consecuencia. La más empleada
en el mundo del arte interactivo es la "Arduino",
que cuenta con una gran comunidad que comparte diversos tipos de
soluciones tanto de programación como de conexión de la tarjeta con
sensores y actuadores.
Entre otros microprocesadores capaces de manejar inclusive video de
HD están la Rasperry-Pi
y la BeagleBone.
Estas tarjetas son prácticamente
computadoras que pueden configurarse para que respondan al mundo
exterior mediante sensores.
La tarjeta BeagleBone es otra alternativa para programar en Linux.
Aunque la versión actual no soporta video en full HD.
En el caso del "Cómputo de Vestir" la
Lilypad usa un procesador de Arduino para que se pueda integrar a
la ropa.
Existen las versiones Flora y Gemma de Adafruit que también son
microprocesadores de vestir que cuentan con una gran cantidad de
accesorios. (
link)
Lilypad Site (link)
Software para la creación de diagramas
El software que se puede utilizar para
la creación de diagramas electrónicos es el Fritzing.
Permite ilustrar en forma precisa como se está realizando una
conexión de la tarjeta Arduino con otros dispositivos externos como
sensores y actuadores.
En este diagrama vemos la conexión de
una fotoresistencia LDR al puerto analógico A0 de Arduino. La
lectura de los valores se hace a través del sketch Ejemplos -
Básicos - Analog Read Serial.
Otra aplicación en línea es la de
Autodesk 123D Circuits, que permite crear diagramas y simular el
funcionamiento de la tarjeta Arduino. Además del módulo ELECTRONICS
LAB, tiene módulos para la creación de circuitos impresos.
Los principales actuadores son los
motores. Con la tarjeta Arduino se emplean:
- Motores a Pasos
- Servos (servomotores).
- Motores de CD.
Un actuador importante son los
relevadores (relays). Es como un interruptor que nos permite
conectar (y encender/apagar) una diversidad de dispositivos
externos.
Las funciones de un relevador:
- normalmente abierto
- normalmente cerrado
- aplicaciones
COMPONENTES ELECTRÓNICOS
Resistencia
LED
Condensador
Condensador Electrolítico
Diodo
Transistor
Potenciómetro
EL MULTÍMETRO
Medición de Resistencia
Medición de Voltaje
Medición de Corriente
Spark Fun Tutorial
Multímetro
PIEZOELÉCTRICOS
TARJETAS "SHIELD" PARA ARDUINO