Documentos de Académico
Documentos de Profesional
Documentos de Cultura
pinMode(): configura un pin como entrada o salida. Para utilizarla, le pasas el nmero del pin que vas a
configurar y la constante INPUT o OUTPUT. Como input, un pin puede detectar el estado de un sensor, y
como salida, puede manejar un actuador, como un LED.
digitalWrite(): enva un valor a un pin. Ejemplo: digitalWrite(ledPin, HIGH) -> modifica ledPin (pin 13) como
HIGH, o 5 volts. Enviando LOW a un pin lo conecta a tierra, o 0 volts.
delay(1000): Hace a Arduino esperar 1000 milisegundos o 1 segundo.
setup() es llamado una vez, cuando comienza el sketch (on create) para definir los pins o inicializar
bibliotecas
loop() se llama una y otra vez y es el corazn de la mayoria de los sketches. Necesitas incluir ambas funciones
en tu sketch, aun cuando no las necesites para nada.
Pginas de inters
Vase ms en: http://www.arduino.cc/es
Luchador de sumo: http://www.austral.edu.ar/ingenieria/files/2012/06/Orientaciones.pdf
Para referencia del lenguaje: http://arduino.cc/es/Reference/HomePage#.Uzv1ePl_vX4
Ejemplos: http://arduino.cc/es/Tutorial/HomePage#.Uzv1s_l_vX4
Programacin arduino visual en modo bloques: https://github.com/gasolin/BlocklyDuino
Simulador de Arduino: VirtualBreadboard: http://www.virtualbreadboard.com/
Simulador on line libre: http://123d.circuits.io/
Tutoriales Introduccin: http://www.prometec.net/
Tutoriales: http://txapuzas.blogspot.com.es/2011/10/paperrobot-chasis-para-robot-con.html
Robtica con Arduino Introduccin Ofimega - 3
MANUAL LEAGUAJE DE PROGRAMACIN ARDUINO
LOOP()
Esta funcin se ejecuta consecutivamente, permitindo al programa variar y responder en cada instante.
sala para controlar de forma activa la placa Arduino.
int buttonPin = 3; // setup inicializa la comunicacin serial y el buttonPin
void setup()
{
beginSerial(9600);
pinMode(buttonPin, INPUT);
}
// loop obtiene el estado del pin del botn cada vez y de estar presionado,
lo comunica por serial.
void loop()
{
if (digitalRead(buttonPin) == HIGH)
serialWrite('H');
else
serialWrite('L');
delay(1000);
}
ESTRUCTURAS DE CONTROL
Operadores de Comparacin (comparadores):
x == y (x es igual a y) x>y (x es mayor a y)
x != y (x no es igual a y) x <= y (x es menor o igual a y)
x<y (x es menor a y) x >= y (x es mayor o igual a y)
Atencin: No confundir un signo de igual solo de asignacin, con el igual doble de comparacin.
IF / ELSE
if/else permite separar las acciones en dos casos; el caso verdadero o falso segn se cumpla o no la
comparacin. Sintaxis: if (comparacin) {accin_verdadera} else {accin_falsa}
else if permita realizar mltiples comprobaciones en una misma estructura de condiciones
if (pinCincoInput < 500) if (pinCincoInput < 500)
{ {
// accin A // ejecutar A
} }
else else if (pinCincoInput >= 1000)
{ {
// accin B // ejecutar B
} }
else
{
Entonces un bloque else if puede ser usado con o sin else // ejecutar C
al final. Pueden emplearse If-else anidados de modo que la }
cantidad de declaraciones else if, y sus ramificaciones son
ilimitadas.
Otra forma de expresar ramificaciones (branching en ingls), es con la declaracin switch case
Robtica con Arduino Introduccin Ofimega - 5
SENTENCIA SWITCH / CASE
Como las sentencias if, switch...case permite agrupar diferentes cdigos que deberan ser ejecutados
en funcin de varias condiciones.
La palabra clave break sale de la sentencia switch, y es usada tpicamente al final de cada case.
Ejemplo Sintaxis
switch (var) {
case 1: switch (var) {
//hacer algo cuando sea igual a 1 case etiqueta:
break; // sentencias
case 2: break;
//hacer algo cuando sea igual a 2 case etiqueta:
break; // sentencias
default: break;
// si nada coincide, ejecuta el "default" default:
// el "default" es opcional // sentencias
} }
BUCLES
FOR
La declaracin for es usada para repetir un bloque encerrado entre llaves un nmero determinado de
veces. El bucle for tiene tres partes o
argumentos en su inicializacin: // Variar la intensidad de un LED usando un salida PWM
int PWMpin = 10; // En el pin 10 hay un LED en serie con una
for (initialization; condition; resistencia de 470 ohmios
increment) { void setup()
//funcin(es); {
} // no es necesario nada aqu
}
La initialization, o inicializacin, se
void loop()
produce slo la primera vez. Cada vez que {
se va a repetir el bucle, se revisa la for (int i=0; i <= 255; i++){
condition, o condicin: si es cierta, el analogWrite(PWMpin, i);
bloque de funciones (y el incremento del delay(10);
contador) se ejecutan, y la condicin }
}
vuelve a ser comprobada de nuevo. Si la
condicin es falsa, el bucle termina.
void loop()
El bucle for, en C, es mucho ms {
flexible que en otros lenguajes. Un int x = 1;
ejemplo es hacer for (int i = 0; i > -1; i = i + x){
apagarse/encenderse un LED poco a analogWrite(PWMpin, i);
poco, if (i = 255) x = -1; // cambia de signo para apagarlo
delay(10);
}
}
WHILE
Grupo de cdigo que se ejecuta continuamente, hasta que la expresin de dentro del parntesis, (), pasa
a ser falsa.
Sintaxis Ejemplo
while(expresion){ var = 0;
// sentencia(s) while(var < 200){
} // haz algo repetitivo 200 veces
var++;
}
DO - WHILE
El bucle "'do'" trabaja de la misma manera que el bucle "'while'", con la excepcin de que la condicin se
comprueba al final del bucle, por lo que este bucle se ejecuta "siempre" al menos una vez.
Sintaxis: Ejemplo:
do
do {
{ delay(50); // espera a que los sensores se estabilicen
// bloque de instrucciones x = readSensors(); // comprueba los sensores
} while (condicin); } while (x < 100); //si se cumple la condicin se repite
BREAK
Break es usado para salir de los bucles do, for (x = 0; x < 255; x ++)
for, o while, pasando por alto la condicin {
normal del bucle. Es usado tambin para salir digitalWrite(PWMpin, x);
sens = analogRead(sensorPin);
de una estructura de control switch.
if (sens > threshold){ // bail out on sensor detect
x = 0;
break; // sale del bucle for.
}
delay(50);
}
RETURN
Termina una funcin y devuelve un valor a la funcin que la llama. Puede no devolver nada.
Sintaxis Ejemplos
return; Una funcin que compara la entrada de un sensor a un
return valor; // ambas formas son correctas umbral
Parmetros int comprobarSensor(){
valor: cualquier variable o tipo constante if (analogRead(0) > 400) {
return 1;
else{
return 0;
}}
La palabra clave return tambin es til para depurar una seccin de cdigo sin tener que comentar una
gran cantidad de lneas de cdigo posiblemente incorrecto.
void loop(){
// cdigo magnfico a comprobar aqu
return;
// resto del programa del que se desconfa nunca ser ejecutado por estar detrs
}
SINTAXIS
; PUNTO Y COMA Utilizado para terminar una declaracin. Ejemplo: int a = 13;
{} LLAVES: Se utilizan en diferentes construcciones para agrupar o englobar un conjunto de cdigo.
COMENTARIOS: son lneas en el programa para aclarar el funcionamiento del programa
// para una lnea /* para varias lneas */
OPERADORES
= OPERADOR DE ASIGNACIN: Guarda el valor en la derecha del smbolo "="
% (MDULO) : Calcula el resto de la divisin entre dos enteros.
&& (AND lgico) : Verdadero slo si ambos operadores son Verdadero.
|| (OR lgico): Verdadero si alguno de los dos operadores es Verdadero.
! (NOT): Verdadero si el operador es Falso.
++ (incremento) / -- (disminucin): Incrementa o disminuye una variable
CONSTANTES: Se usan para facilitar la lectura de los programas. Suelen ser valores fijos
Constantes Booleanas verdadero (true) y falso (false): para representar si algo es cierto o falso en
Arduino: true, y false. Se escriben en minsculas, al contrario que HIGH, LOW, INPUT, y OUTPUT.
Constantes numricas: Normalmente, las constantes integer son tratadas como enteros EN base 10
(decimales), pero se puede utilizar notacin especial (formateadores) para usar en otras bases.
Base Ejemplo Comentario
10 (decimal) 123 Ninguno.
2 (binario) B1111011 Antecede "B" Slo funciona con valores de 8 bits
8 (octal) 0173 Antecede "0" Caracteres 0 al 7 vlidos.
16 (hexadecimal) 0x7B Antecede "0x" Caracteres 0-9,A-F, a-f vlidos.
Robtica con Arduino Introduccin Ofimega - 7
VARIABLES. Tipos de datos
BOOLEANOS: Un booleano slo puede tomar dos valores, Verdadero o Falso.
CHAR: Ocupa un byte de memoria y almacena un valor de carcter. Los carcteres literales se
escriben con comillas simples: 'A' (para varios caracteres -strings- utiliza dobles comillas "ABC").
BYTE: Un byte almacena un nmero sin signo hasta 255.
INT: Integers (Nmeros enteros) entre -32,768 hasta 32,768
UNSIGNED INT Slo valores positivos, entre 0 y 65.535 (2^16 - 1).
LONG Tamao extendido para almacenar nmeros de 32 bits (4 bytes), de 2,147,483,647.
UNSIGNED LONG Extendidas para almacenar nmeros. No almacenan nmeros negativos,
FLOAT Tipo variable para los nmeros en coma flotante (nmero decimal).
DOUBLE: Nmero en coma flotante de doble precisin. Ocupa 4 bytes.
STRING: Arrays de caracteres (tipo char) que terminan con el caracter NULL.
ARRAYS: Matriz o coleccin de variables que son accedidas mediante un nmero de ndice.
VOID: void (vaco) Indica que se espera que no devuleva informacin a la funcin donde fue llamada.
3. FUNCIONES: E/S DIGITALES
PINMODE(): Configura el pin especificado para comportarse como una entrada o una salida.
DIGITALWRITE(): Escribe un valor HIGH o LOW hacia un pin digital.
Si el pin ha sido configurado como OUTPUT con pinMode(), su voltaje ser establecido al
correspondiente valor: 5V ( o 3.3V en tarjetas de 3.3V) para HIGH, 0V (tierra) para LOW.
Si el pin es configurado como INPUT, escribir un valor de HIGH con digitalWrite() habilitar una
resistencia interna de 20K conectada en pullup. Escribir LOW invalidar la resistencia.
DIGITALREAD() Lee el valor de un pin digital especificado, HIGH o LOW.
ANALOGREAD(): Lee el valor de tensin en el pin analgico especificado entre 0 y 5 voltios
convirtindolos en un numero entero entre 0 y 1023.
ANALOGWRITE(): Escribe un valor analgico por pulso (PWM) en un pin valores hasta 256.
TONE(): Genera una onda cuadrada a frecuencia especificada en un pin. La duracin especificada
NOTONE(): Detiene la generacin de la seal cuadrada que se activa al hacer uso de la funcin tone().
SHIFTOUT(): Desplaza un byte de datos bit a bit. Empieza desde el bit ms significante (ms izquierda)
PULSEIN(): Lee un pulso (ya sea HIGH alto o LOW bajo) en un pin.
MIN(X, Y) Calcula el mnimo de dos nmeros.
MAX(X, Y) Calcula el mximo de dos nmeros.
ABS(X) Calcula el valor absoluto de un nmero.
CONSTRAIN(X, A, B) Restringe un nmero a un rango definido.
MAP(VALUE, FROMLOW, FROMHIGH, TOLOW, TOHIGH)
Re-mapea un nmero desde un rango hacia otro. sto significa que, un valor (value) con respecto al
rango fromLowfromHight ser mapeado al rango toLow-toHigh.
POW(BASE, EXPONENTE): Calcula un nmero elevado a otro nmero.
SQ(X) Calcula el cuadrado de un numero: el numero multiplicado por el mismo.
SQRT(X): Calcula la raz cuadrada de un numero.
SIN(RAD): Calcula el seno de un ngulo (en radianes). El resultado ser entre -1 y 1.
COS(RAD): Calcula el coseno de un ngulo (en radianes). El resultado estar entre -1 y 1.
TAN(RAD): Calcula el coseno de un ngulo (en radianes)
RANDOMSEED(SEED): randomSeed() inicializa el generador de nmeros pseudoaleatorios,
RANDOM(): La funcin random genera nmeros pseudoaleatorios.
4. COMUNICACIN
SERIAL Se utiliza para la comunicacin entre la placa Arduino
BEGIN(): Establece la velocidad de datos en bits por segundo (baudios) para la transmisin de datos
END(): Desactiva la comunicacin serie, permitiendo a los pines RX y TX ser usados como pines digitales.
AVAILABLE(): Devuelve el nmero de bytes disponibles para ser ledos por el buffer del puerto serie.
READ(): Lee los datos entrantes del puerto serie.
FLUSH(): Vaca el bfer de entrada de datos en serie.
PRINT(): Imprime los datos al puerto serie como texto ASCII.
PRINTLA(): Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro
WRITE()b Escribe datos binarios en el puerto serie. Se envan como un byte o una serie de bytes.
TUTORIALES BSICOS.
Leccin 1: Enceder un LED externo:
Material requerido:
Arduino Uno o similar - Protoboard. - Un diodo LED - Una resistencia de 220 o 330 Ohmios Cables
Clculo de la Resistencia: V = I R
Conexin en la Protoboard:
Programacin:
int sale=0;
Utilizaremos dos veces la instruccin for, que nos void setup(){
permite repetir un bloque de instrucciones un for(sale=6;sale<14;sale++)
nmero determinado de veces. pinMode(sale, OUTPUT); //pines 6 a 13 como salida
}
El primer ciclo for hace que las luces se encienda void loop(){
en secuencia desde la 6 hasta la 13. El segundo for(sale=6;sale<14;sale++) //cuenta de 6 a 14
bucle entra a continuacin empezando con la luz {
12 (para no repetir la 13) y finalizando con la digitalWrite(sale, HIGH);
7(para no repetir la 6), y vuelta a empezar. delay(100);
digitalWrite(sale, LOW);
En el segundo bucle for hemos hecho una cuenta delay(100);
atrs dicindole a la variable que se decrementara }
en uno en cada iteracin mediante la instruccin for(sale=14;sale>6;sale--) //cuenta atrs
sale-- {
En realidad la variable sale no era necesario digitalWrite(sale, HIGH);
haberla declarado antes ya que se puede crear delay(100);
dentro de la propia instruccin for digitalWrite(sale, LOW);
Para finalizar es bueno apagar los pines de salida delay(100);
para no interferir en el siguiente ejercicio: }
void loop(){
}
for(sale=6;sale<14;sale++)
digitalWrite(sale, LOW);
}
Leccin 3: Deteccin por entrada digital. Pulsador a negativo
void setup()
{
pinMode( 13, OUTPUT) ; // Pin 13 como salida
pinMode( 6 , INPUT) ; //Pin 6 como entrada
}
void loop()
{
int valor = digitalRead(6) ; // leemos el valor
valor
digitalWrite(13, valor) ;
}
A esta resistencia que fuerza el valor alto en vaco se le conoce como pullup. Si la conectramos a masa
para forzar una lectura a Ground se le llamara pulldown. Esta resistencia es clave para que las lecturas del
pulsador sean consistentes.
Robtica con Arduino Introduccin Ofimega - 11
Pulsacin entrada por positivo:
Mientras no pulsemos el pin 6 de Arduino tendr una
lectura de tensin baja a Tierra. En cambio cuando
pulsemos el pulsador cerraremos el circuito del pin 6 a
+5V con lo que leer tensin alta y nuestro programa
encender la luz del LED 13.
El programa es el mismo que el anterior pero su lgica es
negada respecto al anterior.
Leccin 4: Interruptor de 3 contactos y 2 estados: NC y NA. Circuito de seguridad negado
La lgica negada se emplea en circuitos de seguridad y alarmas: Un circuito cerrado llamado serie, est alimentando
constantemente el pin de entrada con seal alta. Si este circuito sufre un corte, deja de recibir la seal alta y entones
activa el estado de alarma.
Utilizaremos un interruptor de 3 contactos. El pin central o comn en estado normal (sin pulsar) tiene un contacto
cerrado y el otro abierto (utilizaremos el estado normalmente cerrado NC). Al pulsar abriremos el contacto
normalmente cerrado y cerraremos el normalmente abierto.
void setup()
{
pinMode( 13, OUTPUT) ; // Pin 13 salida azul
pinMode( 12, OUTPUT) ; // 12 salida roja
pinMode( 11, OUTPUT) ; // 12 salida verde
pinMode( 6 , INPUT) ; //Pin 6 entrada
digitalWrite(11, HIGH) ;
}
void loop()
{
estado = digitalRead(6) ; // leemos estado
if (estado==1) //aviso abierto
{
if (alarma==0) { //si no hay alarma avisa parpadeando...
int i=0;
for (i=0;i<tiempo_espera;i++){
digitalWrite(13, HIGH); // LED on
delay(500); // retardo
digitalWrite(13, LOW); // LED off
delay(500); // retardo
estado = digitalRead(6) ; // vuelve a leer estado
if (estado==0) break; //oportunidad para apagar aviso
}
}
estado = digitalRead(6) ; // vuelve a leer estado
if (estado==1) { //si sigue abierto activa alarma
digitalWrite(13, HIGH) ;
digitalWrite(12, HIGH) ;
alarma=1;
}
else
{
if (alarma==0) digitalWrite(13, LOW) ;
}
}
Variaciones:
Interruptor magntico:
Equivale a un interruptor con contacto normalmente cerrado y se abre al separar la pieza por magnetismo.
LED RGB: En el programa mantn LED verde siempre encendido. Utiliza el parpadeo de aviso con el LED azul y la seal
de alarma con el red rojo. (Vsase ejercicio de LED RGB)
Robtica con Arduino Introduccin Ofimega - 13
Leccin5: Salidas analgicas en pines digitales y usar una funcin: Mezclar colores en el LED RGB
El pin ms largo de un LED RGB de nodo comn es el GND.
Al lado de GND hay dos pines a un lado y uno solitario al otro. Por lo normal el solitario es el
rojo R. As pues el pin out (patillaje) de un RGB LED suele ser R, GND, G, B
void setup()
{
for (int i =9 ; i<12 ; i++) pinMode(i, OUTPUT);
}
void Color(int R, int G, int B)
{
analogWrite(9 , R) ; // Red - Rojo
analogWrite(10, G) ; // Green - Verde
analogWrite(11, B) ; // Blue - Azul
}
void loop() //-> modo test
{ Color(255 ,0 ,0) ;
delay(500);
Color(0,255 ,0) ;
delay(500);
Color(0 ,0 ,255) ;
Arduino permite escribir valores analgicos de 0 a 255 en delay(500);
los pines digitales si son del tipo pulso PWM. Color(random(255), random(255), random(255));
delay(1000);
}
Creamos la funcin color y le pasamos como parmetros de
los tres niveles de color. La funcin random( N ) devuelve un void loop() //-> Variante para colores aleatorios
valor al azar, comprendido entre 0 y N y lo usaremos para {
generar colores aleatorios: Color(random(255), random(255), random(255)) ;
delay(500);
}
Color(random(255), random(255), random(255))
Robtica con Arduino Introduccin Ofimega - 15
Leccin7: Activacin de un servomotor. Librera servo.
Un servo es un motor diseado para mover su eje un ngulo fijo en respuesta a una seal de control. til en giros de
direccin como el timn de un baro o subir una barrera que no suelen superar los 180 .
Arduino dispone de una librera estndar que ya incorpora funciones para servos: Servo.h.
Pero para poder utilizar sus funciones debemos crear, lo que se conoce como un objeto del tipo Servo que llamaremos
servo1. As podremos usar las funciones ms frecuentes como attach y write: servo1.attach(pin) asigna el pin de
control y servo1.write(pos) escribe el valor de salida por el pin de control.
C++ es un lenguaje orientado a objetos, esto significa que podemos poner un tipo de objeto en nuestro programa
(como un servo) sin ms que declarar un nuevo objeto del tipo que deseamos. En la jerga de la programacin se llama
crear una instancia, o instanciar un nuevo objeto.
Primer programa: Hace que el servo vaya barriendo un ngulo en grados y moviendo el servo a esa posicin
Segundo programa: El servo se mueve siguiendo al potencimetro. Para ello hay que entender que el valor que
leamos en la puerta A0 est comprendido entre 0 y 1024, y que estos valores tienen que distribuirse entre 0 y 180.
//primer programa: servo oscilante //Servo regulado ngulo por potencimetro con map
//--------------------------------------------- //--------------------------------------------------------------------
#include <Servo.h> // Incluir la librera Servo
Servo servo1; // Crear objeto tipo Servo llamado servo1 #include <Servo.h> // Incluir la librera Servo
int angulo = 0 ; Servo servo1; // Crear un objeto tipo Servo llamado servo1
int angulo = 0 ;
void setup()
{ void setup()
servo1.attach(9) ; // Conectar servo1 al pin 9 {
} servo1.attach(9) ; // Conectar servo1 al pin 9
void loop() }
{
for(angulo = 0; angulo <= 180; angulo++) { //incrementa void loop()
servo1.write(angulo); {
delay(25); angulo = map( analogRead(A0), 0, 1024, 0, 180);
} servo1.write(angulo);
for(angulo = 180; angulo >=0; angulo--) { //decrementa delay(250);
servo1.write( angulo ); }
delay(25);
}
}
Uso de un servo como barra de subida al activar un pulsador de flanco descendente
Un servo es un motor diseado para mover su eje un ngulo fijo en respuesta a una seal de control. til en giros de
direccin como el timn de un baro o subir una barrera que no suelen superar los 180 .
Arduino dispone de una librera estndar que ya incorpora funciones para servos: Servo.h.
Pero para poder utilizar sus funciones debemos crear, lo que se conoce como un objeto del tipo Servo que llamaremos
servo1. As podremos usar las funciones ms frecuentes como attach y write: servo1.attach(pin) asigna el pin de
control y servo1.write(pos) escribe el valor de salida por el pin de control.
Transistor es una acrnimo del ingls: Transfer Resistor. Indica que la resistencia entre
Emisor y Colector sea proporcional a la seal de control que inyectamos en la Base. Una
ventaja de usar un transistor es que asla eficazmente el circuito de control de la base, de
la carga de salida del emisor.
Los transistores pueden ser del tipo PNP o NPN como los BD 139 y BD 140. La serie B son
de silicio. BC para baja frecuencia baja potencia y serie BD para media.
La resistencia de base puede ser de entre 220 (rojo-rojo-marrn) a 1 K (marrn-negro-rojo)
Para identificar cada pin del transistor, sostened el transistor con las patas hacia abajo mirando a la cara plana, donde
esta rotulado el nombre. De izquierda a derecha.
Mejor aadir un diodo al circuito en paralelo para que proteja el transistor, dado que
el motor tiene carga inductiva de retorno.
Programas:
void setup(){
Serial.begin(9600);
}
void loop(){
float pos=analogRead(A0)/4;
analogWrite(3, pos);
Serial.println (pos);
delay(1000);
}
Utilizaremos una variable flotante pos para leer el valor del potencimetro y dividimos por 4 para adaptar
los valores mximos ya que en las seales analgicas de entrada el rango es de 1024 y en las seales
analgicas de salida el rango es 250. Activa el monitor serial para ver los valores del potencimetro cada
segundo.
La velocidad vara entre 0 y 180 siendo 90 en valor de paro central. Para ajustar la
velocidad podemos crear un programa.
Programa:
void setup() {
void loop(){
estadoSensor = digitalRead(Sensor); // lee estado del sensor
if (estadoSensor == HIGH) { // HIGH, sensor activado
digitalWrite(Led, HIGH);
sirena();}
else {
digitalWrite(Led, LOW); // LOW, sensor desactivado
}
}
void sirena(){
tone(audio, 2000, 100);
delay(200);
tone(audio, 1500, 100);
delay(200);
}
Leccin12: SEGUIDOR DE LINEAS CON SERVOMOTORES y Paro por ultrasonido
Hemos adaptado el sensor por opto acoplador del ejercicio anterior con el control de dos servomotores, que tienen
ms precisin que los motores de continua.
Primera parte: Sensores:
Circuito sensores infrarrojos
Corresponde a la parte de la deteccin de los
sensores opto-acopladores (un par de LEDs
emisores de luz infrarroja y dos transistores foto-
receptores) y la activacin de dos LEDs como
testigos de su funcionamiento.
Conectamos el colector de los transistores
optoacopladores a Vcc a travs de una resistencia
de 10K y a las entradas analgicas A0 y A1 para
recibir valores entre 0 y 1024 y los emisores a
GND.
Si utilizas el sensor CNY70:
Ejercicio propuesto: Medir la distancia por el ultrasonidos o la temperatura y mostrarla en el cristal lquido.
Robtica con Arduino Introduccin Ofimega - 25
Leccin 14a: Comunicacin serie con PC mediante USB y el IDE Processing.
El programa enciende el LED 13 de Arduino pero es controlado por el PC a travs del puerto serie
Existen dos mtodos para controlar Arduino desde processing:
1. Mediante la Librera Arduino para Processing
2. Directamente mediante la lectura/escritura de datos a travs de un puerto (serie o Bluetooth).
En este caso utilizaremos el mtodo de control, va puerto serie, el encendido y apagado de un LED al pasar
el mouse sobre un recuado en la ventana del PC). Este ejercicio est adaptado de un ejemplo de Processing
Como podemos utilizar el LED 13 interno, no necesitamos cableado en Arduino.
1 Descargamos el IDE de procesing desde https://processing.org/download/ si an no lo tenemos.
2 Configuramos Processing para serial: http://processing.org/reference/libraries/serial/
import processing.serial.*;
Serial elPuerto; // Crea el objeto de la clase Serial llamado elPuerto
int val; // Variable entera
void setup()
{
size(200, 200);
String nombre = Serial.list()[0]; // Serial.list()[0] -> abre el primer puerto serie que
encuentra, empieza normalmente en el COM1
elPuerto = new Serial(this, nombre, 9600);
}