fbpixel
Instalar PlatformIO IDE en Visual Studio Code

Instalar PlatformIO IDE en Visual Studio Code

En este tutorial vamos a configurar Visual Studio Code para que pueda ejecutar C

Hardware

  • Ordenador
  • Placa Arduino UNO u otra
  • Cable USB para conectar la placa Arduino al PC

Instalación de Visual Studio Code y PlatformIO IDE

Siga los pasos de instalación para descargar .Net 6.0

A continuación, abra Visual Studio Code.

Busque PlatformIO IDE en la pestaña “Extensiones” de la columna izquierda de Visual Studio Code y haga clic en “Instalar”.

Una vez instalado, cierre y vuelva a iniciar Visual Studio Code para que el software se configure correctamente con PlatformIO IDE. A continuación, aparecerá la página de inicio del IDE.

Empezar su primer proyecto en C con PlatformIO IDE

Para ello, haga clic en “+ Nuevo proyecto” y rellene la ventana que aparece.

Aquí, como ejemplo, he elegido una placa Arduino Uno y el framework también será del tipo Arduino, lo que significa que las funciones setup() y loop() se encontrarán en el archivo principal main. Crear un proyecto puede llevar un poco de tiempo.

En la parte izquierda del espacio de trabajo de nuestro proyecto, verás una serie de subcarpetas. La carpeta “src” contiene los scripts fuente del proyecto, incluyendo el archivo principal “main.cpp”, en el que escribiremos nuestro script para programar nuestra placa Arduino Uno. En este framework pre-construido de Arduino, notarás que en la cabecera del programa la línea de comandos “

Empezar con un programa C en PlatformIO IDE

Para probar tu primer proyecto en C en PlatformIO IDE, cargarás un pequeño programa para hacer parpadear un LED en la placa Arduino Uno y obtener información sobre el estado del LED a través del enlace serie en el terminal de Visual Studio Code.

// Ici dans l'entête du programme, on inclut les librairies et prototypes de fonctions nécessaires
#include <Arduino.h>

// Ici on met nos initialisations
void setup() 
{ 
    Serial.begin(9600); //ouverture pour communiquer via le port série
    pinMode(13, OUTPUT); //On initialise le pin 13 qui est associé à la LED en sortie pour pouvoir l'allumer et l'éteindre
} //Fin de la fonction setup()

// Ici dans la fonction loop on vient placer le script qui se répètera en boucle dans l'Arduino
void loop() 
{
  digitalWrite(13,HIGH); //Place le pin digital 13 à l'état HAUT (5V) -> Led allumée
  Serial.println("Led allumée");//Nous renvoie par la liaison série l'état de la Led Allumé
  delay(500); //Met en pause le programme pendant la valeur de 500 en ms

  digitalWrite(13,LOW); //Place le pin digital 13 à l'état BAS (0V) -> Led éteinte
   Serial.println("Led éteinte");//Nous renvoie par la liaison série l'état de la Led éteinte
  delay(500); //Met en pause le programme pendant la valeur de 500 en ms
} // Fin de la fonction

Una vez que hayas copiado y pegado tu programa, puedes subirlo. Para subir el programa, hay accesos directos que puedes activar haciendo clic sobre ellos en la parte inferior de Studio Visual Code :

  1. compilar el programa ;
  2. compilar, limpiar y descargar el programa en la placa Arduino (el PUERTO USB utilizado se detecta automáticamente);
  3. limpiar el Terminal y la tarjeta microcontroladora conectada (borrar el script grabado en ella);
  4. probar el programa ;
  5. abrir un monitor para el Serial Link y recibir (o enviar) datos de la tarjeta. Cuando este “Monitor Serial” está abierto, es imposible cargar un programa. Por lo tanto, antes de cargar un nuevo programa, es necesario cerrar el monitor haciendo clic una vez en el terminal y, a continuación, pulsando Ctrl + C ;
  6. Abre un Terminal.

Una vez que haya hecho clic en cargar, debería obtener un retorno en un terminal confirmando que la compilación y la carga se han realizado correctamente, con el siguiente aspecto:

A continuación, haga clic en el comando para abrir un Monitor para establecer el enlace serie.

A continuación, puede observar el estado de los LED en directo en el monitor.

Cómo instalar una biblioteca externa en Visual Studio Code para el IDE PlatformIO

