Gordons Projects

--> Projects Top-Level GIT

Minor update to make sure it's all OK with wiringPi v2
[halloweenPi] / halloween.c
1
2 /*
3  * Halloween Pi:
4  *      A little seasonal project for the MagPi magazine - however
5  *      it demonstrates the use of software PWM to control a pair
6  *      of RGB LEDs and reading from a PIR sensor
7  *
8  *      Copyright (c) Gordon Henderson, 2012-2013.
9  *********************************************************************************
10  */
11
12 #include <stdio.h>
13 #include <string.h>
14 #include <errno.h>
15
16 #include <wiringPi.h>
17 #include <softPwm.h>
18
19 #include "ledControl.h"
20 #include "ledPatterns.h"
21
22 // Use the PIR sensor from tandyonline.co.uk
23
24 #define TANDY_PIR
25
26 #define PIR_SENSOR      7
27
28
29 /*
30  * waitForSensorClear:
31  *********************************************************************************
32  */
33
34 static void waitForSensorClear ()
35 {
36   printf ("Waiting for the sensor to clear... ") ; fflush (stdout) ;
37
38   while (digitalRead (PIR_SENSOR) == HIGH)
39     delay (10) ;
40
41   printf ("Ready... Shhhh...\n") ;
42 }
43
44 static void waitForSensorSet ()
45 {
46   printf ("Waiting for the sensor to trip... ") ; fflush (stdout) ;
47
48   delay (2000) ;
49
50   while (digitalRead (PIR_SENSOR) == LOW)
51     delay (10) ;
52
53   printf ("Boo!\n") ;
54 }
55
56
57
58 /*
59  * setup:
60  *      Setup the GPIO pins, etc.
61  *********************************************************************************
62  */
63
64 static void setup (void)
65 {
66
67 // First LED is on pins 0, 1 and 2, the 2nd is on pins 3, 4 and 5.
68
69   createRgbLed (0, 0, 1, 2) ;
70   createRgbLed (1, 3, 4, 5) ;
71
72   pinMode (PIR_SENSOR, INPUT) ;
73
74 // Note:
75 //      If using the Tandy sensor, then we need to make sure the pin is
76 //      a normal input pin - some sensors (e.g. SKPang) have an open-
77 //      collector output and need the internal pull-up enabled.
78
79 #ifdef  TANDY_PIR
80   pullUpDnControl (PIR_SENSOR, PUD_OFF) ;
81 #else
82   pullUpDnControl (PIR_SENSOR, PUD_UP) ;
83 #endif
84
85   waitForSensorClear () ;
86 }
87
88
89 /*
90  * main:
91  *      This is where it all starts
92  *********************************************************************************
93  */
94
95 int main (void)
96 {
97   printf ("Halloween Pi - Have some seasonal fun from the MagPi and Gordons Projects\n") ;
98
99   wiringPiSetup () ;
100
101   setup () ;
102
103 // Now, loop:
104 //      We wait for the sensor to trip, then do something!
105
106   for (;;)
107   {
108     waitForSensorSet () ;
109
110       randomLeds  (5000) ;
111       flickerRY   (5000) ;
112       purplePulse (5000) ;
113     
114     waitForSensorClear () ;
115   }
116
117   return 0 ;
118 }