Fundamentos de Arduino¶

Página oficial : arduino.cc

Contenidos¶

  1. Introduccion
  2. Arduino MEGA2560
  3. Variables en Arduino
  4. Operadores típicos en Arduino
  5. Estructura de un programa en Arduino
  6. Comandos más usados en Arduino
  7. Statements más comunes en Arduino

¿Qué es Arduino?¶

Arduino es una plataforma electrónica de código abierto basada en hardware y software fáciles de usar. Está pensada para cualquiera que haga proyectos interactivos.

Algunas placas de desarrollo¶

Arduino UNO¶

Arduino MEGA¶

Características del Arduino MEGA¶

Característica Valor
Microcontrolador ATMEGA 2560
Alimentación Jack 7-12V o USB
Corriente máxima por pin digital I/O 40 mA
Corriente máxima por pin de alimentación de 3.3V 50 mA
Número de pines digitales I/O 54 pines
Entradas analógicas 16 pines
Salidas PWM (pseudo analógicas)$^1$ 15 pines
Frecuencia del reloj interno 16 MHz
Memoria Flash 256 kB
Memoria SRAM 8 kB
Memoria EEPROM 4 kB
Comunicaciones USB-Serial + I2C + SPI

$^1$Incluidas en los pines digitales

Arduino MKR1000¶

¿Qué lenguage de programación se usa en Arduino?¶

Arduino es un "sabor" de C++ donde sus principales diferencias son el almacenamiento en memoria.

Diferencias Memoria Instrucciones
Computador 2GB 32-bit / 64-bit
Arduino UNO 2kB 8-bit

Variables en Arduino¶

Nombre Tamaño Rango sin signo unsigned Rango con signo Ejemplo
boolean 1 bit false / true ~no aplica~ boolean state = false ;
char 8 bits 0 ... 255 -128 ... 127 char myChar = 65;$^1$
byte 8 bits 0 ... 255 ~no aplica~ byte myByte = B00000111;$^2$
int$^3$ 16 bits 0 ... 65 535 -32 768 ... 32 767 int counter = 0;
long 32 bits 0 ... 4 294 967 295 -2 147 483 848 ... 2 147 483 847 long number = 20000;
float$^4$ 32 bits ~no aplica~ -3.4028235e+38 ... 3.4028235e+38 float temperature = 37.5;
  1. Verificar la tabla ASCII.
  2. B indica notacion binaria.
  3. Hay otros dos nombre equivalentes word = unsigned int y short = int.
  4. Revisar la documentación de arduino para el tipo de dato float aquí.

Operadores aritmeticos¶

Símbolo Descripción
= Asignación
+ Adición
- Sustracción
* Multiplicación
/ División
% Módulo

Operadores de comparación¶

Símbolo Descripción
== Igual a ($x$ es igual a $y$?)
!= Diferente de ($x$ es diferente de $y$?)
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que

Operadores booleanos¶

Símbolo Descripción
&& Operador Y
|| Operador O
! Negación

Acumuladores¶

Símbolo Descripción Ejemplo Equivalente
++ Incremento y = x++; y = x+1;
-- Decremento y = x--; y = x-1;
+= Asignación con suma y += x; y = y+x;
-= Asignación con resta y -= x; y = y-x;
*= Asignación con multiplicación y *= x; y = y*x;
/= Asignación con división y /= x; y = y/x;

Estructura de un programa en Arduino¶

/* 1:  Declaración de libreria      */  #include <SFEMP3Shield.h>
/* 2:  Definición de etiquetas      */  #define LEDPIN 3
/* 3:  Declaración de constantes    */  const unsigned int contMax = 10;
/* 4:  Declaración de variables     */  float temperature = 0;
/* 5:  Declaración de subrutinas    */  void readSensor(){
                                            int y = analogRead(1);
                                            temperature = 100.0*y/1023.0;
                                        }
/* 6:  Declaración de funciones     */  int sum(int x, int y){
                                            return x + y;
                                        }
/* 7:  Subrutina de configuración   */  void setup(){...}
/* 8:  Subrutina de ejecución inf.  */  void loop(){...}

