Created
July 19, 2019 17:46
-
-
Save bboyho/7908160949d937521cc5124cbf27a779 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// We'll use SoftwareSerial to communicate with the XBee: | |
//#include <SoftwareSerial.h> | |
//For Atmega328P's | |
// XBee's DOUT (TX) is connected to pin 2 (Arduino's Software RX) | |
// XBee's DIN (RX) is connected to pin 3 (Arduino's Software TX) | |
//SoftwareSerial XBee(2, 3); // RX, TX | |
//For Atmega2560, ATmega32U4, etc. | |
// XBee's DOUT (TX) is connected to pin 10 (Arduino's Software RX) | |
// XBee's DIN (RX) is connected to pin 11 (Arduino's Software TX) | |
//SoftwareSerial XBee(10, 11); // RX, TX | |
#define XBee Serial | |
//set analog read pins | |
const int xPin = 2;//x=A2 | |
const int yPin = 1;//y=A1 | |
const int zPin = 0;//z=A0 | |
//read the analog values from the accelerometer | |
int xRead = analogRead(xPin); | |
int yRead = analogRead(yPin); | |
int zRead = analogRead(zPin); | |
//LED Status Indicator | |
int ledR = 5;//hardware PWM | |
int ledG = 6;//hardware PWM | |
int ledB = 9; //hardware PWM | |
//Accelerate Button | |
#define ACCELERATE_BUTTON 4 // Pin used for accelerate button | |
const int ledPin1 = 13; //LED on the push button | |
boolean current_buttonACCELERATE_State; | |
void setup() { | |
// initialize the digital pins as an output for LEDs | |
pinMode(ledPin1, OUTPUT); | |
pinMode(ledR, OUTPUT); | |
pinMode(ledG, OUTPUT); | |
pinMode(ledB, OUTPUT); | |
analogReference(EXTERNAL);//reference 3.3V since using 3.3V accelerometer | |
pinMode(ACCELERATE_BUTTON, INPUT_PULLUP); // Enable pullup resistor for accelerate button D2 | |
// Set up both ports at 9600 baud. This value is most important | |
// for the XBee. Make sure the baud rate matches the config | |
// setting of your XBee. | |
XBee.begin(9600); | |
for (int i = 0; i < 3; i++) { | |
digitalWrite(ledPin1, HIGH); | |
delay(50); | |
digitalWrite(ledPin1, LOW); | |
delay(50); | |
} | |
sequenceTest();//visually initialization | |
Serial.begin(9600); | |
Serial.println("Wireless XBee Glove Controller Initialized"); | |
} | |
void loop() { | |
current_buttonACCELERATE_State = digitalRead(ACCELERATE_BUTTON); | |
//Read accelerometer axes using through the ADC | |
//Note: Check description at top for results based on Accelerometer Mode's Features | |
xRead = analogRead(xPin); | |
//Serial.print("Analog xPin (A2) = "); | |
//Serial.println(xRead); | |
yRead = analogRead(yPin); | |
//Serial.print("Analog yPin (A1) = "); | |
//Serial.println(yRead); | |
zRead = analogRead(zPin); | |
//Serial.print("Analog zPin (A2) = "); | |
//Serial.println(zRead); | |
//Serial.println(""); | |
//delay(500); //slow down the print to read, adjust as necessary for testing | |
if (current_buttonACCELERATE_State == LOW) { | |
if (xRead < 430) { | |
//Serial.print("Drive Forward, xRead = "); | |
//Serial.println(xRead); | |
Serial.println('A'); | |
XBee.write('A'); | |
greenON(); | |
} | |
else if (xRead > 590) { | |
//Serial.print("Drive Backward, xRead = "); | |
//Serial.println(xRead); | |
Serial.println('C'); | |
XBee.write('C'); | |
blueON(); | |
} | |
else if (yRead > 590) { | |
//Serial.print("Drive Forward Right, yRead = "); | |
//Serial.println(yRead); | |
Serial.println('B'); | |
XBee.write('B'); | |
cyanON(); | |
} | |
else if (yRead < 430) { | |
//Serial.print("Drive Forward Left, yRead = "); | |
//Serial.println(yRead); | |
Serial.println('D'); | |
XBee.write('D'); | |
cyanON(); | |
} | |
else { | |
//Serial.println("Coast"); | |
Serial.println('J'); | |
XBee.write('J'); | |
magentaON(); | |
} | |
} | |
else { | |
if (xRead > 670) { | |
//Serial.println("Coin Sound, xRead = "); | |
Serial.println(xRead); | |
Serial.println('X'); | |
XBee.write('X'); | |
allOFF(); | |
delay(50); | |
yellowON(); | |
delay(50); | |
} | |
if (zRead < 400) { | |
//Serial.println("Fireball Sound, zRead = "); | |
Serial.println(zRead); | |
Serial.println('Y'); | |
XBee.write('Y'); | |
redON(); | |
delay(50); | |
allOFF(); | |
delay(50); | |
redON(); | |
delay(50); | |
allOFF(); | |
delay(50); | |
} | |
else { | |
Serial.println("Stop"); | |
Serial.println('K'); | |
XBee.write('K'); | |
redON(); | |
delay(750); | |
} | |
} | |
//show that we are sending a character | |
digitalWrite(ledPin1, HIGH); | |
delay(50); | |
digitalWrite(ledPin1, LOW); | |
delay(50); | |
}//end loop | |
void allOFF() { | |
analogWrite(ledR, 0); | |
analogWrite(ledG, 0); | |
analogWrite(ledB, 0); | |
} | |
void allON() { | |
analogWrite(ledR, 150); | |
analogWrite(ledG, 255); | |
analogWrite(ledB, 255); | |
} | |
void redON() { | |
analogWrite(ledR, 255); | |
analogWrite(ledG, 0); | |
analogWrite(ledB, 0); | |
} | |
void magentaON() { | |
analogWrite(ledR, 150); | |
analogWrite(ledG, 0); | |
analogWrite(ledB, 255); | |
} | |
void blueON() { | |
analogWrite(ledR, 0); | |
analogWrite(ledG, 0); | |
analogWrite(ledB, 255); | |
} | |
void cyanON() { | |
analogWrite(ledR, 0); | |
analogWrite(ledG, 255); | |
analogWrite(ledB, 255); | |
} | |
void greenON() { | |
analogWrite(ledR, 0); | |
analogWrite(ledG, 255); | |
analogWrite(ledB, 0); | |
} | |
void yellowON() { | |
analogWrite(ledR, 150); | |
analogWrite(ledG, 255); | |
analogWrite(ledB, 0); | |
} | |
void sequenceTest() { | |
redON(); | |
delay(50); | |
magentaON(); | |
delay(50); | |
blueON(); | |
delay(50); | |
cyanON(); | |
delay(50); | |
greenON(); | |
delay(50); | |
yellowON(); | |
delay(50); | |
allON(); | |
delay(50); | |
allOFF(); | |
delay(50); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment