====== How it works ====== A laser constantly shines on a [[https://en.wikipedia.org/wiki/Photoresistor|photoresistor]]. The Arduino constantly reads the voltage from a voltage divider made from a photoresistor and a 20k resistor. When a person interrupts the laser beam, the resistance of the photoresistor drops. The Arduino detects this as a change in voltage and sends a signal to the servo to change positions, releasing a rubber band. ====== Wiring Diagram ====== {{:workshops:rubber_band_shooter:laser_rubber_band_shooter_diagram.png?400|}} ====== Voltage Divider Equation ====== {{:workshops:rubber_band_shooter:511968d9ce395f7c54000000.png?400|}} ====== Arduino Code ====== #include int lightPin = A0; //define a pin for Photo resistor int ledPin=13; //define a pin for LED int threshold = 800; //define threshold value. Below this, the beam is assumed to be broken int servoPin = 11; //define a pin for the servo int fireposition = 40; int homeposition = 150; Servo myservo; void setup() { Serial.begin(9600); //Begin serial communcation pinMode( ledPin, OUTPUT ); myservo.attach(servoPin); myservo.write(homeposition); //move servo to home position delay(10000); //10 second delay at startup } void loop() { myservo.write(homeposition); delay(1000); while (analogRead(lightPin) > threshold){ Serial.println(analogRead(lightPin)); //Write the value of the photoresistor to the serial monitor. digitalWrite(ledPin, 1); delay(10); } myservo.write(fireposition); digitalWrite(ledPin, 0); delay(1000); }