loader image

Programación Arduino

Curso de Arduino para principiantes 0
Programación Arduino para principiantes (curso)

¿Quieres programar en Arduino? Estás en el lugar apropiado. Este es un curso básico de programación para principiantes.

Circuito

Aprenderás a controlar los componentes del circuito (en este caso LEDs) con comandos y estructuras de código.

Este es un circuito muy simple que deberás construir para comprender con facilidad el funcionamiento y algoritmos de la programación en Arduino IDE.

Contamos con un botón en el pin digial 8, un LED rojo en el pin digial 5 y uno verde en el pin digial 6.

¿Qué es un programa?

Un programa consiste en comandos sucesivos que se ejecutan uno tras otro empezando por la línea de arriba y terminando por abajo.

¿Qué son los comandos?

Los comandos son instrucciones programables que activan ciertas características. En otras palabras, un comando es una orden que escribimos en el programa para realizar una función en específico.

Ejemplos de comandos en Arduino

El siguiente comando establece el pin digital 6 como salida.

pinMode(6,OUTPUT);

El siguiente comando asigna 5V+ al pin digital 6.

digitalWrite(6, HIGH);

¡Cada comando debe terminar con un punto y coma!

Combinando los dos comandos anteriores, podemos codificar una instrucción para que el LED verde encienda:

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

void loop() {
  digitalWrite(6, HIGH);
}

Lenguaje de programación de Arduino

Arduino está programado con el lenguaje de programación C/C++. Éste se utiliza ampliamente en la programación de hardware. Así que si estás buscando funciones muy específicas, puedes buscarlo en alguna referencia de C/C++.

Estructura de los programas

Un programa de Arduino debe tener una estructura de programa específica. En el caso más simple, los dos métodos principales son setup() y loop(). Todo lo que escribas entre corchetes { } corresponde al método respectivo.

void setup() {
}

void loop() {
}

Mientras que el método setup() únicamente se ejecuta al inicio del programa, el método loop() se repetirá constantemente.

El comando delay(1000); detiene el programa brevemente.

El número entre paréntesis indica cuánto tiempo en milisegundos debe detenerse el programa. En este caso son 1000 milisegundos, o un segundo.

delay(1000);

Una vez que conocemos estas estructuras podemos crear un código que logre que el LED verde parpadee en intervalos de 1 segundo de manera constante:

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

void loop() {
  digitalWrite(6, HIGH);
  delay(1000);
  digitalWrite(6, LOW);
  delay(1000);
}

Los valores transmitidos con comandos se llaman argumentos. Por lo tanto, para delay(1000); el argumento es 1000, y para digitalWrite(6,HIGH); los argumentos son 6 y HIGH.

¿Qué son las variables?

Una variable es una pequeña memoria en la que se almacena información de una forma determinada.

En el ejemplo anterior, hemos colocado el número 6 en tres líneas de nuestro programa. Si ahora quisiéramos tener el LED rojo en lugar del verde, tendríamos que cambiar ese número 6 en los tres lugares. Esto es muy poco cómodo. Es preferible almacenar la información sobre el número de pin en una variable.

Tipos de variables

TipoSignificadoDescripción
intnúmeros enteros-32,768 a 32,767
longnúmeros enteros-2,147,483,648 a 2,147,483,647
floatNúmero de punto flotanteNúmeros decimales
charCaracterCaracteres alfanuméricos (letras, números, caracteres especiales)

Ya que el número de pin es un número entero, la variable se declara de la siguiente manera:

int ledPin=6;

Así creamos una variable de tipo int. Dicha variable se llama ledPin y se le asigna un valor de 6.

Dondequiera que especifiquemos el nombre de la variable, se sustituye por el valor de la variable. Entonces, en cualquier línea del código donde coloquemos ledPin habrá un valor de 6.

Ahora puedes escribir rápidamente un programa que haga que el otro LED parpadee.

LED verde:

int ledPin=6;

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

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}

LED rojo:

int ledPin=6;

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

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}

Función if

Para poder hacer la lectura de un botón, podemos usar el comando digitalRead();

Devuelve un valor que puede ser leído y comparado.

La función «si» puede ser utilizada para la comparación:

int ledPin=5;
int buttonPin=8;

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

void loop() {
  if (digitalRead(buttonPin)==HIGH){
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

Para poder utilizar la función digitalRead(); el pin correspondiente debe ser declarado primero como entrada: pinMode(buttonPin, INPUT);

La construcción if (digitalRead(buttonPin)==HIGH) comprueba si el estado de lectura del botón es HIGH. En nuestro circuito de ejemplo, HIGH es la salida si el pin tiene alguna conexión con el 5V+.

Si se presiona el botón, esta conexión existe.

¡El doble signo igual indica que es obligatorio!

Si la condición en los paréntesis de la consulta «if» es correcta, es decir, verdadera, se ejecuta la parte en los corchetes. Si no es cierto, la parte de abajo se ejecuta (else).

Función for

Cuando se quieren repetir ciertos procesos un determinado número de veces, se utiliza el bucle de «for»:

int greenPin=6;
int redPin=5;
int buttonPin=8;

void setup() {
  pinMode(greenPin, OUTPUT);
  pinMode(redPin, OUTPUT);
}

void loop() {
  for (int i=0; i<3; i=i+1){
    digitalWrite(greenPin, HIGH);
    delay(250);
    digitalWrite(greenPin, LOW);
    delay(250);
  }

  for (int i=0; i<6; i=i+1){
    digitalWrite(redPin, HIGH);
    delay(250);
    digitalWrite(redPin, LOW);
    delay(250);
  }

}

Este programa primero hace que el LED verde parpadee tres veces, y luego el rojo seis veces.

La construcción para (int i=0; i<3; i=i+1){ } repite todo en los corchetes mientras la condición de continuidad i < 3 sea verdadera.

i es una variable contador, que se crea al inicio y se establece en cero: int i=0.

i se incrementa en 1 en cada ciclo del bucle: i=i+1. (Normalmente esto se puede acortar como i++).

Métodos

Este texto del programa es todavía relativamente largo y puede ser acortado creando sus propios métodos. Esto es útil siempre que quieras repetir las mismas secuencias de comandos:

int greenPin=6;
int redPin=5;
int buttonPin=8;

void setup() {
  pinMode(greenPin, OUTPUT);
  pinMode(redPin, OUTPUT);
}

void blink(int thePin, int repeticiones){
  for (int i=0; i<repeticiones; i=i+1){
    digitalWrite(thePin, HIGH);
    delay(250);
    digitalWrite(thePin, LOW);
    delay(250);  
  }
}

void loop() {
  blink(greenPin,3);
  blink(redPin,6);
}

El método void blink() { } hace que un LED parpadee un cierto número de veces. Necesita dos datos: ¿Qué LED debería parpadear? ¿Con qué frecuencia debe parpadear?

Ambos datos son números enteros y se crean como argumentos en los paréntesis: blink(int thePin, int repeticiones).

Dentro del método, ahora puedes usar las variables thePin y repeticiones.


Submit your review
1
2
3
4
5
Submit
     
Cancel

Create your own review

MiElectrónicaFácil.com
Average rating:  
 0 reviews

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Deja una Review

Submit your review
1
2
3
4
5
Submit
     
Cancel

Create your own review

MiElectrónicaFácil.com
Average rating:  
 0 reviews