arduino

Tutorial básico de Arduino con ATOM

 

Es posible que, si has trabajado con Arduino en algún momento, te hayas dado cuenta de que su entorno integrado de desarrollo IDE no es precisamente la mejor parte de Arduino. Desde hace varios meses, me encuentro usando una sencilla alternativa que le permite verficar su código fuente y programar el microcontrolador mediante una herramienta igualmente gratuita que desde mi punto de vista es mucho mejor.

Algunos desarrolladores de hardware consideran el IDE de Arduino  poco funcional y es por ello que comparto con ustedes este tutorial.

En este tutorial se expone el uso del editor de texto ‘hackeable’ del siglo XXI (ATOM) y temas relevantes para trabajar con alguno de los microcontroladores que ofrece la Tienda de Arduino

arduino

Lo primero que vamos a hacer es descargar ATOM directamente desde su sitio oficial.

Para usuarios Ubuntu, prodecemos a lanzar en terminal los siguientes comandos:

sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update
sudo apt-get install atom

Si te descargas Atom, te darás cuenta que por defecto no vamos a poder compilar ni subir código y, aunque técnicamente si podemos escribir código, no disponemos de ninguna ayuda que lo diferencie de abrir el editor de texto que viene con tu sistema operativo y empezar a “trabajar con hardware”.

Procedemos entonces a instalar un paquete llamado platform-io el cual le permitirá no solo programar microcontroladores de la familia de Arduino, sino también, placas de desarrollo de Adafruit, Arduboy, Armstrap, BBC, BQ, BitWizard, Digilent, DigiStump, Doit, ESPert,  Embedded Artist, Freescale, Intel, SeeedStudio, Silicon Labs, SparkFun, Raspberry’s, entre otros no muy conocidos.

Nos dirigimos al menu –> Edit/Preferences/Install y en el campo de busqueda colocamos en busqueda el paquete platform-io, como se muestra en la imagen.

ardu

Cierras y abres el editor para empezar a sentir la magia…

Desarrollo rápido
C / C ++ inteligente (finalización de código y código inteligente Linter) para el desarrollo rápido profesional. Multi-proyectos de flujo de trabajo con paneles múltiples. Temas de Apoyo con colores oscuros y claros.
Desarrollo Integrado
Sistema de construcción de plataforma cruzada sin dependencias externas al software del sistema operativo: mas de 300 tableros, más de 15 plataformas de desarrollo, mas de 10 marcos de trabajo. Arduino y ARM mbed compatibles.
Terminal incorporado
Terminal incorporado con la herramienta PlatformIO CLI y el apoyo de un poderoso monitor del puerto serial. Todos los instrumentos avanzados sin salir de su entorno de desarrollo preferido.

ardu1

Dejare que exploren por su cuenta la creación de un nuevo proyecto, solo para que por su cuenta valide lo que le estoy mencionando arriba y te asombres de la cantidad de placas de hardware que no conocías hehehehe

Ahora bien, ¿Que es lo mínimo que debo saber para trabajar con un microcontrolador?

MANEJO DE PINES

ardu2

Entradas y salidas digitales: Están situadas en la parte derecha de la placa, van del 0 hasta el 13, este ultimo pin lleva una resistencia interna incluida. La señal digital puede estar o encendida o apagada (LOW o HIGH). Por ejemplo, se utilizan para hacer parpadear un LED ó como entrada para interpretar un pulsador. Los pines cero y uno se emplean para cargar el programa en la placa. Los pines 2 y 3 sirven para realizar manejo de interrupciones.

Salidas analógicas PWM: Son los pines 11, 10, 9, 6, 5 y 3, si se fijan tienen una raya curva al lado, se denominan salidas PWM (Pulse Width Modulation) que realmente son salidas digitales que imiten salidas analógicas, modificando la separación entre los diferentes pulsos de la señal. La señal PWM puede dar diversos valores de 0-255, se utilizan, por ejemplo para variar la intensidad de un LED o hacer funcionar un servo. Hay que decir que estos pines funcionan como salidas o entradas digitales ó tambien como salidas analógicas.

