I’m have no programing experience…i know these code work on older software, but since 1.0 it wont work anymore =(. Can some expert take a look, thanks.
/*RocketLauncher
ROCKET LAUNCHER CONTROLLER.
Arduining.com 05 Jan 2012 (hardware implemented version)
-A count-down TIMER is implemented.
-The potentiometer is used to set the TIMER.
-Two Push-Buttons: "ARM" to set the counter and "GO" to start the counter.
-Display: Sparkfun's Serial 4 Digit 7-Segment Display . COM-09766 (RED).
-NewSoftSerial library is used to avoid random commands to the display
during program downloading.
*/
#define FuseTIME 1500 //Fuse current duration in milliseconds.
#include <NewSoftSerial.h> //Usinf the NewSoftSerial library.
#define Fuss 7 //Pin connected to the Fuse relay.
#define GoButt 6 //Pin connected to the GO button.
#define ArmButt 5 //Pin connected to the ARM button.
#define BuzzPin 4 //Connected to the Speaker.
#define TXdata 3 //Conneted to Rx of the Display.
#define RXdata 2 //not used in this project
#define SetPot 0 //Analog Pin connected to the Pot.
NewSoftSerial mySerialPort(RXdata,TXdata);
void setup(){
pinMode(TXdata,OUTPUT);
pinMode(RXdata,INPUT);
pinMode(Fuss,OUTPUT);
pinMode(ArmButt, INPUT); // set "ARM" button pin to input
pinMode(GoButt, INPUT); // set "GO" button pin to input
digitalWrite(Fuss,LOW); //OPEN the fuse circuit.
digitalWrite(ArmButt, HIGH); // turn on pullup resistor
digitalWrite(GoButt, HIGH); // turn on pullup resistor
mySerialPort.begin(9600);
delay(10); //Wait for Serial Display startup.
mySerialPort.print("v"); //Reset the display.
mySerialPort.print("z"); //Brightness Control.
mySerialPort.print(0x40,BYTE); //3/4 Intensity.
mySerialPort.print("w"); //Decimal Point Control.
mySerialPort.print(0x10,BYTE); //turn on the colon ":".
}
int DownCntr; // down counter (1/10 Secs.)
int Go=0; // Stopped
//================================================================
void loop(){
if(!digitalRead(GoButt)||!digitalRead(ArmButt)){
Go=0; //ABORT!!!
tone(BuzzPin, 440, 1500);
delay(1500);
}
if(Go==0){
WaitARM();
WaitGO();
}
ShowTimer();
if (DownCntr > 50){
if (DownCntr % 10 ==0)tone(BuzzPin, 1000, 50); //Tone every second.
}
else if (DownCntr % 2 ==0)tone(BuzzPin, 1000, 50); //Tone every 1/5 second.
if (DownCntr ==0){
//------------------ ROCKET LAUNCH! --------------------
tone(BuzzPin, 440, FuseTIME); //Launch audible signal
digitalWrite(Fuss,HIGH); //CLOSE the fuse circuit
delay(FuseTIME);
digitalWrite(Fuss,LOW); //OPEN the fuse circuit.
//------------------------------------------------------
Go=0;
}
while (millis()% 100); //Wait until the next 1/10 of second.
delay(50);
DownCntr--;
}
//----------------------------------------
void WaitGO(){
ShowTimer();
while(digitalRead(GoButt));
Go=1;
delay(20);
while(!digitalRead(GoButt)); //Debounce GO button.
}
//------------------------------------------------------
void ReadTimer(){
DownCntr = map(analogRead(SetPot), 0, 1023, 5, 60);
DownCntr*=10;
}
//------------------------------------------------------
void ShowTimer(){
String seconds = String (DownCntr, DEC);
while(seconds.length()<3)seconds= "0" + seconds; //format to 3 numbers.
mySerialPort.print(seconds); //Write to Display.
mySerialPort.print(" "); //Last digit off.
}
//------------------------------------------------------
void WaitARM(){
while(digitalRead(ArmButt)==1){
ReadTimer();
mySerialPort.print(" "); //Turn Off Digits.
delay(50);
ReadTimer();
ShowTimer(); //Show Digits.
delay(150);
}
Go=0;
ShowTimer();
tone(BuzzPin, 2000, 150);
delay(200);
tone(BuzzPin, 2000, 150);
delay(200);
tone(BuzzPin, 2000, 150);
delay(20);
while(!digitalRead(ArmButt)); //Debounce ARM button.
}
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.