Está en la página 1de 34

TALLER DE ARDUINO

BÁSICO
EJEMPLOS BÁSICOS
Carlos Pérez
www.TecBolivia.com

© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


LENGUAJE ARDUINO
USO DE LOS PINES DIGITALES
 pinMode(pin, mode)
• pin: es el número 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 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


BLINK

El programa BLINK es el


mas básico del Arduino.
Simplemente es el
parpadeo de un LED a un
intervalo de un segundo.

© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


¿QUÉ ES UN LED?

 Diodo Emisor de Luz


 Es un componente
optoelectrónico pasivo es
decir, un diodo que emite
luz.
 Es un semiconductor, solo
deja pasar la corriente
eléctrica en una dirección
(de Ánodo a Cátodo)
© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM
RESISTENCIA DE PROTECCIÓN

 La intensidad del LED está


determinada por la corriente
que circula a través 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 estándar 20 mA
© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM
CÁLCULO DE LA RP
 En términos 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 protección del Led
𝑉𝑠𝑎𝑙𝑖𝑑𝑎 −𝑉𝑙𝑒𝑑 5𝑉−1,8𝑉
𝑅= = = 160Ω ≈ 220Ω
𝐼 20𝑚𝐴
© 2014 RAÚL Á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 función:
delayMicroseconds(us)

© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


CIRCUITO BLINK

© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


BLINK
int led = 13; // 'led' tiene valor de 13
void setup() { // Función de inicialización
pinMode(led, OUTPUT); // Se determina el puerto del
} // led (13) como salida.
void loop() { // Función principal.
digitalWrite(led, HIGH); // Encender led
delay(1000); // Esperar 1 segundo
digitalWrite(led, LOW); // Apagar led
delay(1000); // Esperar 1 segundo
} // Reiniciar ciclo.

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


CIRCUITO BUTTON

© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


BUTTON
const int buttonPin = 2; // Botón. Constante
const int ledPin = 13; // Led. Constante

int buttonState = 0; // Estado del botón. Variable

// Función de inicialización
void setup() {
pinMode(ledPin, OUTPUT); // Puerto digital del led como salida.
pinMode(buttonPin, INPUT); // Puerto digital del botón como entrada
}

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


BUTTON
void loop(){
/* Lectura del puerto del botón. Si el botón está presionado
buttonState será HIGH, si no está presionado será LOW */
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) { // Si el botón está presionado
digitalWrite(ledPin, HIGH); // Encender Led
}
else { // Si no está presionado
digitalWrite(ledPin, LOW); // Apagar Led
}
}

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


BLINK WITHOUT DELAY
 El programa Blink básico de Arduino utiliza la función
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 comparación se hace con una variable como punto
de referencia del último segundo, luego esta variable es
actualizada.

© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


BLINK WITHOUT DELAY
 millis()
• Retorna la cantidad en milisegundos que ha transcurrido desde
que se inició el programa.
• Este número es un entero largo sin signo, se sobrecarga
retornando a cero en aproximadamente 50 días

© 2014 RAÚL Á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 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


BLINK WITHOUT DELAY
void loop(){
unsigned long currentMillis = millis(); // Contador
if(currentMillis - previousMillis > interval) { // Diferencia de 1000
previousMillis = currentMillis; // Actualización del último conteo
if (ledState == LOW) // Cambio de estado del Led
ledState = HIGH;
else
ledState = LOW;
digitalWrite(ledPin, ledState);
}
}

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


LIBRERÍA SERIAL
 Arduino cuenta con un convertidor USB a serial.
 Los pines de Comunicación (Rx / Tx) están en los pines 0 y 1 del
Arduino respectivamente. Al utilizar esta librería estos pines no
están disponibles.
 El Arduino es reconocido como un puerto de comunicación
COM (Serial)
 El Arduino, no necesita una consola para ver la comunicación que
tiene con la PC
 El Monitor Serial permite que la comunicación directa PC -
Arduino

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


