Gordons Projects

--> Projects Top-Level GIT

Improved the PWM functions with help from Chris Hall.
[wiringPi] / examples / softPwm.c
1
2 #include <stdio.h>
3 #include <errno.h>
4 #include <string.h>
5
6 #include <wiringPi.h>
7 #include <softPwm.h>
8
9 #define RANGE           100
10 #define NUM_LEDS         12
11
12 int ledMap [NUM_LEDS] = { 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13 } ;
13
14 int values [NUM_LEDS] = { 0, 17, 32, 50, 67, 85, 100, 85, 67, 50, 32, 17 } ;
15
16 int main ()
17 {
18   int i, j ;
19   char buf [80] ;
20
21   if (wiringPiSetup () == -1)
22   {
23     fprintf (stdout, "oops: %s\n", strerror (errno)) ;
24     return 1 ;
25   }
26
27   for (i = 0 ; i < NUM_LEDS ; ++i)
28   {
29     softPwmCreate (ledMap [i], 0, RANGE) ;
30     printf ("%3d, %3d, %3d\n", i, ledMap [i], values [i]) ;
31   }
32
33   fgets (buf, 80, stdin) ;
34
35 // Bring all up one by one:
36
37   for (i = 0 ; i < NUM_LEDS ; ++i)
38     for (j = 0 ; j <= 100 ; ++j)
39     {
40       softPwmWrite (ledMap [i], j) ;
41       delay (10) ;
42     }
43
44   fgets (buf, 80, stdin) ;
45
46 // Down fast
47
48   for (i = 100 ; i > 0 ; --i)
49   {
50     for (j = 0 ; j < NUM_LEDS ; ++j)
51       softPwmWrite (ledMap [j], i) ;
52     delay (10) ;
53   }
54
55   fgets (buf, 80, stdin) ;
56
57   for (;;)
58   {
59     for (i = 0 ; i < NUM_LEDS ; ++i)
60       softPwmWrite (ledMap [i], values [i]) ;
61
62     delay (50) ;
63
64     i = values [0] ;
65     for (j = 0 ; j < NUM_LEDS - 1 ; ++j)
66       values [j] = values [j + 1] ;
67     values [NUM_LEDS - 1] = i ;
68   }
69 }