Binary switch code written for 1.5.4



  • Hi,
    I found the following sketch somewhere in the forum. It is written for MySensors 1.5.4, I tried to convert it for 2.1 but ended up with code that wont compile.

    What needs to be changed to make it compile?

    #include <MySensor.h>
    #include <SPI.h>
    #include <Bounce2.h>
    
    #define NUMBER_OF_SWITCHES 6
    
    MySensor gw;
    Bounce debouncer[NUMBER_OF_SWITCHES];
    
    int oldValue[NUMBER_OF_SWITCHES];
    byte switchPin[NUMBER_OF_SWITCHES] = {3,4,5,6,7,8}; //<<<<<<<<<<< set your switch pins here
    
    MyMessage msg(0,V_STATUS);
    
    void setup()  
    {  
      gw.begin();
    
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        pinMode(switchPin[i],INPUT_PULLUP);
        debouncer[i] = Bounce();
        debouncer[i].attach(switchPin[i]);
        debouncer[i].interval(5);
      }
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        gw.present(i, S_BINARY);
        delay(250);
      }
    }
    //
    void loop() 
    {
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        debouncer[i].update();
        int value = debouncer[i].read();
        if (value != oldValue[i]) 
        {
          gw.send(msg.setSensor(i).set(value == HIGH? true : false), false); 
        }
        oldValue[i] = value;
      }
    } 
    

    this is the original sketch without changes.

    greetings


  • Mod

    @ihtgtwtd https://forum.mysensors.org/post/42715 has instructions on how to convert from 1.x to 2.x.



  • thanks @mfalkvidd
    I already read that post. I tried again and now it worked.

    Thanks again


  • Mod

    @ihtgtwtd great!

    Would you mind posting the converted sketch, in case someone else comes looking for it later?



  • No, of course not. Here you go, have fun everyone :-)

    #define MY_DEBUG
    #define MY_RADIO_NRF24
    
    #include <MySensors.h>
    #include <SPI.h>
    #include <Bounce2.h>
    
    #define SKETCH_NAME "Binary Sensor"
    #define SKETCH_MAJOR_VER "1"
    #define SKETCH_MINOR_VER "0"
    
    #define first_CHILD_ID 0
    #define second_CHILD_ID 1
    #define third_CHILD_ID 2
    #define fourth_CHILD_ID 3
    #define fifth_CHILD_ID 4
    #define sixth_CHILD_ID 5
    
    #define NUMBER_OF_SWITCHES 6
    
    Bounce debouncer[NUMBER_OF_SWITCHES];
    
    int oldValue[NUMBER_OF_SWITCHES];
    byte switchPin[NUMBER_OF_SWITCHES] = {3,4,5,6,7,8}; //<<<<<<<<<<< set your switch pins here
    
    MyMessage msg(0,V_STATUS);
    
    
    void setup()  
    {  
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        pinMode(switchPin[i],INPUT_PULLUP);
        debouncer[i] = Bounce();
        debouncer[i].attach(switchPin[i]);
        debouncer[i].interval(5);
      }
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        present(i, S_BINARY);
        delay(250);
      }
    }
    //
    void loop() 
    {
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        debouncer[i].update();
        int value = debouncer[i].read();
        if (value != oldValue[i]) 
        {
          send(msg.setSensor(i).set(value == HIGH? true : false), false); 
        }
        oldValue[i] = value;
      }
    } 
    

Log in to reply
 

Looks like your connection to MySensors Forum was lost, please wait while we try to reconnect.