Fraise  2.1
FRAmework for Interfacing Software and Electronics
Dimmer module

8 channels AC dimmer More...

8 channels AC dimmer

Example :

main.c

/*********************************************************************
* dimmer example for Versa2
* Connect dimmer board to Versa's VNH2 port.
*********************************************************************/
#define BOARD Versa2
#include <fruit.h>
#include <dimmer.h>
t_delay mainDelay;
//----------- Setup ----------------
void setup(void) {
dimmerInit(); // init dimmer module
delayStart(mainDelay, 20000); // init the mainDelay to 20 ms
}
// ---------- Main loop ------------
void loop() {
fraiseService();// listen to Fraise events
dimmerService(); // dimmer management routine
if(delayFinished(mainDelay)) // when mainDelay triggers :
{
delayStart(mainDelay, 20000); // re-init mainDelay
//dimmerPrintDebug(); //
}
}
// ---------- Interrupts ------------
{
}
{
}
// ---------- Receiving ------------
void fraiseReceive() // receive raw bytes
{
unsigned char c=fraiseGetChar();
if(c==40) dimmerReceive(); // if first byte is 40, then call dimmer receive function.
}

config.h

#ifndef _CONFIG_H_
#define _CONFIG_H_
// dimmer config for VNH2 port of Versa
#define DIMMER_INTPIN K9
#define DIMMER_K0 MB1
#define DIMMER_K1 MBEN
#define DIMMER_K2 MBEN2
#define DIMMER_K3 MB2
#endif // _CONFIG_H_

Settings to put in config.h

You must define the pin used to trig the interrupt (sensing the AC zero-crossing):

#define DIMMER_INTPIN K9 (replace K9 by the pin used by your dimmer)

The following parameters can be overloaded:

#define DIMMER_INTEDGE
 Edge of the interrupt (0:falling edge ; 1:rising edge) ; default: 1(rising edge).
 
#define DIMMER_TIMER
 Timer to be used by the dimmer module (only 1, 3 or 5 ; default: 5).
 
#define DIMMER_K0
 output pin for channel 0.
 
#define DIMMER_K1
 output pin for channel 1.
 
#define DIMMER_K2
 output pin for channel 2.
 
#define DIMMER_K3
 output pin for channel 3.
 
#define DIMMER_K4
 output pin for channel 4.
 
#define DIMMER_K5
 output pin for channel 5.
 
#define DIMMER_K6
 output pin for channel 6.
 
#define DIMMER_K7
 output pin for channel 7.
 
#define DIMMER_TMIN
 
#define DIMMER_INTPRI
 

Initialization

void dimmerInit (void)
 Init the module in setup()
 

Main loop functions

void dimmerService (void)
 Module service routine, to be called by the main loop().
 

Utilities

void dimmerSet (unsigned char num, unsigned int val)
 Set the value of a dimmer channel. More...
 

Interrupt routine

void dimmerHighInterrupt (void)
 Module high interrupt routine, must be called by the highInterrupts() user defined function.
 
void dimmerLowInterrupt (void)
 Module low interrupt routine, must be called by the lowInterrupts() user defined function.
 

Receive function

void dimmerReceive ()
 Module receive function, to be called by the fraiseReceive() user defined function. More...
 
void dimmerPrintDebug ()
 

Function Documentation

◆ dimmerSet()

void dimmerSet ( unsigned char  num,
unsigned int  val 
)

Set the value of a dimmer channel.

Parameters
numDimmer channel (0 to 7)
valNew 16 bit value for this channel, between 0 and 65535

◆ dimmerReceive()

void dimmerReceive ( )

Module receive function, to be called by the fraiseReceive() user defined function.

The first byte of the message represents the channel (0-7), the 2 next bytes are the 16 bit new position value. If the first byte is 8 then the next char sets the AC frequency : 0=50Hz, 1=60Hz

dimmerReceive
void dimmerReceive()
Module receive function, to be called by the fraiseReceive() user defined function.
loop
void loop()
User defined forever loop.
fruitInit
void fruitInit(void)
Init fruit module at setup().
dimmer.h
highInterrupts
void highInterrupts()
Optional user defined high priority interrupt routine.
dimmerInit
void dimmerInit(void)
Init the module in setup()
t_delay
unsigned long t_delay
Delay type.
Definition: core.h:215
dimmerHighInterrupt
void dimmerHighInterrupt(void)
Module high interrupt routine, must be called by the highInterrupts() user defined function.
fruit.h
fraiseService
void fraiseService(void)
Fraise device service routine.
fraiseReceive
void fraiseReceive()
Raw message to this device.
lowInterrupts
void lowInterrupts()
Optional user defined low priority interrupt routine.
dimmerLowInterrupt
void dimmerLowInterrupt(void)
Module low interrupt routine, must be called by the lowInterrupts() user defined function.
setup
void setup()
User defined initialization.
fraiseGetChar
unsigned char fraiseGetChar()
Get next char from receive buffer.
delayFinished
#define delayFinished(delay)
Test delay timeout.
Definition: core.h:225
dimmerService
void dimmerService(void)
Module service routine, to be called by the main loop().
delayStart
#define delayStart(delay, micros)
Start delay.
Definition: core.h:220