please point me in the right direction. Modified Hek’s leddimmable arduino sketch to dim pins 3 and 4 but when you change one the other dimmer changes as well, what am I missing? Thank You
#define VSN “DimmableLED 2.0”
#include <Sensor.h>
#include <SPI.h>
#include <EEPROM.h>
#include <RF24.h>
#define LED_PIN 3 // Arduino pin attached to MOSFET Gate pin
#define LED_PIN 4 // Arduino pin attached to MOSFET Gate pin
#define FADE_DELAY 10 // Delay in ms for each percentage fade up/down (10ms = 1s full-range dim)
// Set RADIO_ID to something unique in your sensor network (1-254)
// or set to AUTO if you want gw to assign a RADIO_ID for you.
#define RADIO_ID AUTO
Sensor gw(9,10);
static int currentLevel = 0; // Current dim level…
// Function prototypes
void setDimmableLEDState( message_s message );
void fadeToLevel( int toLevel );
/***
- Dimmable LED initialization method
*/
void setup()
{
Serial.begin( BAUD_RATE ); // Used to write debug info
Serial.println( VSN );
gw.begin( RADIO_ID );
gw.sendSketchInfo(“Dimmer”, “2.0”);
// Register the LED Dimmable Light with the gateway
gw.sendSensorPresentation( 0, S_DIMMER );
gw.sendSensorPresentation( 1, S_DIMMER );
// Pull the gateway’s current dim level - restore light level upon sendor node power-up
gw.getStatus( 0, V_DIMMER );
gw.getStatus( 1, V_DIMMER );
setDimmableLEDState( gw.getMessage() );
}
/***
-
Dimmable LED main processing loop
*/
void loop()
{
if ( gw.messageAvailable() ) {
message_s message = gw.getMessage();
setDimmableLEDState( message );// Inform the gateway of the current DimmableLED’s SwitchPower1 and LoadLevelStatus value…
gw.sendVariable( 0, V_LIGHT, currentLevel > 0 ? 1 : 0 );
gw.sendVariable( 0, V_DIMMER, currentLevel );
gw.sendVariable( 1, V_LIGHT, currentLevel > 0 ? 1 : 0 );
gw.sendVariable( 1, V_DIMMER, currentLevel );
Serial.println( “—” );
}
}
void setDimmableLEDState( message_s message ) {
if (message.header.type == V_LIGHT || message.header.type == V_DIMMER) {
// Retrieve the power or dim level from the incoming request message
int requestedLevel = atoi( message.data );
// Adjust incoming level if this is a V_LIGHT variable update [0 == off, 1 == on]
requestedLevel *= ( message.header.type == V_LIGHT ? 100 : 1 );
// Clip incoming level to valid range of 0 to 100
requestedLevel = requestedLevel > 100 ? 100 : requestedLevel;
requestedLevel = requestedLevel < 0 ? 0 : requestedLevel;
Serial.print( "Changing level to " );
Serial.print( requestedLevel );
Serial.print( ", from " );
Serial.println( currentLevel );
fadeToLevel( requestedLevel );
}
}
/***
- This method provides a graceful fade up/down effect
*/
void fadeToLevel( int toLevel ) {
int delta = ( toLevel - currentLevel ) < 0 ? -1 : 1;
while ( currentLevel != toLevel ) {
currentLevel += delta;
analogWrite( LED_PIN, (int)(currentLevel / 100. * 255) );
delay( FADE_DELAY );
}
}