Control BOE Shield Arlo with the Terminal

Control BOE Shield Arlo with the Terminal

You can also communicate with the Arlo through the Terminal.  The example shown here uses rst to reset the Arlo’s encoder counts to 0.  It’s the equivalent of Arlo.clearCounts().  Next, go 32 32 sets the motor power of both motors to 32/127.  It’s the equivalent of Arlo.writeMotorPower(32, 32).  After some time went by, go 0 0 was typed in to stop the wheels, then dist, which got a reply of 344, 348.  Those are encoder measurements of the number of 144ths of a revolution each wheel turned.  These values can also be obtained in a sketch with longVariable = Arlo.readCountsLeft() and longVariable = Arlo.readCountsRight()

  • Make sure your Terminal’s is set to send carriage return values (when you press the Enter Key) and is communicating at the standard 9600 baud rate.
  • Put the Arlo up on blocks so that its wheels can spin freely without touching your work surface.
  • Set Main, Motors, and BOE Shield power to on.
  • Upload Arlo-Terminal-Communication.ino.
  • Click the text input pane in your Terminal.  It’s just above the pane that displays messages from the Arduino.
  • Type rst, and then click Send.
  • Type go 32 32, and then click Send.
  • Let a few seconds pass.
  • Type go 0 0, and then click Send.
  • Type Dist, and click Send.

NOTE: The reply values to your DIST command will depend on how long you let the wheels run.

/*
  Arlo-Terminal-Communication
 
  IMPORTANT: Set Line Ending to Carriage return in the terminal.
*/

#include <ArloRobot.h>                        // Include Arlo library
#include <SoftwareSerial.h>                   // Include SoftwareSerial library

// Arlo and serial objects required
ArloRobot Arlo;                               // Arlo object
SoftwareSerial ArloSerial(12, 13);            // Serial in I/O 12, out I/O 13

char str[64];

void setup()                                  // Setup function
{
  tone(4, 3000, 2000);                        // Piezospeaker beep
  Serial.begin(9600);                         // Start terminal serial port
 
  ArloSerial.begin(19200);                    // Start DHB-10 serial com
  Arlo.begin(ArloSerial);                     // Pass to Arlo object
 
  Serial.println("Arlo Terminal");            // Display heading
}

void loop()                                   // Main loop
{
  memset(str, 0, 64);                         // Clear the buffer
  Serial.print("> ");                         // Display prompt
  while(Serial.available() == 0);             // Wait for terminal input
  Serial.readBytesUntil('\r', str, 64);       // Read until carriage return
  Serial.println(str);                        // Display what was typed
  ArloSerial.print(str);                      // Send to Arlo's DHB-10
  ArloSerial.write('\r');                     // Append with a carriage return
  memset(str, 0, 64);                         // Clear the buffer again
  ArloSerial.readBytesUntil('\r', str, 64);   // Get Arlo's reply
  Serial.println(str);                        // Display Arlo's reply
}