MicroTrac Controller v17.10/Code: Difference between revisions
Jump to navigation
Jump to search
(→Code) |
|||
Line 138: | Line 138: | ||
} | } | ||
if (RXbyte == "B") { | if (RXbyte == "B") { | ||
digitalWrite( | digitalWrite(40, HIGH); | ||
} | } | ||
if (RXbyte == "b") { | if (RXbyte == "b") { | ||
digitalWrite( | digitalWrite(40, LOW); | ||
} | } | ||
if (RXbyte == "C") { | if (RXbyte == "C") { | ||
digitalWrite( | digitalWrite(42, HIGH); | ||
} | } | ||
if (RXbyte == "c") { | if (RXbyte == "c") { | ||
digitalWrite( | digitalWrite(42, LOW); | ||
} | } | ||
if (RXbyte == "D") { | if (RXbyte == "D") { | ||
digitalWrite( | digitalWrite(44, HIGH); | ||
} | } | ||
if (RXbyte == "d") { | if (RXbyte == "d") { | ||
digitalWrite( | digitalWrite(44, LOW); | ||
} | } | ||
if (RXbyte == "E") { | if (RXbyte == "E") { | ||
digitalWrite( | digitalWrite(46, HIGH); | ||
} | } | ||
if (RXbyte == "e") { | if (RXbyte == "e") { | ||
digitalWrite( | digitalWrite(46, LOW); | ||
} | } | ||
if (RXbyte == "F") { | if (RXbyte == "F") { | ||
digitalWrite( | digitalWrite(48, HIGH); | ||
} | } | ||
if (RXbyte == "f") { | if (RXbyte == "f") { | ||
digitalWrite( | digitalWrite(48, LOW); | ||
} | } | ||
if (RXbyte == "G") { | if (RXbyte == "G") { | ||
digitalWrite( | digitalWrite(50, HIGH); | ||
} | } | ||
if (RXbyte == "g") { | if (RXbyte == "g") { | ||
digitalWrite( | digitalWrite(50, LOW); | ||
} | } | ||
if (RXbyte == "H") { | if (RXbyte == "H") { | ||
digitalWrite( | digitalWrite(52, HIGH); | ||
} | } | ||
if (RXbyte == "h") { | if (RXbyte == "h") { | ||
digitalWrite( | digitalWrite(52, LOW); | ||
} | } | ||
} | } | ||
</nowiki> | </nowiki> |
Revision as of 18:54, 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); 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
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){ RXbyte = 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); } }