MicroTrac Controller v17.10/Code: Difference between revisions
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(39,INPUT_PULLUP); //LF | ||
pinMode(41,INPUT_PULLUP); | pinMode(41,INPUT_PULLUP); //LB | ||
pinMode(43,INPUT_PULLUP); | pinMode(43,INPUT_PULLUP); //RF | ||
pinMode(45,INPUT_PULLUP); | pinMode(45,INPUT_PULLUP); //RB | ||
pinMode(47,INPUT_PULLUP); | pinMode(47,INPUT_PULLUP); //AU | ||
pinMode(49,INPUT_PULLUP); | pinMode(49,INPUT_PULLUP); //AD | ||
pinMode(51,INPUT_PULLUP); | pinMode(51,INPUT_PULLUP); //BU | ||
pinMode(53,INPUT_PULLUP); | pinMode(53,INPUT_PULLUP); //BD | ||
int sLF = digitalRead(39); | int sLF = digitalRead(39); //left track forward | ||
int sLB = digitalRead(41); | int sLB = digitalRead(41); //left track backward | ||
int sRF = digitalRead(43); | int sRF = digitalRead(43); //right track forward | ||
int sRB = digitalRead(45); | int sRB = digitalRead(45); //right track backward | ||
int sAU = digitalRead(47); | int sAU = digitalRead(47); //arms up | ||
int sAD = digitalRead(49); | int sAD = digitalRead(49); //arms down | ||
int sBU = digitalRead(51); | int sBU = digitalRead(51); //bucket up | ||
int sBD = digitalRead(53); | int sBD = digitalRead(53); //bucket down | ||
//SET PINS AS OUTPUT TO RELAY MODULE | //SET PINS AS OUTPUT TO RELAY MODULE | ||
| Line 88: | Line 88: | ||
void loop() { | 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 sLF = digitalRead(39); | |||
if (sLF == LOW) { | |||
Serial.print('A') | |||
} else { | |||
Serial.print('a') | |||
} | |||
if (sLF == LOW) { | |||
digitalWrite(38, HIGH); | |||
} else { | |||
digitalWrite(38, LOW); | |||
} | |||
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 sLF = digitalRead(39); | |||
if (sLF == LOW) { | |||
Serial.print('A') | |||
} else { | |||
Serial.print('a') | |||
} | |||
if (sLF == LOW) { | |||
digitalWrite(38, HIGH); | |||
} else { | |||
digitalWrite(38, LOW); | |||
} | |||
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 sLF = digitalRead(39); | |||
if (sLF == LOW) { | |||
Serial.print('A') | |||
} else { | |||
Serial.print('a') | |||
} | |||
if (sLF == LOW) { | |||
digitalWrite(38, HIGH); | |||
} else { | |||
digitalWrite(38, LOW); | |||
} | |||
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 sLF = digitalRead(39); | int sLF = digitalRead(39); | ||
Revision as of 19:07, 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 sLF = digitalRead(39);
if (sLF == LOW) {
Serial.print('A')
} else {
Serial.print('a')
}
if (sLF == LOW) {
digitalWrite(38, HIGH);
} else {
digitalWrite(38, LOW);
}
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 sLF = digitalRead(39);
if (sLF == LOW) {
Serial.print('A')
} else {
Serial.print('a')
}
if (sLF == LOW) {
digitalWrite(38, HIGH);
} else {
digitalWrite(38, LOW);
}
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 sLF = digitalRead(39);
if (sLF == LOW) {
Serial.print('A')
} else {
Serial.print('a')
}
if (sLF == LOW) {
digitalWrite(38, HIGH);
} else {
digitalWrite(38, LOW);
}
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 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);
}
}