Statistics
| Revision:

root / Ports / examples / dimmer_demo / dimmer_demo.pde

History | View | Annotate | Download (1.7 KB)

1
//>>> The latest version of this code can be found at https://github.com/jcw/ !!
2
3
// Demo for the Dimmer plug
4
// 2010-03-18 <jcw@equi4.com> http://opensource.org/licenses/mit-license.php
5
// $Id: dimmer_demo.pde 7763 2011-12-11 01:28:16Z jcw $
6
7
#include <Ports.h>
8
#include <RF12.h> // needed to avoid a linker error :(
9
10
PortI2C myBus (1);
11
DimmerPlug dimmer (myBus, 0x40);
12
13
int level = 0x1FFF;
14
15
void setup () {
16
    dimmer.begin();
17
    // set each channel to max brightness
18
    dimmer.setMulti(dimmer.PWM0, 255, 255, 255, 255,
19
                                 255, 255, 255, 255,
20
                                 255, 255, 255, 255,
21
                                 255, 255, 255, 255, -1);
22
    // set up for group blinking
23
    dimmer.setReg(dimmer.MODE2, 0x34);
24
    // blink rate: 0 = very fast, 255 = 10s
25
    dimmer.setReg(dimmer.GRPFREQ, 50);
26
    // blink duty cycle: 0 = full on, 255 = full off
27
    dimmer.setReg(dimmer.GRPPWM, 240);
28
    // let the chip do its thing for a while
29
    delay(10000);
30
    // set up for group dimming
31
    dimmer.setReg(dimmer.MODE2, 0x14);
32
    // gradually decrease brightness to minimum
33
    for (byte i = 100; i < 255; ++i) {
34
        dimmer.setReg(dimmer.GRPPWM, i);
35
        delay(100);
36
    }
37
    // the rest of the code dims individual channels 
38
    delay(2000);
39
}
40
41
void loop () {
42
    byte brightness = ++level;
43
    if (level & 0x100)
44
        brightness = ~ brightness;
45
    byte r = level & 0x0200 ? brightness : 0;
46
    byte g = level & 0x0400 ? brightness : 0;
47
    byte b = level & 0x0800 ? brightness : 0;
48
    byte w = level & 0x1000 ? brightness : 0;
49
    // set all 16 registers in one sweep
50
    dimmer.setMulti(dimmer.PWM0, w, b, g, r,
51
                                 w, b, g, r,
52
                                 w, b, g, r,
53
                                 w, b, g, r, -1);
54
}