LIBRERÍA SERIAL

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


velocidad en baudios.
 Un baudio representa el número de símbolos por segundo
en un medio de trasmisión analógico.
 Este medio de transmisión puede tener los siguientes
valores: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200,
28800, 38400, 57600, o 115200.

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


LIBRERÍA SERIAL
 Serial.begin(speed)
• Se define la velocidad en Baudios (speed) de la comunicación serial
del Arduino, el más utilizado es de 9600 Baudios.
• Esta función generalmente va definida en el Setup del Arduino
 Serial.available()
• Define la cantidad de Datos que están en el Buffer de comunicación,
es decir los datos que aún falta recibir.
 Serial.end()
• Termina la comunicación Serial del Arduino.

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


LIBRERÍA SERIAL
 Serial.print(val)
• Envía a la terminal de comunicaciones, el contenido del dato
enviado en formato ASCII.
• En números decimales sólo imprime 2 decimales.
 Serial.print(78) imprime "78“
 Serial.print(1.23456) imprime "1.23“
 Serial.print('N') imprime "N“
 Serial.print("Hello world.") imprime "Hello world."

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


LIBRERÍA SERIAL
 Serial.print(val,format)
• El segundo parámetro 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 números decimales define el número de decimales para imprimir.
 Serial.print(1.23456, 0) imprime "1"
 Serial.print(1.23456, 3) imprime "1.234“

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


LIBRERÍA SERIAL
 Serial.println(val)
 Serial.println(val,format)
• Utiliza los mismos parámetros que la versión print con la
diferencia de que termina el envío de datos con un salto de
línea
 Los caracteres no imprimibles como los botones de “enter” o
“tabulación” se escriben: '\t' y '\n' respectivamente.

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


HOLA MUNDO
void setup(){
Serial.begin(9600); // Inicio de la comunicación
} // Serial

void loop(){
Serial.print("Hola mundo"); // Impresión texto
while(true); // Ciclo infinito.
}

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


LENGUAJE ARDUINO
USO DE LOS PINES ANALÓGICOS
 Los puertos analógicos utilizan la letra A antepuesta al número de
puerto.
 No tienen configuración de entrada o salida.
 Los puertos analógicos del Arduino (A0, A1, A2, etc.) son siempre
de entrada.
 Tiene una resolución de 10 bits o 1024 valores (0 – 1023), el valor
mínimo que puede detectar es 5V/1024 ≈ 4,9mV por unidad.
 analogRead(pin)
• pin: es el número del puerto analógico. Siempre lleva la letra 'A'
antes del número de puerto.

© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


LENGUAJE ARDUINO
USO DE LOS PINES ANALÓGICOS
 Las salidas
analógicas del
Arduino son las
salidas PWM (Pulse-
Width Modulation)
que modifican el
ancho de pulso de
un tren de pulsos
cuadrado.

© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


LENGUAJE ARDUINO
USO DE LOS PINES ANALÓGICOS
 Los Puertos digitales con el símbolo '~' también funcionan
como salidas PWM.
 El PWM del Arduino tiene una resolución de 8 Bits, es decir
que solo pueden escribirse valores de 0 a 255.
 analogWrite(pin, value)
• pin: es el número del puerto digital que será utilizado
como puerto PWM.
• value: es valor en la “salida análoga”,
© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM
ANALOG INPUT

© 2014 RAÚL Á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); // Pin del led como salida
}

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


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); // Apagar Led
delay(sensorValue);
}

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


ANALOG IN OUT SERIAL

© 2014 RAÚL Á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 pequeña

© 2014 RAÚL Á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 análoga)

void setup() {
// Se inicia la comunicación serial a 9600 baudios:
Serial.begin(9600);
}

© 2011 RAÚL Á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 análogo – digital
}

© 2011 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM


TALLER DE ARDUINO
BÁSICO
PREGUNTAS

© 2014 RAÚL ÁLVAREZ TORRICO - WWW.TECBOLIVIA.COM

También podría gustarte