In this video I show you how to control multiple VESCs independently using an Arduino Uno.
The project shown in the video.
Sample Code:
#include <VescUart.h>
#include <SoftwareSerial.h>
/** Initiate vesc1Uart class */
VescUart vesc1;
VescUart vesc2;
/** Initiate SoftwareSerial class */
SoftwareSerial vesc1Serial(12, 13); //RX, TX
float current = -0.5; /** The current in amps */
int counter = 0;
void setup() 
{
  /** Setup Serial port to display data */
  Serial.begin(9600);
  /** Setup SoftwareSerial port */
  vesc1Serial.begin(19200);
  Serial1.begin(19200);
  /** Define which ports to use as UART */
  vesc1.setSerialPort(&vesc1Serial);
  vesc2.setSerialPort(&Serial1);
}
void loop() 
{
  /** Call the function getvesc1Values() to acquire data from vesc1 */
  if ( vesc1.getVescValues() ) 
  {
    Serial.println("VESC 1: ");
    Serial.println(vesc1.data.rpm);
    Serial.println(vesc1.data.inpVoltage);
    Serial.println(vesc1.data.ampHours);
    Serial.println(vesc1.data.tachometerAbs);
  }
  else
  {
    Serial.println("Failed to get data from VESC 1!");
  }
  if ( vesc2.getVescValues() ) 
  {
    Serial.println("VESC 2: ");
    Serial.println(vesc2.data.rpm);
    Serial.println(vesc2.data.inpVoltage);
    Serial.println(vesc2.data.ampHours);
    Serial.println(vesc2.data.tachometerAbs);
  }
  else
  {
    Serial.println("Failed to get data from VESC 2!");
  }
  if(counter < 20 * 10) 
  {
    vesc1.setCurrent(current);
    vesc2.setCurrent(current);
    counter++;
    Serial.print("Counter: ");
    Serial.println(counter);
  }
  else
  {
    vesc1.setCurrent(0);
    vesc2.setCurrent(0);
  }
  delay(50);
}