Eso es todo. Primero descarga tu biblioteca externa. Una vez que tengas el archivo .zipp, tienes que extraerlo (o copiar y pegar desde la carpeta de la librería descomprimida) en esa carpeta (en este caso, la librería que usaremos como ejemplo es ServoLib, que se usa para facilitar el control de servomotores):

Puede acceder a la carpeta “lib” de su proyecto, diseñada para alojar bibliotecas externas, a través de Visual Studio Code.

Una vez instalada una biblioteca en su proyecto, deberá incluirla en la cabecera del programa, como :

Ahora ya tienes todo lo básico que necesitas para empezar a utilizar el IDE PlatformIO para programar en C.

Programación de una Raspberry Pi Pico con Arduino IDE

Programación de una Raspberry Pi Pico con Arduino IDE

La Raspberry Pi Pico es una placa de desarrollo basada en el RP2040 programable con el IDE Arduino. Dispone de un gran número de entradas

Instalar los controladores en el ordenador

La Raspberry Pi Pico es reconocida como un dispositivo de almacenamiento USB Fat32. Así que no hay controladores especiales que instalar para conectarlo a un ordenador. Para convertir la RPi Pico en una unidad flash USB:

  • Desconecte el Pico de su fuente de alimentación
  • Pulse el botón BOOTSEL
  • Conecte el Pico al ordenador mediante el cable USB
  • Suelte el botón BOOTSEL

Añadir manejadores JSON

Para poder programar otros microcontroladores con el IDE de Arduino, es necesario instalar en el Arduino gestores de placa que contengan todas las herramientas necesarias para programarlos. Para recuperar los gestores, es necesario encontrar la URL correspondiente. En el caso de la Raspberry Pi Pico, https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Nota: Si tiene problemas de compilación, compruebe si hay instalada una versión anterior de Pico. Si es así, bórrela manualmente (C:\Users\\AppData\Local\Arduino15\packages\rp2040).

A continuación, abra la ventana Archivo>Preferencias del software Arduino. En la parte inferior de la página encontrarás un cuadro de texto en el que introducir la URL: “Additional board manager URL”. (no olvides separar las URLs con una coma “,”)

Instalación de gestores

En la pestaña “Herramientas”, siga la ruta “Tipo de mapa > Gestor de mapas”. El IDE cargará el catálogo de mapas desde la URL.

Si busca el microcontrolador en la barra de búsqueda, debería aparecer el paquete que desea instalar.

Seleccionar configuración

Una vez instalado el paquete de gestión, el microcontrolador debería aparecer en los tipos de placa disponibles.

A continuación, deberá conocer las características de su tarjeta para seleccionar los ajustes adecuados. Sin embargo, salvo en casos excepcionales, los ajustes por defecto funcionarán sin problema.

Código de ejemplo

Puede copiar y pegar este código de ejemplo para probar la compilación y la descarga. Una lista de librerías Arduino compatibles con el microcontrolador RP2040 está disponible aquí.

//Constants
#define BRIGHTNESS 200

//Parameters
const int ledPin = 25;

//Variables
bool ledStatus = 0;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init led
  pinMode(ledPin, OUTPUT);

}

void loop() {
  testLed();
}

void testLed( ) {
  digitalWrite(ledPin, HIGH);
  Serial.println(F("LED ON"));
  delay(500);
  digitalWrite(ledPin, LOW);
  Serial.println(F("LED OFF"));
  delay(500);
}

Si la carga se realiza correctamente, debe aparecer este mensaje

Resetting COM15
Converting to uf2, output size: 105472, start address: 0x2000
Flashing E: (RPI-RP2)
Wrote 105472 bytes to E:/NEW.UF2

Resultados

Fuentes

Programación de una Raspberry Pi Pico en C++ con Visual Studio Code

Programación de una Raspberry Pi Pico en C++ con Visual Studio Code

Vamos a ver cómo programar el microcontrolador Raspberry Pi Pico en C++ utilizando Visual Studio Code. La placa Raspberry Pi Pico es un microcontrolador basado en el chip RP2040 de Raspberry Pi. Es programable en C++ y MicroPython y puede interactuar con todo tipo de equipos.

Hardware

  • Ordenador
  • Raspberry Pi Pico
  • Cable USB B macho a USB Micro B

Instalación y configuración de Visual Studio Code

