1 | #include <stdio.h>
|
2 | #include <stdlib.h>
|
3 | #include <unistd.h>
|
4 | #include <string.h>
|
5 | #include <pigpiod_if2.h>
|
6 |
|
7 | void init(int pi)
|
8 | {
|
9 | set_mode(pi,4,PI_OUTPUT); // set PIN4 to output
|
10 | gpio_write(pi,4,1); // set common DISABLE
|
11 |
|
12 | set_mode(pi,2,PI_OUTPUT); // set PIN2 to output
|
13 | gpio_write(pi,2,0); // turn off OUT1
|
14 |
|
15 | set_mode(pi,3,PI_OUTPUT); // set PIN3 to output
|
16 | gpio_write(pi,3,0); // turn off OUT2
|
17 |
|
18 | set_mode(pi,5,PI_OUTPUT); // set PIN5 to output
|
19 | gpio_write(pi,5,0); // turn of Sirene
|
20 |
|
21 | gpio_write(pi,4,0); // clear common DISABLE
|
22 | }
|
23 |
|
24 | void help(void)
|
25 | {
|
26 | printf("rpi-sirene v1.0\r\n\r\n");
|
27 | printf("\tsirene ton[ms] toff[ms]\r\n");
|
28 | printf("\tsirene -h => help\r\n");
|
29 | printf("\tsirene -i => init\r\n\r\n");
|
30 | }
|
31 |
|
32 | int main(int argc, char *argv[])
|
33 | {
|
34 | int on=200;
|
35 | int off=80;
|
36 | int cyc=10;
|
37 | int pi;
|
38 |
|
39 | pi = pigpio_start(0,0); /* Connect to local Pi. */
|
40 |
|
41 | if (pi < 0)
|
42 | {
|
43 | printf("Can't connect to pigpio daemon\r\n");
|
44 | return 1;
|
45 | }
|
46 |
|
47 | if ((argc==2)&&(strstr(argv[1],"-h")!=NULL))
|
48 | {
|
49 | help();
|
50 | pigpio_stop(pi);
|
51 | return 2;
|
52 | }
|
53 | else if ((argc==2)&&(strcmp(argv[1],"-i")==0))
|
54 | {
|
55 | init(pi);
|
56 | pigpio_stop(pi);
|
57 | return 0;
|
58 | }
|
59 | else
|
60 | {
|
61 | switch(argc)
|
62 | {
|
63 | case 3: if (atoi(argv[2])) off=atoi(argv[2]);
|
64 | case 2: if (atoi(argv[1])) on=atoi(argv[1]);
|
65 | }
|
66 |
|
67 | cyc=12000/(on+off);
|
68 |
|
69 | if (gpio_read(pi,3)==1)
|
70 | {
|
71 | printf("Another instance of 'sirene' is running!\r\n");
|
72 | pigpio_stop(pi);
|
73 | return 0;
|
74 | }
|
75 |
|
76 | gpio_write(pi,3,1); // activate out 1
|
77 |
|
78 | while (cyc!=0)
|
79 | {
|
80 | gpio_write(pi,5,1); // activate piezo alarm buzzer
|
81 | usleep(on*1000);
|
82 | gpio_write(pi,5,0); // deactivate piezo alarm buzzer
|
83 | usleep(off*1000);
|
84 | cyc--;
|
85 | }
|
86 | gpio_write(pi,3,0); // deactivate out 1
|
87 | gpio_write(pi,5,0); // deactivate piezo alarm buzzer
|
88 | }
|
89 | pigpio_stop(pi);
|
90 | }
|