11 - Primeros pasos con Arduino

Volver al curso

El lenguaje de programación “C”

Este es el lenguaje en el que casi todo el mundo empieza. Primero se suelen hacer aplicaciones para ordenador, y después se pasa a los microcontroladores.

Programación en Arduino

Salidas digitales

pinMode(13, OUTPUT); en la función void setup(). Si quieres puedes usar variables en vez de números de pin (mucho mejor si luego tienes que cambiar).

11.1 - Ejercicio semáforo en ciclo automático

Diseña un Automatismo en Arduino para el control de un semáforo de un paso de peatones sin cruce de calles.

Flujo del programa:

  1. Empieza con rojo peatones, verde coches. 5 segundos.
  2. Después sigue rojo peatones, pero coches pasa a ámbar. 2 segundos.
  3. Rojo ambos durante 2 segundos.
  4. Verde peatones, rojo coches. 5 segundos
  5. Verde peatones parpadeando, rojo coches. 0,5 segundos off, 0,5 segundos on, 0,5 segundos off, 0,5 segundos on, 0,5 segundos off, 0,5 segundos on.
  6. Rojo ambos durante1 2 segundos.

Entradas digitales

En void setup():

pinMode(pulsPin,INPUT);

En el código del programa, para hacer la lectura del pin:

int pulsPin=8;

if(digitalRead(pulsPin) == HIGH)
	{
	// Si se cumple, hago esto.
	}
else
	{
	// Si NO se cumple, hago esto otro.
	}

Ejemplo 1: Realizar un programa encienda el led 13 al accionar un pulsador pull-down (apuntes pull-up, pull-down).

Ejemplo 2: Realizar un programa encienda el led 13 durante 5 segundos al accionar un pulsador pull-down.

11.2 - Ejercicio semáforo con pulsador

Idéntico al anterior, pero con pulsador.

  1. Empieza con rojo peatones, verde coches. En este estado, estamos leyendo el pulsador constantemente.
  2. SI alguien pulsa el botón, seguimos igual durante 5 segundos (rojo peatones, verde coches), y también encendemos el led de esperar para cruzar.
  3. Después sigue rojo peatones, pero coches pasa a ámbar. 2 segundos. Sigue encendido el led de esperar para cruzar.
  4. < sigue de manera similar al ejercicio anterior >

Niveles en lenguajes de programación

Los lenguajes de alto nivel son lenguajes que permiten escribir aplicaciones más o menos independientes del hardware (por ejemplo, “C” se usa en un gran número de microcontroladores y aplicaciones de PC).

Se dice que son de “alto” nivel por estar más próximos al lenguaje humano (normalmente al inglés), y más lejos del lenguaje máquina (que es binario)

Los lenguajes ensambladores son considerados de bajo nivel ya que son un calco del lenguaje de las máquinas pasado a texto.

Los programas escritos en lenguajes de alto nivel deben ser traducidos a código máquina en un proceso conocido como traducción (compilación).

Fuentes: Webopedia | Mr D Finch


A falta de printf(), usa serial

void setup() {
  Serial.begin(9600); //ajusta velocidad a 9600 bits per second
}

Después, para enviar información: Serial.println("Hola mundo");

Ojo:

Puedes concatenar strings (caracteres) y variables de la siguiente manera:

  Serial.print("Mi LED está en la pata ");
  Serial.println(ledespere, DEC);

O más eficientemente con:

 Serial.println((String)"Mi LED está en la pata " + ledespere);

11.3 - Ejercicio serial (Arduino → PC)

Programa que cuente el número de veces que se presiona un pulsador y lo muestre por puerto serie.

Haz que el led 13 se ilumine cuando hayas pulsado 5, 10, y 20 veces (usa sentencia condicional if).

OJO, necesitarás aprender a contar… haz este experimento en lenguaje C aquí:

#include <stdio.h>

int conteo = 0;

int main(void) {
    printf("La cuenta da %i", conteo);
    conteo = conteo + 1; // forma arcaica de contar
    printf("\nLa cuenta da %i", conteo);
    conteo++; // forma "pro" de contar
    printf("\nLa cuenta da %i", conteo);
}

Recepción de datos por serial

char caracter;

if(Serial.available() == HIGH) // operador booleano que se pone a HIGH si se reciben datos 
	{
	caracter = Serial.read(); // lee la tecla pulsada
	}

OJO: USA COMILLAS SIMPLES caracter = 'a'; CON CARACTERES.

11.4 - Ejercicio serial (PC → Arduino)

Hacer un programa que encienda el GPIO 13 (LED integrado) al recibir “H” o “h” por puerto serie, y que que se apague al recibir “L” o “l”.


Fuente: “Introducción ao Arduino” - David Touceda Bugallo, 2014


Volver al curso