Vaya a la página de descargas de Visual Studio Code y descargue la versión para su sistema operativo.

Ejecute el instalador y siga el procedimiento

En Extensiones, busque e instale PlatformIO IDE

N.B: Si la instalación de PlatformIO muestra un error, siga las soluciones descritas en esta página. Para la solución3: actualice la versión de platformio (es decir: get-platformio-1.1.2.py).

Creación de un proyecto para Raspberry Pi Pico

Cliquez sur l’icone PlatformIO dans la barre à gauche puis sélectionnez Projects & Configuration dans le menu Quick Access. Créer un nouveau projet

Busca la placa Raspberry Pi Pico y selecciona el Arduino Framework

Busca la placa Raspberry Pi Pico y selecciona el Arduino Framework

#include <Arduino.h>

//Variables 
bool ledStatus = 0; 

void testLed( ){ 
	digitalWrite(LED_BUILTIN,HIGH); 
  	Serial.println(F("LED ON")); 
	delay(500); 
	digitalWrite(LED_BUILTIN,LOW); 
  	Serial.println(F("LED OFF")); 
	delay(500); 
} 

void setup(){ 
	//Init Serial USB 
	Serial.begin(9600); 
	
	Serial.println(F("Initialize System")); 
	//Init led 
	pinMode(LED_BUILTIN,OUTPUT); 
 
} 
 
void loop(){ 
	testLed(); 
} 

Una vez escrito el código, puedes compilarlo pulsando el icono “Compilar”.

Una vez escrito el código, puedes compilarlo pulsando el icono “Compilar”.

A continuación, puede copiar el archivo firmware.uf2 a la Raspberry Pi Pico, que luego se ve como un dispositivo de almacenamiento USB.

Próximas subidas

Una vez que el primer código se ha cargado en el Raspberry Pi Pico, ya no estará disponible como un dispositivo de almacenamiento USB. Para cargar un código de nuevo, usted necesita ya sea:

  • Desenchufa la RPi Pico y vuelve a enchufarla, manteniendo pulsado el botón BOOTSEL. A continuación, puede copiar el archivo uf2 compilado.
  • Utilice la función Upload de PlatformIO para programar el Pico con Visual Studio

N.B.: Si el botón Upload de PlatformIO no funciona, puedes intentar instalar libUSB con Zadig

Resultados

Al igual que con Arduino, puedes ver los mensajes de depuración en el monitor serie de PlatformIO.

Fuentes

Uso de AC MotorShield ESP32

Uso de AC MotorShield ESP32

El ESP32 AC MotorShield es una placa de extensión que permite a un ESP32 NodeMCU controlar dos motores de corriente continua o un motor paso a paso. Hemos visto cómo accionar un motor de corriente continua utilizando un puente en H, que puede requerir mucho cableado cuando sólo se utiliza el circuito integrado. Para una aplicación a bordo, como un robot Willy, necesitarás accionar varios motores en paralelo. Existen escudos para simplificar el montaje.

Hardware

  • Ordenador
  • NodoMCU ESP32
  • Cable USB A macho
  • AC Motor Shield ESP32
  • Motor CC x2 o motor paso a paso x1
  • Fuente de alimentación externa de 9 V

Principio de funcionamiento

El ESP32 AC MotorShield utiliza el doble puente en H SN751044NE. Puede accionar motores en dirección y velocidad con una tensión nominal de entre 4,5 y 36V y una corriente de 1A con una fuente de tensión externa:

  • hasta dos motores de corriente continua o un motor paso a paso bipolar
  • GPIOs disponibles
  • Buses I2C y UART

Diagrama

