Now let's take a look at the software used to generate the pauses and the tones. There's two main parts to the C code for this project.
-The Main Loop
-The Tone Generation Functions
The main loop of this program does little more than act as a gigantic forever while loop generating the tones every 6 minutes using pause functions and tone generation functions.
The Main Loop
------------« Begin Code »------------
/***** MAIN PROGRAM *****/
void main()
{
//*** Initialization
// configure port
TRIS = 0b110000; // Everything Output (We Only Care About GP1)
//Loop Forever!
for(;;){
//Low Pitch Noise
sound_1();
sound_1();
..
..
sound_1();
sound_1();
//6 Minute Delay
delay();
delay();
delay();
delay();
delay();
delay();
delay();
delay();
delay();
//Medium-High Pitch Noise
sound_4();
sound_4();
..
..
sound_4();
sound_4();
//6 Minute Delay
delay();
delay();
delay();
delay();
delay();
delay();
//Medium-Low Pitch Noise
sound_2();
sound_2();
..
..
sound_2();
sound_2();
//6 Minute Delay
delay();
delay();
delay();
delay();
delay();
delay();
//High Pitch Noise
sound_5();
sound_5();
..
..
sound_5();
sound_5();
//6 Minute Delay
delay();
delay();
delay();
delay();
delay();
delay();
//Medium Pitch Noise
sound_3();
sound_3();
..
..
sound_3();
sound_3();
//6 Minute Delay
delay();
delay();
delay();
delay();
delay();
delay();
}
}
------------« End Code »------------
There are 6 unique functions that are used to generate different tones. They're actually all stupidly simple. They flip the I/O bit connected to the speaker on and off with specific timing to generate a low or high frequency.
The Tone Generation Functions
------------« Begin Code »------------
void sound_1(){
GPIO = 0x00;
__delay_ms(15);
GPIO = 0x02;
__delay_ms(15);
}
void sound_2(){
GPIO = 0x00;
__delay_ms(10);
GPIO = 0x02;
__delay_ms(10);
}
void sound_3(){
GPIO = 0x00;
__delay_ms(3);
GPIO = 0x02;
__delay_ms(3);
}
void sound_4(){
GPIO = 0x00;
__delay_ms(2);
GPIO = 0x02;
__delay_ms(2);
}
void sound_5(){
GPIO = 0x00;
__delay_ms(1);
GPIO = 0x02;
__delay_ms(1);
}
------------« End Code »------------
Take a look at the project files above and the main C file to see all the code for this project. Compile it and load the .hex onto your PIC and you're all set to go.