Hack the Code Rocket!

No in-depth explanations to be found here! This is a fun program that uses all of the code concepts you saw in the projects, plus more! If you’re up to the challenge, dive into this program and try to decode what it does and how it works, using just the code itself and the comments throughout. Enjoy!

/* A fun and complex program that makes the Code Rocket fun to play with. No in-depth explanations here; this * program is designed for you to take apart and 'hack' into something new! */ int pressCount = 0; // an integer variable counting up each time a button is pressed void setup(){ pinMode(3,OUTPUT); //set each LED as an OUTPUT pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,INPUT_PULLUP); //set the buttons as INPUT_PULLUP pinMode(12,INPUT_PULLUP); pinMode(2,OUTPUT); //set the speaker as an OUTPUT } void loop(){ while(digitalRead(11)==LOW && digitalRead(12)==LOW){ //if both buttons 11 and 12 are pressed at the same time digitalWrite(7,LOW); //turn off the blaster LEDs if they are on. digitalWrite(8,LOW); for(int i=0;i<255;i++){ //fade up the booster LEDs and fade up a tune analogWrite(9,i); analogWrite(10,i); tone(2,i*5); delay(7); } //after the LEDs and tune 'fade up', play a rumbling/static tone as long as the 11 button is still held while(digitalRead(11)==LOW){ tone(2,150); //tones close to each other in hertz value played really quickly will sound like static delay(1); tone(2,50); delay(1); } digitalWrite(9,LOW); //turn off the booster LEDs when button 11 is released digitalWrite(10,LOW); } if(digitalRead(11)==LOW){ //if button 11 is pressed digitalWrite(7,HIGH); //turn on LED 7 pressCount++; //increase pressCount by one //A fast falling tone makes a better laser sound (like the laser 'bullet' is getting further away) than a single tone does. for(int i=800;i>500;i--){ //Starting at 800 and decreasing to 500 tone(2,i); //play the tone with pitch equal to variable 'i' delay(1); //delay 1 millisecond before changing the pitch and playing again } } else if(digitalRead(12)==LOW){ //if button 12 is pressed digitalWrite(8,HIGH); // turn on LED 8 pressCount++; //increase pressCount by one // This tone falls from 1000 to 700, playing a different tone every 1 millsecond for(int i=1000;i>700;i--){ // Starting at 1000 and decreasing to 700 tone(2,i); //play the tone with pitch equal to variable 'i' delay(1); //delay 1 millsecond } } else{ //Otherwise if no buttons are pressed digitalWrite(7,LOW); //turn off the LEDs digitalWrite(8,LOW); noTone(2); //stop the tone on the speaker } if(pressCount==50){ //if pressCount reaches 50, turn off the blaster LED and play 'ascend to charge' and play a light pattern digitalWrite(8,LOW);//turn off the LED that may be on digitalWrite(7,LOW);//turn off the LED that may be on tone(2,523); //C delay(100); //Play the note for 150 milliseconds tone(2,659); //E delay(100); tone(2,784); //G delay(100); tone(2,880); //A delay(200); //double delay on this note tone(2,659); //E delay(100); tone(2,784); //G delay(400); //quadruple delay on the last note noTone(2); pressCount=0; //reset pressCount to 0 for(int i=3;i<=6;i++){ //Turn on each LED in the circle in order and play a corresponding tune digitalWrite(i,HIGH); tone(2,i*100); delay(75); digitalWrite(i,LOW); }// end of the for loop }//end of the 'pressCount=50' loop }//end of the void loop // (c) 2018 Let's Start Coding. License: www.letsstartcoding.com/bsdlicense