// Garmin Cracker // by JJ Dasher #include Servo myservox; Servo myservoy; Servo myservop; // create servo object to control a servo void setup() { // starting Variables myservox.attach(8); // attaches the servo on pin 9 to the servo object myservoy.attach(9); myservop.attach(7); myservox.write(45); myservoy.write(15); myservop.write(40); delay(1000); Serial.begin(9600); } void loop() { for(int pin = 0; pin < 9999; pin += 1) // Pin incrementer 0000 to 9999 { Serial.println(pin); Push(getDigit (pin, 4)); Push(getDigit (pin, 3)); Push(getDigit (pin, 2)); Push(getDigit (pin, 1)); PushDONE(); } } int Push(int Digit) { if (Digit == 1) { myservox.write(45); myservoy.write(30); delay(650); myservop.write(60); delay(150); myservop.write(45); } if (Digit == 2) { myservox.write(100); myservoy.write(30); delay(650); myservop.write(60); delay(150); myservop.write(45); } if (Digit == 3) { myservox.write(170); myservoy.write(30); delay(650); myservop.write(60); delay(150); myservop.write(45); } if (Digit == 4) { myservox.write(45); myservoy.write(80); delay(650); myservop.write(60); delay(150); myservop.write(45); } if (Digit == 5) { myservox.write(100); myservoy.write(80); delay(650); myservop.write(60); delay(150); myservop.write(45); } if (Digit == 6) { myservox.write(170); myservoy.write(80); delay(650); myservop.write(60); delay(150); myservop.write(45); } if (Digit == 7) { myservox.write(45); myservoy.write(115); delay(650); myservop.write(60); delay(150); myservop.write(45); } if (Digit == 8) { myservox.write(100); myservoy.write(115); delay(650); myservop.write(60); delay(150); myservop.write(45); } if (Digit == 9) { myservox.write(170); myservoy.write(115); delay(650); myservop.write(60); delay(150); myservop.write(45); } if (Digit == 0) { myservox.write(100); myservoy.write(140); delay(650); myservop.write(60); delay(150); myservop.write(45); } } void PushDONE() { myservox.write(150); myservoy.write(180); delay(650); myservop.write(60); delay(150); myservop.write(45); delay(8200); } int getDigit (long number, int place) { char buf [12]; ltoa (number, buf, 10); // sanity clause if (place <= 0 || place > strlen (buf)) return 0; // extract digit return (buf [strlen (buf) - place] - '0'); } // end of getDigit