Compatible avec la carte NodoMCU ESP32, le shield se place directement sur le microcontrôleur. L’alimentation des moteurs se branche au bornier VM/GND et celle de la carte au bornier VIN/GND. Les moteurs se branchent sur les borniers A+,A-,B+,B-.

  • 0,4 (motor A
  • 15, 2 (motor B
  • GPIOs disponibles en otros pines

En el caso de un escudo, las conexiones están predefinidas. Las conexiones del motor se detallan en los siguientes diagramas.

En los dos ejemplos siguientes, añadimos una interfaz web que permite probar los motores en ambos sentidos de giro.

Código de gestión de un motor de corriente continua

Para interactuar con MotorShield ESP32 y accionar motores DC, no utilizamos ninguna librería en particular. Siempre puedes crear tu propia librería para simplificar tu código.

#include <WiFi.h>
#include <WebServer.h>
#include <Arduino.h>
#include <analogWrite.h>

#define IN1 34    //sensor
#define OUT1  0   //A+ - Black
#define OUT2  4   //A- - Green
#define OUT3  15  //B+ - Red
#define OUT4  2   //B- - Blue

//Motor param
int Steps = 0;
int Direction = 0;
int speedMotor = 150;

//Wifi
const char *ssid = "****";
const char *password = "*****";

WebServer server(80);

const int led = 2;
int stateMotorA = 0,stateMotorB = 0;
char stateMotorTextA[3][10] = {"STOP","CCW!","CW!"};
char stateMotorTextB[3][10] = {"STOP","CCW!","CW!"};
String sensorValue;

/*********************************************************************************************
 * HANDLE FUNCTIONS
*********************************************************************************************/
void handleRoot()
{
    String page = "<!DOCTYPE html>";

    page += "<html lang='fr'>";

    page += "<head>";
    page += "    <title>ESP32MotorShieldV1</title>";
    page += "    <meta http-equiv='refresh' content='60' name='viewport' content='width=device-width, initial-scale=1' charset='UTF-8' />";
    page += "    <link rel='stylesheet' href='https://www.w3schools.com/w3css/4/w3.css'>";

   page += "<script>";

   page += "function getData() {";
   page += "  var xhttp = new XMLHttpRequest();";
   page += "  xhttp.onreadystatechange = function() {";
   page += "    if (this.readyState == 4 && this.status == 200) {";
   page += "      document.getElementById('SensorValue').innerHTML =this.responseText;";
   page += "      console.log(this.responseText);";
   page += "    }";
   page += "  };";
   page += "  xhttp.open('GET', 'readSensor', true);";
   page += "  xhttp.send();";
   page += "}";

   page += "setInterval(function() {getData();}, 2000);   // Call a function repetatively with 2s interval";

   page += "</script>";
 
    page += "</head>";

    page += "<body>";
    page += "    <div class='w3-card w3-padding-small w3-jumbo w3-center' style='color:#fff; background-color:#3aaa35;'>";
    page += "        <p>Motor State A: "; page += stateMotorTextA[stateMotorA]; + "</p>";
    page += "    </div>";

    page += "    <div class='w3-bar'>";
    page += "        <a href='/lefta' class='w3-bar-item w3-button w3-border w3-jumbo' style='width:33%; height:50%;'>GAUCHE</a>";
    page += "       <a href='/stopa' class='w3-bar-item w3-button w3-border w3-jumbo' style='width:33%; height:50%;'>STOP</a>";
    page += "        <a href='/righta' class='w3-bar-item w3-button w3-border w3-jumbo' style='width:33%; height:50%;'>DROITE</a>";
    page += "    </div>";

    page += "    <div class='w3-card w3-padding-small w3-jumbo w3-center' style='color:#fff; background-color:#3aaa35;'>";
    page += "        <p>Motor State B: "; page += stateMotorTextB[stateMotorB]; + "</p>";
    page += "    </div>";

    page += "    <div class='w3-bar'>";
    page += "        <a href='/leftb' class='w3-bar-item w3-button w3-border w3-jumbo' style='width:33%; height:50%;'>GAUCHE</a>";
    page += "       <a href='/stopb' class='w3-bar-item w3-button w3-border w3-jumbo' style='width:33%; height:50%;'>STOP</a>";
    page += "        <a href='/rightb' class='w3-bar-item w3-button w3-border w3-jumbo' style='width:33%; height:50%;'>DROITE</a>";
    page += "    </div>";
    
    page += "    <div class='w3-card w3-padding-small w3-jumbo w3-center' style='color:#fff; background-color:#3aaa35;'>";
    page += "        <p>Sensor value: <span id='SensorValue'>0</span></p>";
    page += "    </div>";

    page += "    <div class='w3-center w3-padding-16'>";
    page += "        <p>Server hosted on NodoMCU ESP32 - <i>Made by <a href='https://www.aranacorp.com' style='color:#3aaa35;'>AranaCorp</a></i></p>";
    page += "        ";

    page += "    </div>";

    page += "</body>";

    page += "</html>";

    server.setContentLength(page.length());
    server.send(200, "text/html", page);
}

void handleLeftA(){
    stateMotorA = 2;
    digitalWrite(led, HIGH);
    server.sendHeader("Location","/");
    server.send(303);
}

void handleRightA(){
    stateMotorA = 1;
    digitalWrite(led, LOW);
    server.sendHeader("Location","/");
    server.send(303);
}

void handleStopA(){
    stateMotorA = 0;
    digitalWrite(led, HIGH);
    server.sendHeader("Location","/");
    server.send(303);
}


void handleLeftB(){
    stateMotorB = 2;
    digitalWrite(led, HIGH);
    server.sendHeader("Location","/");
    server.send(303);
}

void handleRightB(){
    stateMotorB = 1;
    digitalWrite(led, LOW);
    server.sendHeader("Location","/");
    server.send(303);
}

void handleStopB(){
    stateMotorB = 0;
    digitalWrite(led, HIGH);
    server.sendHeader("Location","/");
    server.send(303);
}

void handleInput() {
 sensorValue = String(analogRead(IN1));
 server.send(200, "text/plain", sensorValue); //Send ADC value only to client ajax request
}

void handleNotFound(){
    digitalWrite(led, HIGH);
    stateMotorA = 0;
    stateMotorB = 0;
    server.send(404, "text/plain", "404: Not found");
}


/*********************************************************************************************
 * MAIN
*********************************************************************************************/
void setup()
{
    pinMode(IN1, INPUT); 
    pinMode(OUT1, OUTPUT); 
    pinMode(OUT2, OUTPUT);

    pinMode(OUT3, OUTPUT);
    pinMode(OUT4, OUTPUT);
    
    Serial.begin(115200);
    delay(1000);
    Serial.println("\n");

    pinMode(led, OUTPUT);
    digitalWrite(led, HIGH);

    WiFi.persistent(false);
    WiFi.begin(ssid, password);
    Serial.print("Tentative de connexion...");

    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(100);
    }

    Serial.println("\n");
    Serial.println("Connexion etablie!");
    Serial.print("Adresse IP: ");
    Serial.println(WiFi.localIP());

    server.on("/", handleRoot);
    server.on("/lefta", handleLeftA);
    server.on("/righta", handleRightA);
    server.on("/stopa", handleStopA);
    server.on("/leftb", handleLeftB);
    server.on("/rightb", handleRightB);
    server.on("/stopb", handleStopB);   
    server.on("/readSensor", handleInput);//To get sensor value update

 
    server.onNotFound(handleNotFound);
    server.begin();

    Serial.println("Serveur web actif!");
}


void loop()
{
    server.handleClient();
    //Handle motor A
    switch(stateMotorA) {
      case 0:
        analogWrite(OUT1, 0);
        analogWrite(OUT2, 0);
        break;
      case 1:
        analogWrite(OUT1, speedMotor);
        analogWrite(OUT2, 0);
        break;
      case 2:
        analogWrite(OUT1, 0);
        analogWrite(OUT2, speedMotor);
        break;
    }
    //Handle motor B
    switch(stateMotorB) {
      case 0:
        analogWrite(OUT3, 0);
        analogWrite(OUT4, 0);
        break;
      case 1:
        analogWrite(OUT3, speedMotor);
        analogWrite(OUT4, 0);
        break;
      case 2:
        analogWrite(OUT3, 0);
        analogWrite(OUT4, speedMotor);
        break;
    }
}

Código de gestión del motor paso a paso

Para accionar un motor paso a paso, las bobinas del motor deben activarse en una secuencia precisa. Esta secuencia se describe en la función step de la librería stepper.h

/*
   Nema   | Board pin | NodeMCU GPIO |  Arduino IDE
   black        A+           0             0
   green        A-           4             4
   red          B+           15            15
   blue         B-           2             2
*/

#include <WiFi.h>
#include <WebServer.h>
#include <Arduino.h>
#include <analogWrite.h>

#include <Stepper.h>

#define IN1 34    //sensor
#define OUT1  0   //A+ - Black
#define OUT2  4   //A- - Green
#define OUT3  15  //B+ - Red
#define OUT4  2   //B- - Blue


//Stepper param
const int stepsPerRevolution = 200;
int speedMotor = 20;
Stepper myStepper(stepsPerRevolution, OUT1, OUT2, OUT3, OUT4);

//Wifi
const char *ssid = "*****";
const char *password = "********";

WebServer server(80);

const int led = 2;
int stateStepper = 0,stateStepperB = 0;
char stateStepperText[3][10] = {"STOP","CCW!","CW!"};
String sensorValue;
  
/*********************************************************************************************
 * HANDLE FUNCTIONS
*********************************************************************************************/
void handleRoot()
{
    String page = "<!DOCTYPE html>";

    page += "<html lang='fr'>";

    page += "<head>";
    page += "    <title>ESP32MotorShieldV1</title>";
    page += "    <meta http-equiv='refresh' content='60' name='viewport' content='width=device-width, initial-scale=1' charset='UTF-8' />";
    page += "    <link rel='stylesheet' href='https://www.w3schools.com/w3css/4/w3.css'>";

   page += "<script>";

   page += "function getData() {";
   page += "  var xhttp = new XMLHttpRequest();";
   page += "  xhttp.onreadystatechange = function() {";
   page += "    if (this.readyState == 4 && this.status == 200) {";
   page += "      document.getElementById('SensorValue').innerHTML =this.responseText;";
   page += "      console.log(this.responseText);";
   page += "    }";
   page += "  };";
   page += "  xhttp.open('GET', 'readSensor', true);";
   page += "  xhttp.send();";
   page += "}";

   page += "setInterval(function() {getData();}, 2000);   // Call a function repetatively with 2s interval";

   page += "</script>";
 
    page += "</head>";

    page += "<body>";
    page += "    <div class='w3-card w3-padding-small w3-jumbo w3-center' style='color:#fff; background-color:#3aaa35;'>";
    page += "        <p>Stepper State: "; page += stateStepperText[stateStepper]; + "</p>";
    page += "    </div>";

    page += "    <div class='w3-bar'>";
    page += "        <a href='/left' class='w3-bar-item w3-button w3-border w3-jumbo' style='width:33%; height:50%;'>GAUCHE</a>";
    page += "       <a href='/stop' class='w3-bar-item w3-button w3-border w3-jumbo' style='width:33%; height:50%;'>STOP</a>";
    page += "        <a href='/right' class='w3-bar-item w3-button w3-border w3-jumbo' style='width:33%; height:50%;'>DROITE</a>";
    page += "    </div>";
    
    page += "    <div class='w3-card w3-padding-small w3-jumbo w3-center' style='color:#fff; background-color:#3aaa35;'>";
    page += "        <p>Sensor value: <span id='SensorValue'>0</span></p>";
    page += "    </div>";

    page += "    <div class='w3-center w3-padding-16'>";
    page += "        <p>Server hosted on NodoMCU ESP32 - <i>Made by <a href='https://www.aranacorp.com' style='color:#3aaa35;'>AranaCorp</a></i></p>";
    page += "        ";

    page += "    </div>";

    page += "</body>";

    page += "</html>";

    server.setContentLength(page.length());
    server.send(200, "text/html", page);
}

void handleLeft(){
    stateStepper = 2;
    digitalWrite(led, HIGH);
    server.sendHeader("Location","/");
    server.send(303);
}

void handleRight(){
    stateStepper = 1;
    digitalWrite(led, LOW);
    server.sendHeader("Location","/");
    server.send(303);
}

void handleStop(){
    stateStepper = 0;
    digitalWrite(led, HIGH);
    server.sendHeader("Location","/");
    server.send(303);
}


void handleInput() {
 sensorValue = String(analogRead(IN1));
 server.send(200, "text/plain", sensorValue); //Send ADC value only to client ajax request
}

void handleNotFound(){
    digitalWrite(led, HIGH);
    stateStepper = 0;
    server.send(404, "text/plain", "404: Not found");
}


/*********************************************************************************************
 * MAIN
*********************************************************************************************/
void setup()
{
    pinMode(IN1, INPUT); 
    
    Serial.begin(115200);
    delay(1000);
    Serial.println("\n");

    pinMode(led, OUTPUT);
    digitalWrite(led, HIGH);

    myStepper.setSpeed(speedMotor);

    WiFi.persistent(false);
    WiFi.begin(ssid, password);
    Serial.print("Tentative de connexion...");

    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(100);
    }

    Serial.println("\n");
    Serial.println("Connexion etablie!");
    Serial.print("Adresse IP: ");
    Serial.println(WiFi.localIP());

    server.on("/", handleRoot);
    server.on("/left", handleLeft);
    server.on("/right", handleRight);
    server.on("/stop", handleStop);  
    server.on("/readSensor", handleInput);//To get sensor value update

 
    server.onNotFound(handleNotFound);
    server.begin();

    Serial.println("Serveur web actif!");
}


