#include #include #include #include #include void init(int pi) { set_mode(pi,4,PI_OUTPUT); // set PIN4 to output gpio_write(pi,4,1); // set common DISABLE set_mode(pi,2,PI_OUTPUT); // set PIN2 to output gpio_write(pi,2,0); // turn off OUT1 set_mode(pi,3,PI_OUTPUT); // set PIN3 to output gpio_write(pi,3,0); // turn off OUT2 set_mode(pi,5,PI_OUTPUT); // set PIN5 to output gpio_write(pi,5,0); // turn of Sirene gpio_write(pi,4,0); // clear common DISABLE } void help(void) { printf("rpi-sirene v1.0\r\n\r\n"); printf("\tsirene ton[ms] toff[ms]\r\n"); printf("\tsirene -h => help\r\n"); printf("\tsirene -i => init\r\n\r\n"); } int main(int argc, char *argv[]) { int on=200; int off=80; int cyc=10; int pi; pi = pigpio_start(0,0); /* Connect to local Pi. */ if (pi < 0) { printf("Can't connect to pigpio daemon\r\n"); return 1; } if ((argc==2)&&(strstr(argv[1],"-h")!=NULL)) { help(); pigpio_stop(pi); return 2; } else if ((argc==2)&&(strcmp(argv[1],"-i")==0)) { init(pi); pigpio_stop(pi); return 0; } else { switch(argc) { case 3: if (atoi(argv[2])) off=atoi(argv[2]); case 2: if (atoi(argv[1])) on=atoi(argv[1]); } cyc=12000/(on+off); if (gpio_read(pi,3)==1) { printf("Another instance of 'sirene' is running!\r\n"); pigpio_stop(pi); return 0; } gpio_write(pi,3,1); while (cyc!=0) { gpio_write(pi,5,1); usleep(on*1000); gpio_write(pi,5,0); usleep(off*1000); cyc--; } gpio_write(pi,3,0); gpio_write(pi,5,0); } pigpio_stop(pi); }