MicroTrac Controller v17.10/Code: Difference between revisions
Jump to navigation
Jump to search
| Line 213: | Line 213: | ||
while (Serial.available()>0){ | while (Serial.available()>0){ | ||
RXbyte = char(Serial.read()); | char RXbyte = char(Serial.read()); | ||
if (RXbyte == | if (RXbyte == 'A') { | ||
digitalWrite(38, HIGH); | digitalWrite(38, HIGH); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'a') { | ||
digitalWrite(38, LOW); | digitalWrite(38, LOW); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'B') { | ||
digitalWrite(40, HIGH); | digitalWrite(40, HIGH); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'b') { | ||
digitalWrite(40, LOW); | digitalWrite(40, LOW); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'C') { | ||
digitalWrite(42, HIGH); | digitalWrite(42, HIGH); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'c') { | ||
digitalWrite(42, LOW); | digitalWrite(42, LOW); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'D') { | ||
digitalWrite(44, HIGH); | digitalWrite(44, HIGH); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'd') { | ||
digitalWrite(44, LOW); | digitalWrite(44, LOW); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'E') { | ||
digitalWrite(46, HIGH); | digitalWrite(46, HIGH); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'e') { | ||
digitalWrite(46, LOW); | digitalWrite(46, LOW); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'F') { | ||
digitalWrite(48, HIGH); | digitalWrite(48, HIGH); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'f') { | ||
digitalWrite(48, LOW); | digitalWrite(48, LOW); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'G') { | ||
digitalWrite(50, HIGH); | digitalWrite(50, HIGH); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'g') { | ||
digitalWrite(50, LOW); | digitalWrite(50, LOW); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'H') { | ||
digitalWrite(52, HIGH); | digitalWrite(52, HIGH); | ||
} | } | ||
if (RXbyte == | if (RXbyte == 'h') { | ||
digitalWrite(52, LOW); | digitalWrite(52, LOW); | ||
} | } | ||
Revision as of 20:39, 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
- 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); //LF
pinMode(41,INPUT_PULLUP); //LB
pinMode(43,INPUT_PULLUP); //RF
pinMode(45,INPUT_PULLUP); //RB
pinMode(47,INPUT_PULLUP); //AU
pinMode(49,INPUT_PULLUP); //AD
pinMode(51,INPUT_PULLUP); //BU
pinMode(53,INPUT_PULLUP); //BD
int sLF = digitalRead(39); //left track forward
int sLB = digitalRead(41); //left track backward
int sRF = digitalRead(43); //right track forward
int sRB = digitalRead(45); //right track backward
int sAU = digitalRead(47); //arms up
int sAD = digitalRead(49); //arms down
int sBU = digitalRead(51); //bucket up
int sBD = digitalRead(53); //bucket down
//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);
}
int sLB = digitalRead(41);
if (sLB == LOW) {
Serial.print('B')
} else {
Serial.print('b')
}
if (sLB == LOW) {
digitalWrite(40, HIGH);
} else {
digitalWrite(40, LOW);
}
int sRF = digitalRead(43);
if (sRF == LOW) {
Serial.print('C')
} else {
Serial.print('c')
}
if (sRF == LOW) {
digitalWrite(42, HIGH);
} else {
digitalWrite(42, LOW);
}
int sRB = digitalRead(45);
if (sRB == LOW) {
Serial.print('D')
} else {
Serial.print('d')
}
if (sRB == LOW) {
digitalWrite(44, HIGH);
} else {
digitalWrite(44, LOW);
}
int sAU = digitalRead(47);
if (sAU == LOW) {
Serial.print('E')
} else {
Serial.print('e')
}
if (sAU == LOW) {
digitalWrite(46, HIGH);
} else {
digitalWrite(46, LOW);
}
int sAD = digitalRead(49);
if (sAD == LOW) {
Serial.print('F')
} else {
Serial.print('f')
}
if (sAD == LOW) {
digitalWrite(48, HIGH);
} else {
digitalWrite(48, LOW);
}
int sBU = digitalRead(51);
if (sBU == LOW) {
Serial.print('G')
} else {
Serial.print('g')
}
if (sBU == LOW) {
digitalWrite(50, HIGH);
} else {
digitalWrite(50, LOW);
}
int sBD = digitalRead(53);
if (sBD == LOW) {
Serial.print('H')
} else {
Serial.print('h')
}
if (sBD == LOW) {
digitalWrite(52, HIGH);
} else {
digitalWrite(52, LOW);
}
Onboard Box
void setup() {
//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() {
while (Serial.available()>0){
char RXbyte = char(Serial.read());
if (RXbyte == 'A') {
digitalWrite(38, HIGH);
}
if (RXbyte == 'a') {
digitalWrite(38, LOW);
}
if (RXbyte == 'B') {
digitalWrite(40, HIGH);
}
if (RXbyte == 'b') {
digitalWrite(40, LOW);
}
if (RXbyte == 'C') {
digitalWrite(42, HIGH);
}
if (RXbyte == 'c') {
digitalWrite(42, LOW);
}
if (RXbyte == 'D') {
digitalWrite(44, HIGH);
}
if (RXbyte == 'd') {
digitalWrite(44, LOW);
}
if (RXbyte == 'E') {
digitalWrite(46, HIGH);
}
if (RXbyte == 'e') {
digitalWrite(46, LOW);
}
if (RXbyte == 'F') {
digitalWrite(48, HIGH);
}
if (RXbyte == 'f') {
digitalWrite(48, LOW);
}
if (RXbyte == 'G') {
digitalWrite(50, HIGH);
}
if (RXbyte == 'g') {
digitalWrite(50, LOW);
}
if (RXbyte == 'H') {
digitalWrite(52, HIGH);
}
if (RXbyte == 'h') {
digitalWrite(52, LOW);
}
}