void loop()
{
    server.handleClient();
    //Handle Stepper
    switch(stateStepper) {
      case 0:
        //stop
        break;
      case 1:
        myStepper.step(1);
        break;
      case 2:
        myStepper.step(-1);
        break;
    }
}

Aplicaciones

  • Controla un robot de dos ruedas como Willy mediante una conexión WiFi o Bluetooth

Fuentes

Programación de Arduino con Visual Studio Code

Programación de Arduino con Visual Studio Code

Vamos a ver cómo programar una placa Arduino utilizando Visual Studio Code, que es una buena alternativa al IDE de Arduino. Generalmente empezamos a programar en Arduino utilizando el IDE oficial, pero puede ser interesante cambiar de editor de código para tener acceso a un mayor número de funciones. En este artículo, presentamos el uso de Visual Studio Code. Existen otros editores, como Eclipse, Netbeans, Atom.io, etc.

Presentación de Visual Studio Code

Visual Studio Code es un editor de código ligero y extensible desarrollado por Microsoft. VsCode ofrece muchas de las mismas características que el IDE de Arduino:

  • Finalización automática
  • Resaltar la sintaxis
  • Funciones de depuración
  • Programación en varios lenguajes (C++, C
  • Gestión de proyectos
  • Gestión de repositorios Git
  • Y así sucesivamente.

Es de código abierto y está disponible en las plataformas Windows, Linux y MacOS.

Instalación de Visual Studio Code

Vaya a la página de descargas de Visual Studio Code y descargue la versión para su sistema operativo.

Ejecute el instalador y siga el procedimiento

Para comunicarse con Arduino, es necesario instalar la extensión adecuada.

Haga clic en el icono “Administrar” (rueda dentada) de la parte inferior izquierda y seleccione Extensiones (o Ctrl+Mayús+X)

A continuación, busca Arduino y selecciona “Arduino for Visual Studio Code”.

Reiniciar VsCode

Configuración de VsCode para Arduino

Haga clic en el icono Gestionar y seleccione “Comando de paleta” (o Ctrl+Mayús+P)

Busca Arduino, y entonces tendrás acceso a varios comandos relacionados con Arduino.

Seleccione Arduino Board Config y luego seleccione el tipo de placa

En la parte inferior derecha, haz clic en Seleccionar puerto serie y, a continuación, selecciona el puerto serie correspondiente al Arduino (aquí, COM5).

En la parte inferior derecha, haga clic en Seleccionar programador y seleccione “AVRPISP mkII”.

Compilar el código y cargarlo

En la paleta de comandos (Ctrl+Mayús+P), busque Arduino: Ejemplos y elija Parpadeo u otro ejemplo.

A continuación, puede cargar el código haciendo clic en “Cargar” en la esquina superior derecha.

La consola indica si el código se está cargando y puedes comprobar que el código está cargado en la placa Arduino mirando el estado del LED.

Modificando un poco el código, podemos enviar texto al monitor serie.

int led = 13;

// the setup routine runs once when you press reset:
void setup() {
  Serial.begin(115200);
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  Serial.println("Led is High");
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  Serial.println("Led is Low");

  delay(1000);               // wait for a second

}

Descarga el código modificado en la placa Arduino.

Para abrir el monitor serie, pulse el icono Monitor serie situado justo a la derecha del tipo de tarjeta, en la esquina inferior derecha.

A continuación, puede seleccionar la velocidad en baudios deseada en la barra de configuración de la placa Arduino situada en la parte inferior derecha (115200).

Envío de comandos al monitor serie

Al igual que con el IDE de Arduino, puedes enviar comandos a través del puerto serie.

En la paleta de comandos de Arduino, busque “Sedn text to Serial Port”. Aparece una barra de entrada.

Puede crear un atajo de teclado para abrir este comando más fácilmente. Pulse la rueda dentada situada a la derecha del comando

 

Fuentes

https://code.visualstudio.com/
https://www.aranacorp.com/fr/programmez-avec-arduino/
https://code.visualstudio.com/Download