Appendix B: Arduino Code for “Can You Dodge a Laser?” Copy everything below this line. const int ready_light = 2; const int fire_light = 3; const int lazzor = 4; const int fire_switch = 7; const int sensor_in=0; int seed_timer = 0; long sensor_val = 0; void setup(){ pinMode(fire_switch,INPUT); pinMode(ready_light,OUTPUT); pinMode(fire_light,OUTPUT); pinMode(lazzor,OUTPUT); Serial.begin(9600); } void loop (){ //check_alignment(); //read_sensor(); fire_the_lazzor(); } long read_sensor(){ int base_line = 0; int trip_point = 3 * base_line; sensor_val = analogRead(sensor_in); if (sensor_val > 500){ digitalWrite(ready_light,HIGH); return sensor_val; } else{ digitalWrite(ready_light,LOW); return 0; } } void check_alignment (){ int count =0; long sensor_read = 0; for (int i=0; i < 4; i++){ digitalWrite(ready_light, HIGH); delay(250); digitalWrite(ready_light,LOW); delay(250); } Serial.println("Calibrating Laser Please wait"); digitalWrite (lazzor,HIGH); while (count < 10){ sensor_read = read_sensor(); Serial.println("Adjust Lazzor until Ready Light turns on"); if(sensor_read > 300){ Serial.print("Sensor Reading "); Serial.println(sensor_read); count++; delay(100); } else{ count=0; } } Serial.println("Lazzor is aligned ... commence firing"); //return 1; } void fire_the_lazzor(){ long random_seed=0; long delay_time=0; static unsigned long startTime = 0; static unsigned long reactionTime = 0; digitalWrite(fire_light,LOW); digitalWrite(lazzor,LOW); Serial.println("Press The Fire Button"); Serial.println("When the Red Light goes on the lazzor will fire ...."); random_seed=switchTime(); if (random_seed > 0){ delay_time = random(random_seed); delay(delay_time); digitalWrite(fire_light,HIGH); digitalWrite(lazzor,HIGH); //delay(500); sensor_val = analogRead(sensor_in); } while(sensor_val < 500){ digitalWrite(lazzor,HIGH); } reactionTime = millis()-startTime; Serial.print("Reactioj Time is ..."); Serial.println(reactionTime); Serial.println("Hmmm took longer than I expected ... looks like you got burned"); }