Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
G

Gabriele Cirillo

@Gabriele Cirillo
About
Posts
9
Topics
1
Shares
0
Groups
0
Followers
0
Following
0

Posts

Recent Best Controversial

  • More relay and push botton
    G Gabriele Cirillo

    ahhhhh! no, I start from 0 with an example found on the web, the @korttoma sketch is too complicated for me :P

    Development relay remotexy

  • More relay and push botton
    G Gabriele Cirillo

    @rejoe2 i use the pullup input and i try in setup to write relayPin to LOW, to put LOW the variable but with no success...

    ps: i deleted what??!?!? :P

    Development relay remotexy

  • More relay and push botton
    G Gabriele Cirillo

    @rejoe2 ok, i try with succesfully to make a sketch like my initial requests with array function :)

    for you is so simply, but for me no! :p

    all is ok, only a problem: at boot, at the first pression of one button (pin 27, 28 or 29) put high all 3 output... with another pression of button, all go ok... you see something that i can't see? :) ty

    int buttPin[3] = {27,28,29};// you do not want to use digital pins 0 or 1
    int relayPin[3] = {30,31,32};
    int lastButtState[3];
    int buttState[3];
    int debounceDelay = 50;
    int ledState[3];
    int reading[3];
    unsigned long lastDebounceTime[3];
        
    void setup() 
    {
      Serial.begin(115200);
      for (int i = 0; i < 3; i++)
      {
        pinMode(relayPin[i], OUTPUT);
        pinMode(buttPin[i], INPUT_PULLUP); 
      }
    }
    
    void loop() 
    {
      for (int i = 0; i < 3; i++)
      {
        reading[i] = digitalRead(buttPin[i]);
        if (reading[i] != lastButtState[i]) 
        {
          lastDebounceTime[i] = millis();
          lastButtState[i] = reading[i];
            
        }
        if ((millis() - lastDebounceTime[i]) > debounceDelay) {
           if (buttState[i] != lastButtState[i]) {
               buttState[i] = lastButtState[i];
               if (buttState[i] == HIGH) {
                     ledState[i] = !ledState[i];
                     digitalWrite(relayPin[i], ledState[i]);
      }
      }
     }
    }
    }```
    Development relay remotexy

  • More relay and push botton
    G Gabriele Cirillo

    you are right and sorry

    But I search for a simply code for x input and for x relay asking the best method for the code...

    now i start from 0 and try simply code! ty

    Development relay remotexy

  • More relay and push botton
    G Gabriele Cirillo

    If i trigger the input pin, the output still to LOW

    this is the serial code

    TDI:TSL
    T NODE,CP=RNNNA---,VER=2.2.0
    25 TSM:INIT
    26 TSF:WUR:MS=0
    33 !TSM:INIT:TSP FAIL
    35 TSM:FAIL:CNT=1
    37 TSM:FAIL:DIS
    38 TSF:TDI:TSL
    &"⸮q_⸮⸮!⸮D⸮⸮⸮s⸮ ⸮⸮ED⸮⸮A
    Et⸮EE⸮⸮AEň⸮1⸮⸮⸮
    Development relay remotexy

  • More relay and push botton
    G Gabriele Cirillo

    uh ok, sorry, i use the first, your right!

    now... i have tried this, but always unsuccesfully (i just change the pin)

    // Enable debug prints to serial monitor
    #define MY_DEBUG
    
    // Enable and select radio type attached
    #define MY_RADIO_NRF24
    
    #define SN "RelayButtonArray"
    #define SV "1.0"
    
    #include <MySensors.h>
    #include <SPI.h>
    #include <Bounce2.h>
    #define RELAY_ON 0                      // switch around for ACTIVE LOW / ACTIVE HIGH relay
    #define RELAY_OFF 1
    //
    
    #define noRelays 4                     //2-4
    const int relayPin[] = {30, 31, 32, 33};       //  switch around pins to your desire
    const int buttonPin[] = {28, 29, 27, 26};   //  switch around pins to your desire
    
    class Relay             // relay class, store all relevant data (equivalent to struct)
    {
      public:
        int buttonPin;                   // physical pin number of button
        int relayPin;             // physical pin number of relay
        boolean relayState;               // relay status (also stored in EEPROM)
    };
    
    Relay Relays[noRelays];
    Bounce debouncer[noRelays];
    MyMessage msg[noRelays];
    
    /*
      void before() {
      for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
        // Then set relay pins in output mode
        pinMode(pin, OUTPUT);
        // Set relay to last known state (using eeprom storage)
        digitalWrite(pin, loadState(sensor)?RELAY_ON:RELAY_OFF);
      }
      }*/
    
    void setup() {
      wait(100);
      // Initialize Relays with corresponding buttons
      for (int i = 0; i < noRelays; i++) {
        Relays[i].buttonPin = buttonPin[i];              // assign physical pins
        Relays[i].relayPin = relayPin[i];
        msg[i].sensor = i;                                   // initialize messages
        msg[i].type = V_LIGHT;
        pinMode(Relays[i].buttonPin, INPUT_PULLUP);
        wait(100);
        pinMode(Relays[i].relayPin, OUTPUT);
        Relays[i].relayState = loadState(i);                               // retrieve last values from EEPROM
        digitalWrite(Relays[i].relayPin, Relays[i].relayState ? RELAY_ON : RELAY_OFF); // and set relays accordingly
        send(msg[i].set(Relays[i].relayState ? true : false));                 // make controller aware of last status
        wait(50);
        debouncer[i] = Bounce();                        // initialize debouncer
        debouncer[i].attach(buttonPin[i]);
        debouncer[i].interval(30);
        wait(50);
      }
    }
    
    void presentation()
    {
      // Send the sketch version information to the gateway and Controller
      sendSketchInfo(SN, SV);
    
      wait(100);
    
      for (int i = 0; i < noRelays; i++)
        present(i, S_LIGHT);                               // present sensor to gateway
    
      wait(100);
    }
    
    
    void loop()
    {
      for (byte i = 0; i < noRelays; i++) {
        if (debouncer[i].update()) {
          
          int value = debouncer[i].read();
          
          if ( value == LOW) {
            Relays[i].relayState = !Relays[i].relayState;
            digitalWrite(Relays[i].relayPin, Relays[i].relayState ? RELAY_ON : RELAY_OFF);
            send(msg[i].set(Relays[i].relayState ? true : false));
            // save sensor state in EEPROM (location == sensor number)
            saveState( i, Relays[i].relayState );
    
          }
    
        }
      }
      //wait(20);
    }
    
    void receive(const MyMessage &message) {
      if (message.type == V_LIGHT) {
        if (message.sensor < noRelays) {          // check if message is valid for relays..... previous line  [[[ if (message.sensor <=noRelays){ ]]]
          Relays[message.sensor].relayState = message.getBool();
          digitalWrite(Relays[message.sensor].relayPin, Relays[message.sensor].relayState ? RELAY_ON : RELAY_OFF); // and set relays accordingly
          saveState( message.sensor, Relays[message.sensor].relayState ); // save sensor state in EEPROM (location == sensor number)
        }
      }
      wait(20);
    }```
    Development relay remotexy

  • More relay and push botton
    G Gabriele Cirillo

    sorry for tag! :)

    this is pratically the code of your link... with some adjustement of my pin configuration... but the output remain LOW...

    i know that is not simply :P

    Development relay remotexy

  • More relay and push botton
    G Gabriele Cirillo

    Yes, i have try it but unsuccesfull.. this is my sketch

    /*
      RemoteXY example. 
      Smartphone Ethernet connect over W5100 Ethernet shield or module 
      (hardware serial connected).
    
      This shows an example of using the library RemoteXY.
      In the example you can control the pin 2 using the button on the 
      smartphone. You need to connect W5100 Ethernet shield or module. 
      W5100 used SPI interface.
      
      Download the mobile app from the 
      website: http://remotexy.com/download/ for connect this sketch.
      
      Use the website http://remotexy.com/ to create your own management 
      interface your arduino with your smartphone or tablet.
      You can create different management interfaces. Use buttons, 
      switches, sliders, joysticks (g-sensor) all colors and sizes 
      in its interface. Next, you will be able to get the sample 
      code for arduino to use your interface for control from a 
      smartphone or tablet. You will not need to re-install the 
      android app, as it will determine which interface you have 
      downloaded the arduino.
      
    */
    
    ///////////////////////////////////////////// 
    //        RemoteXY include library         // 
    ///////////////////////////////////////////// 
    
    /* RemoteXY select connection mode and include library */ 
    
    // Enable debug prints to serial monitor
    #define MY_DEBUG
    
    // Enable and select radio type attached
    #define MY_RADIO_NRF24
    //#define MY_RADIO_RFM69
    
    // Enabled repeater feature for this node
    //#define MY_REPEATER_FEATURE
    
    #define REMOTEXY_MODE__ETHERNET_LIB
    #include <Ethernet.h>
    #include <SPI.h>
    #include <RemoteXY.h>
    #include <SPI.h>
    #include <MySensors.h>
    #include <Bounce2.h>
    
    /* RemoteXY connection settings */
    #define REMOTEXY_ETHERNET_MAC "DE:AD:BE:EF:EF:ED"
    #define REMOTEXY_SERVER_PORT 6377
    
    // RemoteXY configurate   
    #pragma pack(push, 1) 
    uint8_t RemoteXY_CONF[] = 
      { 255,3,0,2,0,48,0,8,13,1,
      1,0,15,37,12,12,2,31,79,78,
      0,65,4,43,38,9,9,1,0,15,
      19,12,12,2,31,79,78,0,65,4,
      43,21,9,9,1,0,27,72,12,12,
      2,31,79,78,0 }; 
         
    // this structure defines all the variables of your control interface  
    struct { 
    
        // input variable
      uint8_t button_2; // =1 if button pressed, else =0 
      uint8_t button_1; // =1 if button pressed, else =0 
      uint8_t button_all; // =1 if button pressed, else =0
    
        // output variable
      uint8_t led_1_r; // =0..255 LED Red brightness 
      uint8_t led_2_r; // =0..255 LED Red brightness 
    
    
        // other variable
      uint8_t connect_flag;  // =1 if wire connected, else =0 
    
    } RemoteXY; 
    #pragma pack(pop) 
    
    ///////////////////////////////////////////// 
    //           END RemoteXY include          // 
    ///////////////////////////////////////////// 
    
    /**
       
       DESCRIPTION
       Based on the RelayWithButtonActuator sketch
      
    */
    
    // Enable debug prints to serial monitor
    #define MY_DEBUG
    
    // Enabled repeater feature for this node
    //#define MY_REPEATER_FEATURE
    
    #define RELAY_ON 1
    #define RELAY_OFF 0
    
    #define SSR_A_ID 1   // Id of the sensor child
    #define SSR_B_ID 2   // Id of the sensor child
    
    const int buttonPinA = 28;
    const int buttonPinB = 29;
    const int relayPinA = 30;
    const int relayPinB = 31;
    int oldValueA = 0;
    int oldValueB = 0;
    bool stateA = false;
    bool stateB = false;
    
    
    
    Bounce debouncerA = Bounce();
    Bounce debouncerB = Bounce();
    
    MyMessage msgA(SSR_A_ID, V_STATUS);
    MyMessage msgB(SSR_B_ID, V_STATUS);
    
    void setup()
    {
    
      pinMode(buttonPinA, INPUT_PULLUP); // Setup the button Activate internal pull-up
      pinMode(buttonPinB, INPUT_PULLUP); // Setup the button Activate internal pull-up
    // Then set relay pins in output mode
      pinMode(relayPinA, OUTPUT);
      pinMode(relayPinB, OUTPUT);
    
      // After setting up the buttons, setup debouncer
      debouncerA.attach(buttonPinA);
      debouncerA.interval(5);
      debouncerB.attach(buttonPinB);
      debouncerB.interval(5);
    
      // Make sure relays are off when starting up
      digitalWrite(relayPinA, RELAY_OFF);
      digitalWrite(relayPinB, RELAY_OFF);
      
      
    }
    
    void presentation()  {
      // Send the sketch version information to the gateway and Controller
      sendSketchInfo("Mains Controller", "1.0");
    
      // Register all sensors to gw (they will be created as child devices)
      present(SSR_A_ID, S_LIGHT);
      present(SSR_B_ID, S_LIGHT);
    
    }
    
    /*
       Example on how to asynchronously check for new messages from gw
    */
    void loop()
    {
      debouncerA.update();
      // Get the update value
      int valueA = debouncerA.read();
      if (valueA != oldValueA && valueA == 0) {
        send(msgA.set(stateA ? false : true), true); // Send new state and request ack back
    
      }
      oldValueA = valueA;
     
    
      debouncerB.update();
      // Get the update value
      int valueB = debouncerB.read();
      if (valueB != oldValueB && valueB == 0) {
        send(msgB.set(stateB ? false : true), true); // Send new state and request ack back
    
      }
      oldValueB = valueB;
    }
    
    void receive(const MyMessage &message) {
      // We only expect one type of message from controller. But we better check anyway.
     
    
    
      
    
      if (message.type == V_STATUS) {
          
        switch (message.sensor) {
          case 1:
            stateA = message.getBool();
            digitalWrite(message.sensor + 4, stateA ? RELAY_ON : RELAY_OFF);
            
            break;
          case 2:
            stateB = message.getBool();
            digitalWrite(message.sensor + 4, stateB ? RELAY_ON : RELAY_OFF);
            
            break;
          
        }
       
          // Write some debug info
        Serial.print("Incoming change for sensor:");
        Serial.println(message.sensor);
        Serial.print("from node:");
        Serial.println(message.sender);
        Serial.print(", New status: ");
        Serial.println(message.getBool());
      }
    }
    
    Development relay remotexy

  • More relay and push botton
    G Gabriele Cirillo

    Hi!

    I need to control 15 relay with 15 push button (one click on, another click off) on a mega 2560 and w5100.

    I want integrate remotexy to control them.

    What is the easiest way for that?

    Can You help me with the code?

    With one button e one relay it's ok (button+remotexy), i dont know how duplicate the code for 15 times with a matrix.

    Ty

    Development relay remotexy
  • Login

  • Don't have an account? Register

  • Login or register to search.
  • First post
    Last post
0
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular