const unsigned int Z_AXIS_PIN = 2; const unsigned int Y_AXIS_PIN = 1; const unsigned int X_AXIS_PIN = 0; const unsigned int BAUD_RATE = 9600; int XsensorValue = 0; // the sensor value int XsensorCal = 0; // minimum sensor value int ZsensorValue = 0; // the sensor value int ZsensorCal = 0; // minimum sensor value // example use: // set_pattern("10010010"); void set_pattern(char* pattern) { for (int i = 0; i < 8 && pattern[i] != 0; ++i) if (pattern[i] == '1') digitalWrite(2+i, HIGH); else digitalWrite(2+i, LOW); } void setup () { pinMode (10, OUTPUT); pinMode (9, OUTPUT); pinMode (8, OUTPUT); pinMode (7, OUTPUT); pinMode (6, OUTPUT); pinMode (5, OUTPUT); pinMode (4, OUTPUT); pinMode (3, OUTPUT); pinMode (2, OUTPUT); Serial.begin(BAUD_RATE); while (millis() < 2000) { ZsensorValue = analogRead(Z_AXIS_PIN); // record the maximum sensor value if (ZsensorValue > ZsensorCal) { ZsensorCal = ZsensorValue; }} while (millis() < 4000) { XsensorValue = analogRead(X_AXIS_PIN); // record the maximum sensor value if (XsensorValue > XsensorCal) { XsensorCal = XsensorValue; } } digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); digitalWrite(10, HIGH); delay(1000); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); } void loop() { Serial.print(analogRead(X_AXIS_PIN)); Serial.print(" "); Serial.print(analogRead(Y_AXIS_PIN)); Serial.print(" "); Serial.println(analogRead(Z_AXIS_PIN)); delay(100); int x = analogRead(X_AXIS_PIN); if (XsensorCal+40 > x && x > XsensorCal-40) {digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(6, LOW); digitalWrite(8, LOW); digitalWrite(9, LOW); } int z = analogRead(Z_AXIS_PIN); if (ZsensorCal+20 > z && z > ZsensorCal-20) {digitalWrite(5, LOW); digitalWrite(7, LOW); digitalWrite(10, LOW);} // Forward if (ZsensorCal+20 >= z && z > ZsensorCal+40) // C1 lights {digitalWrite(5, LOW); digitalWrite(7, HIGH); digitalWrite(10, LOW);} else if (ZsensorCal+40 >=z && z > ZsensorCal+60) // C1 & C2 {digitalWrite(5, LOW); digitalWrite(7, HIGH); digitalWrite(10, HIGH);} else if (z > ZsensorCal+60) // C1 & C2 & C3 {digitalWrite(5, HIGH); digitalWrite(7, HIGH); digitalWrite(10, HIGH);} // Back if (ZsensorCal-20 >= z && z > ZsensorCal-40) // C3 lights {digitalWrite(5, HIGH); digitalWrite(7, LOW); digitalWrite(10, LOW);} else if (ZsensorCal-40 >= z && z > ZsensorCal-60) // C3 & C2 {digitalWrite(5, HIGH); digitalWrite(7, LOW); digitalWrite(10, HIGH);} else if (ZsensorCal-60 > z) // C1 & C2 & C3 { digitalWrite(5, HIGH); digitalWrite(7, HIGH); digitalWrite(10, HIGH);} // Right if (XsensorCal-20 >= x && x >= XsensorCal-40) // R1 lights { digitalWrite(6, HIGH); digitalWrite(8, LOW); digitalWrite(9, LOW); } else if (XsensorCal-40 > x && x >= XsensorCal-60) // R1 & R2 {digitalWrite(6, HIGH); digitalWrite(8, LOW); digitalWrite(9, HIGH); } else if (XsensorCal-60 > x) // R1 & R2 & R3 {digitalWrite(6, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); } // Left if (XsensorCal+40 > x && x > XsensorCal+20) // L1 lights { digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW);} else if (XsensorCal+60> x && x > XsensorCal+40) // L1 & L2 { digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, HIGH);} else if (x > XsensorCal+60) // L1 & L2 & L3 { digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH);} }