Anda di halaman 1dari 36

TALLER DE ARDUINO

BSICO
EJEMPLOS BSICOS
Carlos Prez
www.TecBolivia.com

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LENGUAJE ARDUINO
USO DE LOS PINES DIGITALES
pinMode(pin, mode)
pin: es el nmero del pin en la placa Arduino (0 13)
mode: es el modo de trabajo del pin (INPUT, OUTPUT)
digitalRead(pin)

digitalWrite(pin, value)
value: es el estado de salida (solo funciona cuando est

configurado como OUTPUT) del pin (HIGH, LOW)


2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

BLINK
El programa BLINK es el

mas bsico del Arduino.


Simplemente es el

parpadeo de un LED a un
intervalo de un segundo.

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

QU ES UN LED?
Diodo Emisor de Luz
Es un componente

optoelectrnico pasivo es
decir, un diodo que emite
luz.

Es un semiconductor, solo

deja pasar la corriente


elctrica en una direccin
(de nodo a Ctodo)

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

RESISTENCIA DE PROTECCIN
La intensidad del LED est

determinada por la corriente


que circula a travs de este.
Algunos circuitos pueden
proporcionar corriente muy
altas.
La corriente que puede
soportar un Led varia entre
10 mA y 30 mA tomando de
manera estndar 20 mA
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

BLINK
delay(ms)
Detiene el Arduino la cantidad de tiempo en milisegundos

(ms) especificada.
Por ejemplo para un retardo de un segundo se especifica la

cantidad 1000
Para retados de menos de un milisegundo, se especifica la

cantidad de tiempo en microsegundos con la funcin:


delayMicroseconds(us)
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

CIRCUITO BLINK

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

BLINK
int led = 13;

// 'led' tiene valor de 13

