April 5, 2008
WikiXbee Sender Code
#wiki
Xbee Sender Code
// xigbee sender.
int sickBtn = 2;
int calmBtn = 3;
int sadBtn = 13;
int angryBtn = 12;
int energeticBtn = 5;
int happyBtn = 6;
int lovedBtn = 7;
int tiredBtn = 8;
// flags that checks if our button is called previously.
byte sickCalled, calmCalled, sadCalled, angryCalled;
byte energeticCalled, happyCalled, lovedCalled, tiredCalled;
int DEBUG = 0;
char switchState = 0;
// PWM pins
int redPin = 9; // RED LED
int greenPin = 10; // GREEN LED
int bluePin = 11; // BLUE LED
int redVal, greenVal, blueVal;
void setup() {
Serial.begin(2400);
//set digital pins to input.
pinMode(sickBtn, INPUT);
pinMode(calmBtn, INPUT);
pinMode(sadBtn, INPUT);
pinMode(angryBtn, INPUT);
pinMode(energeticBtn, INPUT);
pinMode(happyBtn, INPUT);
pinMode(lovedBtn, INPUT);
pinMode(tiredBtn, INPUT);
// Tricolor legs at PWM pins.
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
setDestination();
}
void loop() {
// check if there is anything coming from the serial
if(Serial.available() > 0 ) {
switchState = Serial.read();
}
else {
switchState = checkPressed();
}
if((switchState == '1') && (sickCalled == 0)) {
goSick();
}
else if ((switchState == '2') && (calmCalled == 0)) {
goCalm();
}
else if ((switchState == '3') && (sadCalled == 0)) {
//Serial.println("sadCalled");
goSad();
}
else if ((switchState == '4') && (angryCalled == 0)) {
//Serial.println("angryCalled");
goAngry();
}
else if ((switchState == '5') && (energeticCalled == 0)) {
goEnergetic();
}
else if ((switchState == '6') && (happyCalled == 0)) {
goHappy();
}
else if ((switchState == '7') && (lovedCalled == 0)) {
goLoved();
}
else if ((switchState == '8') && (tiredCalled == 0)) {
goTired();
}
else if((switchState == 1) && (sickCalled == 0)) {
Serial.print(switchState, DEC);
goSick();
}
else if ((switchState == 2) && (calmCalled == 0)) {
Serial.print(switchState, DEC);
goCalm();
}
else if ((switchState == 3) && (sadCalled == 0)) {
Serial.print(switchState, DEC);
goSad();
}
else if ((switchState == 4) && (angryCalled == 0)) {
Serial.print(switchState, DEC);
goAngry();
}
else if ((switchState == 5) && (energeticCalled == 0)) {
Serial.print(switchState, DEC);
goEnergetic();
}
else if ((switchState == 6) && (happyCalled == 0)) {
Serial.print(switchState, DEC);
goHappy();
}
else if ((switchState == 7) && (lovedCalled == 0)) {
Serial.print(switchState, DEC);
goLoved();
}
else if ((switchState == 8) && (tiredCalled == 0)) {
Serial.print(switchState, DEC);
goTired();
}
}
void goSick() {
sickCalled = 1;
calmCalled = 0;
sadCalled = 0;
angryCalled = 0;
energeticCalled = 0;
happyCalled = 0;
lovedCalled = 0;
tiredCalled = 0;
int redDest = 194;
int greenDest = 254;
int blueDest = 0;
goZero(redDest, greenDest, blueDest);
}
void goCalm() {
sickCalled = 0;
calmCalled = 1;
sadCalled = 0;
angryCalled = 0;
energeticCalled = 0;
happyCalled = 0;
lovedCalled = 0;
tiredCalled = 0;
int redDest = 20;
int greenDest = 254;
int blueDest = 254;
goZero(redDest, greenDest, blueDest);
}
void goSad() {
sickCalled = 0;
calmCalled = 0;
sadCalled = 1;
angryCalled = 0;
energeticCalled = 0;
happyCalled = 0;
lovedCalled = 0;
tiredCalled = 0;
int redDest = 28;
int greenDest = 0;
int blueDest = 54;
goZero(redDest, greenDest, blueDest);
}
void goAngry() {
sickCalled = 0;
calmCalled = 0;
sadCalled = 0;
angryCalled = 1;
energeticCalled = 0;
happyCalled = 0;
lovedCalled = 0;
tiredCalled = 0;
int redDest = 232;
int greenDest = 0;
int blueDest = 0;
goZero(redDest, greenDest, blueDest);
}
void goEnergetic() {
sickCalled = 0;
calmCalled = 0;
sadCalled = 0;
angryCalled = 0;
energeticCalled = 1;
happyCalled = 0;
lovedCalled = 0;
tiredCalled = 0;
int redDest = 254;
int greenDest = 92;
int blueDest = 0;
goZero(redDest, greenDest, blueDest);
}
void goHappy() {
sickCalled = 0;
calmCalled = 0;
sadCalled = 0;
angryCalled = 0;
energeticCalled = 0;
happyCalled = 1;
lovedCalled = 0;
tiredCalled = 0;
int redDest = 254;
int greenDest = 254;
int blueDest = 32;
goZero(redDest, greenDest, blueDest);
}
void goLoved() {
sickCalled = 0;
calmCalled = 0;
sadCalled = 0;
angryCalled = 0;
energeticCalled = 0;
happyCalled = 0;
lovedCalled = 1;
tiredCalled = 0;
int redDest = 254;
int greenDest = 8;
int blueDest = 88;
goZero(redDest, greenDest, blueDest);
}
void goTired() {
sickCalled = 0;
calmCalled = 0;
sadCalled = 0;
angryCalled = 0;
energeticCalled = 0;
happyCalled = 0;
lovedCalled = 0;
tiredCalled = 1;
int redDest = 2;
int greenDest = 2;
int blueDest = 56;
goZero(redDest, greenDest, blueDest);
}
void goZero(int destR, int destG, int destB) {
int counter = 4;
while((redVal + greenVal + blueVal) > counter + 1) {
if(redVal <= counter) {
redVal = 1;
}
else {
redVal -= counter;
}
if(greenVal <= counter) {
greenVal = 1;
}
else {
greenVal -= counter;
}
if(blueVal <= counter) {
blueVal = 1;
}
else {
blueVal -= counter;
}
analogWrite(redPin, redVal);
analogWrite(greenPin, greenVal);
analogWrite(bluePin, blueVal);
}
goCurrent(destR, destG, destB);
// if you go negatives with values they reverse like in a color wheel and go white.
}
void goCurrent(int destR, int destG, int destB) {
int counter = 2;
while(redVal+greenVal+blueVal < destR+destG+destB ) {
if(redVal >= destR) {
redVal = destR;
}
else {
redVal += counter;
}
if(greenVal >= destG) {
greenVal = destG;
}
else {
greenVal += counter;
}
if(blueVal >= destB) {
blueVal = destB;
}
else {
blueVal += counter;
}
analogWrite(redPin, redVal);
analogWrite(greenPin, greenVal);
analogWrite(bluePin, blueVal);
}
}
byte checkPressed () {
byte sick = digitalRead(sickBtn );
byte calm = digitalRead(calmBtn );
byte sad = digitalRead(sadBtn );
byte angry = digitalRead(angryBtn );
byte energetic = digitalRead(energeticBtn);
byte happy = digitalRead(happyBtn );
byte loved = digitalRead(lovedBtn );
byte tired = digitalRead(tiredBtn );
if(sick == 1) { return 1; }
if(calm == 1) { return 2; }
if(sad == 1) { return 3; }
if(angry == 1) { return 4; }
if(energetic == 1) { return 5; }
if(happy == 1) { return 6; }
if(loved == 1) { return 7; }
if(tired == 1) { return 8; }
else {
}
}
void setDestination() {
Serial.print('X');
delay(1100);
Serial.print('+'); //debugging hello
Serial.print('+');
Serial.print('+');
char thisByte = 0;
while (thisByte != '\r') {
thisByte = Serial.read();
}
Serial.print('A');
Serial.print('T');
Serial.print('I');
Serial.print('D');
Serial.print('2');
Serial.print('5');
Serial.print('8');
Serial.print('2');
Serial.print(',');
Serial.print('M');
Serial.print('Y');
Serial.print('2');
Serial.print(',');
Serial.print('D');
Serial.print('H');
Serial.print('0');
Serial.print(',');
Serial.print('D');
Serial.print('L');
Serial.print('1');
Serial.print(',');
Serial.print('C');
Serial.print('N');
while (thisByte != '\r') {
thisByte = Serial.read();
Serial.print(thisByte);
}
Serial.print('\r');
Serial.print('D');
Serial.print('O');
Serial.print('N');
Serial.print('E');
}
Continue Reading
Back to Archive