Entradas analógicas: Son los pines A0, A1, A2, A3, A4 y A5 (analog in). Se utilizan para tomar lectura de una señal por lo general para sensores analógicos, por ejemplo un sensor de temperatura, un LDR ó hasta un potenciómetro que permitan un valor variable de 0-VCC.

Pines de alimentación  
GND: Son los pines a tierra de la placa, el negativo.
5v: Por este pin suministra 5v
3,3v: Por este pin suministra 3,3v
Vin: Voltaje de entrada, por este pin también se puede alimentar la placa, útil para emplear baterias como alimentación de la placa.
RESET: Por este pin se puede reiniciar la placa.
IOREF: Sirve para que la placa reconozca el tipo de alimentación que requieren los shields
También podemos encontrar el pin AREF, arriba de todo a la izquierda de los pines digitales, este pin sirve para suministrar un voltaje diferente a 5v por los pines digitales.

También podemos reconocer el conector USB, necesario para cargar el programa, escribir o leer datos por monitor serial y también para alimentar la placa de desarrollo.

Ahora bien, manos a la obra… Hagamos algo divertido; un detector de luz para un posible parabrisas ó alguna otra aplicación donde crea sea útil sensar la luz de un entorno. El esquema es diagramado gracias al software Fritzing – Free Software – Sitio Oficial

Materiales: 2 Resistencias de 1KΩ, 2 LDR ó fotoresistencias, un led y una resistencia para limitarle corriente de 220Ω

ardu3

Crea un nuevo proyecto con ATOM a traves de platform-io (Parabrisas), asigna la placa de desarrollo con la que trabajarás (En nuestro caso, Arduino uno) y carga el siguiente código fuente, dentro del fichero src como se muestra en la figura

ardu4

Código fuente para jugarlo:

/*
 ***********************************************************************
 *              LIBRERIAS y CONSTANTES
 ***********************************************************************
 */
int pinLed = 5;
// Pin analogico de entrada para el LDR
int pinLDR1 = A3;
int pinLDR2 = A1;

// Variable donde se almacena el valor del LDR inicializada en cero
int voltajeLDR = 0;
int voltajeLDR2 = 0;

/*
 ***********************************************************************
 *              SETUP CONFIGURACIÓN INICIAL
 ***********************************************************************
 */
void setup() {
  Serial.begin(9600); //  Configuramos el puerto serial a 9600 baudios
  // Configuramos como salida el pin donde se conecta el led
  pinMode(pinLed, OUTPUT);
}

/*
 ***********************************************************************
 *              LOOP BUCLE PRINCIPAL
 ***********************************************************************
 */

void loop() {
  // Apagar todos los leds siempre que se inicia el ciclo
  digitalWrite(pinLed, LOW);

  // Guardamos el valor leido del ADC en una variable
  // El valor leido por el ADC (voltaje) aumenta de manera directamente 
  // proporcional
  // con respecto a la luz percibida por el LDR
  voltajeLDR= analogRead(pinLDR1);
  Serial.println("voltajeLDR1: ");
  Serial.println(voltajeLDR);

  voltajeLDR2= analogRead(pinLDR2);
  Serial.println("voltajeLDR2: ");
  Serial.println(voltajeLDR2);

  // Encender led por encima de un valor del ADC
  if(voltajeLDR < 600){
    digitalWrite(pinLed, LOW);
  }
  if(voltajeLDR > 768){
    digitalWrite(pinLed, HIGH);
  }
  // Esperar 200 milisegundos antes de actualizar
  delay(200);
}

Deberías observar como se enciende o apaga el led al bloquear la luz que llega a una de las foto-resistencias; puedes abrir el monitor serial para comprobar los cambios de tensión que ven tus sensores de luz desde el menú de la parte inferior izq – Aparece como un enchufe para que te conectes a otro mundo hehehe

No limites tus retos, reta tus límites 😉