Lo ágil que es Ruby como lenguaje no está puesto en duda. No sólo tiene una sintaxis limpia y elegante, sino que su comunidad constantemente nos llena de gemas que nos ayudan en el proceso de desarrollo de nuestros proyectos. Ahora, si combinamos esas cualidades con el mayor expositor de hardware libre del mercado, obtenemos la posibilidad de crear proyectos usando hardware. ¿Qué te gustaría crear?
Si bien processing no es un lenguaje que nos complique la vida al programar en Arduino, el usar Ruby (y precisamente las gemas compatibles con este hardware) nos permite:
Actualmente existen 3 soluciones para programar en Arduino usando Ruby:
Un protocolo usado mucho en microcontroladores y microprocesadores. Robusto pero delicado si no sabemos con exactitud qué tipo de datos estamos mandando. En este tutorial omitiremos esta versión ya que el resultado no difiere mucho de otros métodos.
Por ser un protocolo creado especialmente para Arduino nos permite comunicarnos más ágilmente y hacer uso de todas las capacidades del Hardware: Entradas/Salidas Digitales y Análogas, PWM, etc.
Nos ofrece las mismas capacidades que Firmata, usando comunicación serial pero con una sintaxis más parecida a lo que es Ruby. Es la gema con más soporte actualmente. En este caso vamos a aprender a controlar Arduino con Firmata y Dino, utilizando Ruby.
Con Arduino conectado y el IDE abierto, buscamos el ejemplo: “StandardFirmata”. Este se encuentra en Archivo > Ejemplos > Firmata > StandardFirmata:
En la parte superior usamos la opción de “Cargar usando Programador”: Y luego esperamos a tener un mensaje de “Carga Terminada” en la parte inferior:
Suponiendo que ya tienes instalado Ruby, instalamos la gema usando el siguiente comando: [ruby]sudo gem install arduino_firmata[/ruby] Y esperamos a que se instale la gema correctamente.
En tu editor de texto favorito, vamos a empezar a crear nuestro primer programa para Arduino. Nos permitirá prender y apagar un led. En este caso el que contiene arduino en la posición 13. Creamos un archivo con las siguientes lineas de código: [ruby] require “rubygems” requite “arduino_firmata” #iniciamos la conexión a Arduino arduino = ArduinoFirmata.connect #imprimimos la versión de Firmata como éxito en la conexión puts “firmata version #{arduino.version}” #luego hacemos un ciclo infinito que nos permite cada 0.5 segundos #prender y apagar el led que está en el puerto 13 #e imprimimos en consola el estado del led loop do arduino.digital_write 13, true sleep 0.5 puts “Prende” arduino.digital_write 13, false sleep 0.5 puts “Apaga” end [/ruby] Guardamos el archivo como arduino1.rb y lo ejecutamos desde la consola: [ruby]ruby arduino1.rb[/ruby] Y tenemos parpadeando nuestro LED:
En este caso, necesitamos primero instalar la gema para generar el archivo necesario para nuestro Arduino: [ruby]sudo gem install dino[/ruby] Después, usaremos la gema para crear el archivo compatible con Arduino:
Nos va a crear una carpeta llamada du
Dentro de du veremos un archivo du.ino. Ese es el que vamos a cargar más adelante en el Arduino.
Con Arduino conectado, buscamos el archivo du.ino y lo cargamos al Arduino:
El programa en para Dino es un poco diferente al que escribimos anteriormente para Firmata, pero tiene un feeling más cercano a un programa en Ruby. Manos a la obra: [ruby] require ‘bundler/setup’ requite ‘dino’ #hacemos una conexión serial con el Arduino board = Dino::Board.new(Dino::TxRx::Serial.new) #configuramos el led led = Dino::Components::Led.new(pin: 13, board: board) #le decimos que prenda y apague cada 0.5 segundos [:on, :off].cycle do |switch| led.send(switch) puts “Ciclo” sleep 0.5 end [/ruby] Guardamos el archivo como arduino2.rb y lo ejecutamos desde la consola: [ruby]ruby arduino2.rb[/ruby] ¡Y tendremos nuestro led parpadeando! Ruby es un lenguaje bastante dinámico y flexible. A través de Rails, el framework para la web de Ruby, podemos construir aplicaciones web de todo tipo. ¿Quieres desarrollar aplicaciones en Ruby on Rails? Aprende con nosotros en el curso profesional de Ruby on Rails, construiremos desde cero una aplicación 100% escrita en Ruby y desplegada a un servidor en producción.