Cómo usar Arduino y C++

Cómo usar Arduino y C++

Consigue gratis tu cuenta

Crea una API REST con Node.js y MongoDB

En este curso vas a aprender a crear una API REST con Node.js y MongoDB, además de crear un entorno de desarrollo con Docker y Docker Compose.

Comenzar ahora

Bienvenidos a este tutorial sobre la comunicación de Arduino con nuestros programas de C++. Todos sabemos que a través del IDE de Arduino podemos abrir un monitor serie y tener una interfaz textual sencilla con nuestro Arduino. Esta interfaz es muy útil para saber que está pasando por “dentro” de nuestro Arduino. Pero si lo que queremos es potenciar uno de nuestros programas en C++ con el potencial que nos ofrece nuestra placa o al revés, vitaminar nuestro programa de arduino con las características de nuestro pc, entonces es hora de comenzar a usar la librería “SerialClass.h”. Hay que decir que el tutorial está enfocado a programas que corren bajo Windows y en mi caso he usado MS Visual Studio.

Os dejo el enlace para que os bajéis la librería.

 GitHub - SerialClass

Para que os hagáis una idea de los usos que tiene, podemos regular la luminosidad de nuestra pantalla del ordenador con una LDR (light dependant resistor), podemos usar nuestro Arduino con un acelerómetro a modo de volante en nuestro juego de conducción, y así un sinfín de ejemplos.

Si ya tenemos abierto nuestro código en Visual Studio lo que nos permite hacer la librería SerialClass.h es lo siguiente:

 Construir la comunicación. (En principio debemos conocer el puerto serial que está usando nuestro arduino)

//Nomenclatura para crear conexión con los puertos COM1 - COM9
Serial* Arduino = new Serial("COM7");
//Nomenclatura para crear conexión con los puertos COM10 en adelante
Serial* Arduino = new Serial("\\\\.\\COM10");

 Comprobar si estamos conectados.

if( Arduino->IsConnected() ) cout<<"Arduino Conectado";

 Leer información que envía Arduino.

//Crear un buffer de entrada
char lectura[50];
//Hacer la lectura indicando el buffer de entrada y longitud
Arduino->ReadData(lectura,50);

Enviar enviar información al Arduino.

//Crear un buffer de salida
#define longEnvio 20
char envio[longEnvio];
//Hacer el envío indicando el buffer de salida y longitud
Arduino->ReadData(envio,longEnvio);

Y eso es todo con lo que podemos jugar en nuestros programas. Vamos ahora con un ejemplo muy simple. Dicho ejemplo consiste en un programa de ordenador que envía una cadena de texto en minúsculas al Arduino mediante una comunicación serie, y el arduino hace la transformación a mayúsculas y le devuelve la cadena de texto al ordenador. Éste mostrará la cadena que le ha llegado desde el Arduino por pantalla. Código en Arduino:

void setup () {
     Serial.begin(9600);
     while(!Serial) { ; }
}
void loop () {
     if( Serial.available()> 0) {
          int letras = Serial.available();    
          char palabra[letras];
          for(int x=0; x<letras; x++) palabra[x]= Serial.read();
         
          for(int i=0; i<letras; i++) palabra[i] -= 32; //Cambio de minúsculas a mayúsculas
         
          Serial.print(palabra);
     }
     delay(20);
}

Código en Visual Studio:

#include 
#include 
#include "SerialClass.h"
using namespace std;

void main () {
    Serial* Arduino = new Serial("COM7");


    while( Arduino->IsConnected() ){
        char palabra[] = "geekytheory";

        cout<<"Arduino conectado"<<endl;
       
        cout<<"Enviando :"<<palabra<<endl;
        Arduino->WriteData(palabra,sizeof(palabra)-1);

        Sleep(500);

        Arduino->ReadData(palabra,sizeof(palabra)-1);
        cout<<"Recibido: "<<palabra<<endl;
   
        cout<<"-------------------"<<endl;
        Sleep(1000);
    }
}

Vídeo del resultado: 

Espero que os sea útil este tutorial. ¡Hasta el próximo!


¿Quieres seguir aprendiendo?