//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ // // // UFO CONTROLLER // Authored by Adrian JT (C) AGHR // // Written Mar 1 2018 //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ #define version_code "1.00" //Revision Control Never hurt //--------------------------------------------PIN Configuration of UFO ------------------------------------ //Sound interface int MUSI = 2; int COWM = 3; //Light Interface int ABDU = 4; int RING = 5; //Abduction beam int MDIR = 11; int MPUL = 12; //TRIGGER int TRIG = 8; // Pin 13 is the LED //AUX int LEDD = 13; // Pin 13 is the LED //Calibration int COW_CALP = 6; int COW_CALN = 7; //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // // Initialization Function // //------------------------------------------------------------------------------------------------------------------------------------------------------------------ void setup() { // initialize the digital pins pinMode(MUSI, OUTPUT); pinMode(COWM, OUTPUT); pinMode(ABDU, OUTPUT); pinMode(RING, OUTPUT); pinMode(MDIR, OUTPUT); pinMode(MPUL, OUTPUT); pinMode(LEDD, OUTPUT); pinMode(TRIG, INPUT); //DEFAULT CONDITIONS digitalWrite(MUSI,HIGH); digitalWrite(COWM,HIGH); digitalWrite(RING,LOW); digitalWrite(ABDU,LOW); digitalWrite(MDIR,LOW); digitalWrite(MPUL,LOW); //Wait for a serial connection while (!Serial) {} //----------------------------------------------------------------------------------------------- // Print a header if anything is connected to COM1 //----------------------------------------------------------------------------------------------- Serial.println(" "); Serial.println(" "); Serial.println(" "); Serial.println(" "); Serial.println(" "); Serial.print("UFO AGHR - Firmware Version: "); Serial.println(version_code); Serial.println(" "); } //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // // Main Software Loop // //------------------------------------------------------------------------------------------------------------------------------------------------------------------ void loop() { int data; int cow1; int cow2; int pulse_ctr; data =0; //////////////////////WAIT FOR AN ABDUCTION TO BE REQUESTED//////////////////// while (data==0){ data = digitalRead(TRIG); } //If a trigger has arrived : begin the abduction //////////////////////START THE ABDUCTION MUSIC//////////////////// digitalWrite(LEDD,HIGH); digitalWrite(MUSI,LOW); delay(100); digitalWrite(MUSI,HIGH); //////////////////////TURN ON THE RING LIGHTS//////////////////// digitalWrite(RING,HIGH); delay(14000); //////////////////////TURN ON THE ABDUCTION LIGHTS//////////////////// digitalWrite(ABDU,HIGH); delay(100); //////////////////////MOOO GOES THE COW//////////////////// digitalWrite(COWM,LOW); delay(100); digitalWrite(COWM,HIGH); //////////////////////WINCH THE COW UP HALF WAY//////////////////// digitalWrite(MDIR,LOW); for(pulse_ctr=0;pulse_ctr<18000;pulse_ctr++){ digitalWrite(MPUL,LOW); digitalWrite(LEDD,LOW); delay(1); digitalWrite(MPUL,HIGH); digitalWrite(LEDD,HIGH); } digitalWrite(MPUL,LOW); digitalWrite(LEDD,HIGH); //////////////////////MOOO GOES THE COW AGAIN//////////////////// digitalWrite(COWM,LOW); delay(10); digitalWrite(COWM,HIGH); //////////////////////WINCH THE COW UP ALL THE WAY//////////////////// digitalWrite(MDIR,LOW); for(pulse_ctr=0;pulse_ctr<18000;pulse_ctr++){ digitalWrite(MPUL,LOW); digitalWrite(LEDD,LOW); delay(1); digitalWrite(MPUL,HIGH); digitalWrite(LEDD,HIGH); } //ABDUCTION IS OVER //////////////////////LIGHTS OFF//////////////////// delay(1000); digitalWrite(ABDU,LOW); digitalWrite(RING,LOW); //////////////////////PUT THE COW BACK//////////////////// digitalWrite(MDIR,HIGH); for(pulse_ctr=0;pulse_ctr<36000;pulse_ctr++){ digitalWrite(MPUL,LOW); digitalWrite(LEDD,LOW); delay(1); digitalWrite(MPUL,HIGH); digitalWrite(LEDD,HIGH); } ///////////////TIME OUT FOR 2 MINUTES//////////////// delay(120000); } // end void loop