Arduino IDE¶

Para descargar el software ir a la página oficial (descargar la versión Legacy 1.8.X)

Botones¶

Botones Atajo Descripción
Ctrl+R Verificar (compilar) el código
Ctrl+U Subir el código al microcontrolador
Ctrl+N Nuevo
Ctrl+O Abrir
Ctrl+S Guardar
Ctrl+Shift+M Monitor Serial

Comandos comúnmente utilizados¶

  • pinMode
  • digitalWrite
  • digitalRead
  • delay

Ejemplo 1.1 - Parpadeo¶

// Definimos etiquetas
#define L1 2 // Etiquetamos el LED conectado al pin 2 como "L1"

// Declaramos constantes
const unsigned long TBlink = 2000; // Constante para el tiempo de parpadeo de 500ms

void setup() {
  // Configuramos los pines
  pinMode(L1, OUTPUT); // Definimos L1 como una salida
  // Limpieza de la salida por seguridad
  digitalWrite(L1, LOW); // Apagamos L1
}

void loop() {
  digitalWrite(L1, HIGH);   // Prendemos L1
  delay(TBlink);            // Esperamos TBlink ms
  digitalWrite(L1, LOW);    // Apagamos L1
  delay(TBlink);            // Esperamos TBlink ms
}

💾 Código arduino para el parpadeo

Declaración IF¶

  • Se usa en conjunto con operadores de comparación o funciones que retornen un booleano.
  • Verificar si la condición se cumple, de cumplirse, ejecuta las acciones deseadas y luego continua con el programa.

Sintaxis¶

if (condition) { //Do something here
}
else if (othercondition){ //Do something else if the first condition wasn’t met but the othercondition was met
}
else { //Do something here in other case
}

Ejemplo 1.2 - Declaración IF con entrada externa¶

Controlemos el L1 con la entrada externa

// Definimos etiquetas
#define SW 8 // Etiquetamos el Suiche conectado en el pin 8
#define L1 2 // Etiquetamos el LED conectado al pin 2 como "L1"

void setup() {
  // Configuramos los pines
  pinMode(SW, INPUT);   // Definimos SW como una entrada
  pinMode(L1, OUTPUT);  // Definimos L1 como una salida
  // Limpieza de la salida por seguridad
  digitalWrite(L1, LOW); // Apagamos L1
}

void loop() {
  if(digitalRead(SW) == HIGH){// Comparamos si el SW esta en HIGH
    digitalWrite(L1, HIGH);   // Prendemos L1  
  }else{                      // De lo contrario
    digitalWrite(L1, LOW);    // Apagamos L1  
  }
}

💾 Código arduino para la declaración if

Declaración SWITCH¶

  • Permite tener diferentes acciones dependiendo de los valores de un variable.
  • Es similar a tener multiples if y else if para la misma variable con diferentes valores.
  • Cada caso es un posible valor para la variable puede tener y se termina con break.

Sintaxis¶

switch ( var ){
   case 0: 
      //Do something here if var is equal to zero
      break;
   case 1:
      //Do something here if var is equal to one
      break;
   case 2:
      //Do something here if var is equal to two
   break;
}

Ejemplo 1.3 - Declaración SWITCH¶

💾 Código arduino para la declaración switch

// Definimos etiquetas
#define L1 2 // Etiquetamos el LED conectado al pin 2 como "L1"

// Declaramos variables
byte brillo = 0;
char paso = 5; // Paso para el aumento y disminución del brillo

void setup() {
  // Configuramos los pines
  pinMode(L1, OUTPUT); // Definimos L1 como una salida
}

void loop() {
  analogWrite(L1, brillo);          // Definimos el brillo a L1
  brillo = brillo + paso;           // Aumentamos o disminuimos el brillo
  switch(brillo){   // Dependiendo del valor de brillo
    case 0:         // Si es 0 
      paso = 5;     // Vamos a aumentar el brillo
      break;
    case 255:       // Si es 255
      paso = -5;    // Vamos a disminuir el brillo
      break;
  }

  delay(50);            // Esperamos 50 ms
}