MicroTrac Controller v17.10/Code: Difference between revisions

From Open Source Ecology
Jump to navigation Jump to search
Line 54: Line 54:


//SET PINS AS INPUT FROM TOGGLE SWITCHES
//SET PINS AS INPUT FROM TOGGLE SWITCHES
pinMode(39,INPUT_PULLUP);
pinMode(41,INPUT_PULLUP);
pinMode(43,INPUT_PULLUP);
pinMode(45,INPUT_PULLUP);
pinMode(47,INPUT_PULLUP);
pinMode(49,INPUT_PULLUP);
pinMode(51,INPUT_PULLUP);
pinMode(53,INPUT_PULLUP);


int sLF = digitalRead(39);
int sLB = digitalRead(41);
int sRF = digitalRead(43);
int sRB = digitalRead(45);
int sAU = digitalRead(47);
int sAD = digitalRead(49);
int sBU = digitalRead(51);
int sBD = digitalRead(53);


//SET PINS AS OUTPUT TO RELAY MODULE
//SET PINS AS OUTPUT TO RELAY MODULE


 
pinMode(38, OUTPUT);
//CREATE STRING
pinMode(40, OUTPUT);
String string_currentstate ="abcdefgi";
pinMode(42, OUTPUT);
pinMode(44, OUTPUT);
pinMode(46, OUTPUT);
pinMode(48, OUTPUT);
pinMode(50, OUTPUT);
pinMode(52, OUTPUT);


//START COMMUNICATING WITH XBEE
//START COMMUNICATING WITH XBEE
Line 68: Line 89:
void loop() {
void loop() {


if pin
int sLF = digitalRead(39);
string_currentstate +="a";
if (sLF == LOW) {
 
    Serial.print('A')
 
  } else {
 
    Serial.print('a')
print string_currentstate;
  }
 
if (sLF == LOW) {
 
    digitalWrite(38, HIGH);
string_currentstate = "";
  } else {
    digitalWrite(38, LOW);
  }


  </nowiki>
  </nowiki>

Revision as of 18:43, 29 October 2017

Goals

  • Establish serial communication over xbee radio
  • Transmit commands from the "remote controller" box to "onboard controller" box.
  • Attempt to run identical arduino control software on both boxes.
    • Will run in onboard mode if jumper set between defined pins.
  • When in onboard mode, transmit GPS location.
  • Boxes will ping each other and will shut down if connection lost.
  • Store radio information in EEPROM. Update on startup.
    • Create a program to define the EEPROM
  • Operate relay switches when "HAND" switch is on
  • Test different turning methods.
    • stop and turn
    • fether on/off to turn on a curve
      • is this too jerky
    • determine turn radius at specified duty cycles

Terms, Pins and Variables

Each Solenoid and corresponding relay switch will be defined by a single alphabet letter.

A - Left Track Forward
B - Left Track Backward
C - Right Track Forward
D - Right Track Backward
E - Arms Up
F - Arms Down
G - Bucket Up
H - Bucket Down


AT Commands

xbee AT Command PDF

ATIDXXXX - set radio network ID
ATWR - save settings to long term memory

Code Theory

When a switch is thrown, its letter followed by a 1 or 0 will be transmitted over serial.

example: "E1" will engage the solenoid to raise the arms. "E0" will turn off the solenoid and will stop raising the arms.
While "F1" will lower the arms and "F0" will stop lowering the arms.

If vehicle is stopped, gather and transmit position and orientation data. otherwise briefly stop vehicle every X minutes.

Code

Controller Box


void setup() {

//SET PINS AS INPUT FROM TOGGLE SWITCHES
pinMode(39,INPUT_PULLUP);
pinMode(41,INPUT_PULLUP);
pinMode(43,INPUT_PULLUP);
pinMode(45,INPUT_PULLUP);
pinMode(47,INPUT_PULLUP);
pinMode(49,INPUT_PULLUP);
pinMode(51,INPUT_PULLUP);
pinMode(53,INPUT_PULLUP);

int sLF = digitalRead(39);
int sLB = digitalRead(41);
int sRF = digitalRead(43);
int sRB = digitalRead(45);
int sAU = digitalRead(47);
int sAD = digitalRead(49);
int sBU = digitalRead(51);
int sBD = digitalRead(53);

//SET PINS AS OUTPUT TO RELAY MODULE

pinMode(38, OUTPUT);
pinMode(40, OUTPUT);
pinMode(42, OUTPUT);
pinMode(44, OUTPUT);
pinMode(46, OUTPUT);
pinMode(48, OUTPUT);
pinMode(50, OUTPUT);
pinMode(52, OUTPUT);

//START COMMUNICATING WITH XBEE
Serial.begin(9600);
}

void loop() {

int sLF = digitalRead(39);
if (sLF == LOW) {
    Serial.print('A')
  } else {
    Serial.print('a')
  }
if (sLF == LOW) {
    digitalWrite(38, HIGH);
  } else {
    digitalWrite(38, LOW);
  }

 

Onboard Box