/* * ColourCubeFaceExplore * Copyleft: Srikanth Narayan * Date: 19 Sep 2007 */ // Analog pin settings int aIn = 0; // Potentiometers connected to analog pins 0, 1, and 2 int bIn = 1; // (Connect power to 5V and ground to analog ground) int cIn = 2; // Digital pin settings int aOut = 9; // LEDs connected to digital pins 9, 10 and 11 int bOut = 10; // (Connect cathodes to digital ground) int cOut = 11; char serInString[100]; // Values int aVal = 0; // Variables to store the input from the potentiometers int bVal = 0; int cVal = 0; boolean xyPlane = false; boolean xzPlane = false; boolean yzPlane = false; void setup() { pinMode(aOut, OUTPUT); // sets the digital pins as output pinMode(bOut, OUTPUT); pinMode(cOut, OUTPUT); Serial.begin(9600); // Open serial communication for reporting } void loop() { readSerialString(serInString, 100); processCommand(serInString, 100); if(yzPlane == true) { bVal = analogRead(aIn) / 4; cVal = analogRead(aIn) / 4; analogWrite(aOut, aVal); analogWrite(bOut, bVal); analogWrite(cOut, cVal); } if(xzPlane == true) { aVal = analogRead(bIn) / 4; cVal = analogRead(bIn) / 4; analogWrite(aOut, aVal); analogWrite(bOut, bVal); analogWrite(cOut, cVal); } if(xyPlane == true) { aVal = analogRead(cIn) / 4; bVal = analogRead(cIn) / 4; analogWrite(aOut, aVal); analogWrite(bOut, bVal); analogWrite(cOut, cVal); } delay(100); } boolean stringsEqual(char *string1, char *string2, int numCharacters) { if (strncmp(string1, string2, numCharacters) == 0) { return true; } else { return false; } } void processCommand(char *strArray, int num) { if(stringsEqual(strArray, "xmin", 4)) { Serial.print("xmin"); aVal = 0; yzPlane = true; xyPlane = xzPlane = false; } if(stringsEqual(strArray, "xmax", 4)) { Serial.print("xmax"); aVal = 255; yzPlane = true; xyPlane = xzPlane = false; } if(stringsEqual(strArray, "ymin", 4)) { Serial.print("ymin"); bVal = 0; xzPlane = true; yzPlane = xyPlane = false; } if(stringsEqual(strArray, "ymax", 4)) { Serial.print("ymax"); bVal = 255; xzPlane = true; yzPlane = xyPlane = false; } if(stringsEqual(strArray, "zmin", 4)) { Serial.print("zmin"); cVal = 0; xyPlane = true; yzPlane = xzPlane = false; } if(stringsEqual(strArray, "zmax", 4)) { Serial.print("zmax"); cVal = 255; xyPlane = true; yzPlane = xzPlane = false; } } //read a string from the serial and store it in an array //you must supply the array variable void readSerialString (char *strArray, int maxLength) { Serial.println("here"); int i = 0; if(!Serial.available()) { return; } while (Serial.available() && i < maxLength) { strArray[i] = Serial.read(); i++; } }