void setup() {

// Funcin de inicializacin

pinMode(led, OUTPUT);

// Se determina el puerto del

// led (13) como salida.

void loop() {

// Funcin principal.

digitalWrite(led, HIGH);

// Encender led

delay(1000);

// Esperar 1 segundo

digitalWrite(led, LOW);

// Apagar led

delay(1000);

// Esperar 1 segundo

}
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

// Reiniciar ciclo.

CIRCUITO BUTTON

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

BUTTON
const int buttonPin = 2;

// Botn. Constante

const int ledPin =

// Led. Constante

13;

int buttonState = 0;

// Estado del botn. Variable

// Funcin de inicializacin
void setup() {

pinMode(ledPin, OUTPUT);

// Puerto digital del led como salida.

pinMode(buttonPin, INPUT);

// Puerto digital del botn como entrada

2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

BUTTON
void loop(){
/* Lectura del puerto del botn. Si el botn est presionado
buttonState ser HIGH, si no est presionado ser LOW */

buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);

// Si el botn est presionado


// Encender Led

else {
digitalWrite(ledPin, LOW);
}
}
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

// Si no est presionado
// Apagar Led

LIBRERA SERIAL
Arduino cuenta con un convertidor USB a serial.
Los pines de Comunicacin (Rx / Tx) estn en los pines 0 y 1 del

Arduino respectivamente. Al utilizar esta librera estos pines no


estn disponibles.
El Arduino es reconocido como un puerto de comunicacin
COM (Serial)
El Arduino, no necesita una consola para ver la comunicacin que
tiene con la PC
El Monitor Serial permite que la comunicacin directa PC Arduino
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LIBRERA SERIAL
Para definir el uso de un puerto Serial, el Arduino requiere la

velocidad en baudios.
Un baudio representa el nmero de smbolos por segundo

en un medio de trasmisin analgico.


Este medio de transmisin puede tener los siguientes

valores: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200,


28800, 38400, 57600, o 115200.

2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LIBRERA SERIAL
Serial.begin(speed)
Se define la velocidad en Baudios (speed) de la comunicacin serial

del Arduino, el ms utilizado es de 9600 Baudios.

Esta funcin generalmente va definida en el Setup del Arduino


Serial.available()
Define la cantidad de Datos que estn en el Buffer de comunicacin,

es decir los datos que an falta recibir.

Serial.end()
Termina la comunicacin Serial del Arduino.
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LIBRERA SERIAL
Serial.print(val)
Enva a la terminal de comunicaciones, el contenido del dato

enviado en formato ASCII.


En nmeros decimales slo imprime 2 decimales.
Serial.print(78)

imprime "78

Serial.print(1.23456)
Serial.print('N')

imprime "1.23

imprime "N

Serial.print("Hello world.")
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

imprime "Hello world."

LIBRERA SERIAL
Serial.print(val,format)
El segundo parmetro define el formato en que ser imprimido el

dato.

BIN, binario (base 2)


OCT, octal (base 8)
DEC, decimal (base10)
HEX, hexadecimal (base 16)

En nmeros decimales define el nmero de decimales para imprimir.


Serial.print(1.23456, 0) imprime "1"
Serial.print(1.23456, 3) imprime "1.234
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LIBRERA SERIAL
Serial.println(val)
Serial.println(val,format)
Utiliza los mismos parmetros que la versin print con la diferencia

de que termina el envo de datos con un salto de lnea


Los caracteres no imprimibles como los botones de enter o

tabulacin se escriben: '\n' y '\t' respectivamente.

Serial.flush()
Limpia el buffer de entrada
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

HOLA MUNDO
void setup(){
Serial.begin(9600);
}

// Inicio de la comunicacin
// Serial

void loop(){
Serial.print("Hola mundo"); // Impresin texto
while(true);
}

2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

// Ciclo infinito.

QU ES POTENCIMETRO?
Es una resistencia variable
Es utilizado para variar el

flujo de corriente en un
circuito

Tambin es utilizado como

divisor de voltaje para variar


el voltaje de entrada:

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LENGUAJE ARDUINO
USO DE LOS PINES ANALGICOS
Los puertos analgicos utilizan la letra A antepuesta al nmero de

puerto.
No tienen configuracin de entrada o salida.
Los puertos analgicos del Arduino (A0, A1, A2, etc.) son siempre
de entrada.
Tiene una resolucin de 10 bits o 1024 valores (0 1023), el valor
mnimo que puede detectar es 5V/1024 4,9mV por unidad.
analogRead(pin)
pin: es el nmero del puerto analgico. Siempre lleva la letra 'A'
antes del nmero de puerto.
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LENGUAJE ARDUINO
USO DE LOS PINES ANALGICOS
Las salidas

analgicas del
Arduino son las
salidas PWM (PulseWidth Modulation)
que modifican el
ancho de pulso de
un tren de pulsos
cuadrado.

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LENGUAJE ARDUINO
USO DE LOS PINES ANALGICOS
Los Puertos digitales con el smbolo '~' tambin funcionan

como salidas PWM.


El PWM del Arduino tiene una resolucin de 8 Bits, es decir

que solo pueden escribirse valores de 0 a 255.


analogWrite(pin, value)
pin: es el nmero del puerto digital que ser utilizado

como puerto PWM.


value: es valor en la salida anloga,
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

ANALOG INPUT

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

ANALOG INPUT
int sensorPin = A0;

// Se utiliza el puerto A0
// como puerto de lectura.

int ledPin = 13;

// Led en el pin 13

int sensorValue = 0;

// Variable donde se guarda


// la lectura del sensor

void setup() {
pinMode(ledPin, OUTPUT);
}

2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

// Pin del led como salida

ANALOG INPUT
void loop() {
sensorValue = analogRead(sensorPin);

// Leer sensor

digitalWrite(ledPin, HIGH);

// Encender Led

delay(sensorValue); // Se utiliza esa lectura como retardo


digitalWrite(ledPin, LOW);
delay(sensorValue);

2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

// Apagar Led

ANALOG IN OUT SERIAL

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

ANALOG IN OUT SERIAL


map(value, fromLow, fromHigh, toLow, toHigh)

Hace un mapeo, modificando una escala de datos a otra

escala de datos.
Agrupa valores de una escala grande para emparejarlos

con una escala pequea

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

ANALOG IN OUT SERIAL


const int analogInPin = A0;
const int analogOutPin = 9;

int sensorValue = 0;

// Lectura del sensor

int outputValue = 0;

// Salida del puerto PWM (salida anloga)

void setup() {
// Se inicia la comunicacin serial a 9600 baudios:
Serial.begin(9600);
}
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

ANALOG IN OUT SERIAL


void loop() {
sensorValue = analogRead(analogInPin);
outputValue = map(sensorValue, 0, 1023, 0, 255);

analogWrite(analogOutPin, outputValue);
Serial.print("sensor = " );
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
delay(2); // Retardo para el conversor anlogo digital
}
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

TALLER DE ARDUINO
BSICO
PREGUNTAS
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

ANEXOS

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

CLCULO DE LA RP
En trminos generales, pueden considerarse de forma aproximada

los siguientes valores de voltaje:


Rojo = 1,8 a 2,2 V
Anaranjado = 2,1 a 2,2 V
Amarillo = 2,1 a 2,4 V
Verde = 2 a 3,5 V
Azul = 3,5 a 3,8 V
Blanco = 3,6 V

Mediante la ley de Ohm podemos deducir cual es la Resistencia

requerida para la proteccin del Led

51,8
20

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

= 160 220

BLINK WITHOUT DELAY


El programa Blink bsico de Arduino utiliza la funcin

delay como contador de tiempo de un segundo.


Este ejemplo muestra la manera de hacer el mismo
trabajo sin necesidad de detener al Arduino.
Utiliza un contador de tiempo para determinar si ha
transcurrido el tiempo de 1 segundo.
Esta comparacin se hace con una variable como punto
de referencia del ltimo segundo, luego esta variable es
actualizada.
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

BLINK WITHOUT DELAY


millis()
Retorna la cantidad en milisegundos que ha transcurrido desde

que se inici el programa.


Este nmero es un entero largo sin signo, se sobrecarga

retornando a cero en aproximadamente 50 das

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

BLINK WITHOUT DELAY


const int ledPin =

13;

// "ledPin" es 13. Constante

int ledState = LOW;

// El led empieza apagado.

long previousMillis = 0;

// ltimo conteo.

long interval = 1000;

// Intervalo de 1000 milisegundos

void setup() {

// El puerto del led como salida

pinMode(ledPin, OUTPUT);
}
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

BLINK WITHOUT DELAY


void loop(){
unsigned long currentMillis = millis(); // Contador
if(currentMillis - previousMillis > interval) {

previousMillis = currentMillis;
if (ledState == LOW)

else

ledState = LOW;
digitalWrite(ledPin, ledState);

}
2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

// Actualizacin del ltimo conteo

// Cambio de estado del Led

ledState = HIGH;

// Diferencia de 1000

Anda mungkin juga menyukai