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
  1. Home
  2. Hardware
  3. TX RX ERR - LED for Sensors

TX RX ERR - LED for Sensors

Scheduled Pinned Locked Moved Hardware
9 Posts 5 Posters 4.7k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Meister_Petz
    wrote on last edited by
    #1

    Hi,

    is there a simple way to get these LEDs working on Sensors? Like the LEDs on the Serial Gateway but as said... for Sensors.

    Many Thanks

    Petz

    BulldogLowellB 1 Reply Last reply
    0
    • M Meister_Petz

      Hi,

      is there a simple way to get these LEDs working on Sensors? Like the LEDs on the Serial Gateway but as said... for Sensors.

      Many Thanks

      Petz

      BulldogLowellB Offline
      BulldogLowellB Offline
      BulldogLowell
      Contest Winner
      wrote on last edited by
      #2

      @Meister_Petz

      you want to transmit to a node an instruction to turn on/off an LED... or you want to show at the node that it is in TX/RX process?

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Meister_Petz
        wrote on last edited by
        #3

        @BulldogLowell
        I would like the node to show that it is in TX/RX process.

        1 Reply Last reply
        0
        • hekH Online
          hekH Online
          hek
          Admin
          wrote on last edited by hek
          #4

          There isn't any super-easy way of hooking in this in the sketch. You would have to subclass the MySensors class or add the functionality you want directly.

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Meister_Petz
            wrote on last edited by Meister_Petz
            #5

            Nevertheless Thanks!

            That's how I solved it:
            If message sent, blink LED
            If message received, blink LED

            That's my code for 1, 2 or 3 LEDs:

             #include <MySensor.h>
              #include <SPI.h>
              MySensor gw;
              
                //------------------------------------------------------------------------
                // YOUR DEFINITIONS
                //------------------------------------------------------------------------
                // Definitions
               
            
                //------------------------------------------------------------------------
                // POWER RX TX LED
                //------------------------------------------------------------------------
                // Definitions 
                
                     // choose one Mode
                       // All with one LED => LEDMode = 1
                       // POWER seperate   => LEDMode = 2
                       // only TX and RX   => LEDMode = 3 
                       // 3 seperate LEDS  => LEDMode = 4
                       // for a power LED, I would connect a LED between GND and VCC in general.
                       
                     const int LEDMode = 3; // 2 3 4 (0 is off)
                     
                     // Mode 1
                     #define LEDPwrRXTXPin 4
                     
                     // Mode 2
                     #define LEDPwrPin1 3
                     #define LEDRXTXPin 4
                     
                     // Mode 3
                     #define LEDRXPin 3
                     #define LEDTXPin 4
                     
                     // Mode 4
                     #define LEDPwrPin2 19
                     #define LEDRXPin 3
                     #define LEDTXPin 4
            
                     int blinkRX = 0;
                     int blinkTX = 0;
                     
                     
                
                void setup()  
                {  
                gw.begin(incomingMessage, AUTO, true);
                
                //------------------------------------------------------------------------
                // YOUR CODE
                //------------------------------------------------------------------------
                // VOID SETUP
                
            
                //------------------------------------------------------------------------
                // POWER RX TX LED
                //------------------------------------------------------------------------
                // VOID SETUP
                
                
                     // All with one LED => LEDMode = 1
                     if (LEDMode == 1){
                       pinMode(LEDPwrRXTXPin, OUTPUT);
                     }
                       
                     // POWER seperate => LEDMode = 2
                     if (LEDMode == 2){
                       pinMode(LEDPwrPin1, OUTPUT);
                       pinMode(LEDRXTXPin, OUTPUT);
                     }
                       
                     // only TX and RX => LEDMode = 3
                     if (LEDMode == 3){
                       pinMode(LEDRXPin, OUTPUT);
                       pinMode(LEDTXPin, OUTPUT);
                     }
                       
                     // 3 seperate LEDS => LEDMode = 4
                     if (LEDMode == 4){
                       pinMode(LEDPwrPin2, OUTPUT);
                       pinMode(LEDTXPin, OUTPUT);
                       pinMode(LEDRXPin, OUTPUT);
                     }
                     
            
                }
                
                
             void loop() 
              {
                gw.process();
                
                //------------------------------------------------------------------------
                // POWER RX TX LED
                //------------------------------------------------------------------------
                // VOID LOOP
                if (LEDMode == 1){
                  digitalWrite(LEDPwrRXTXPin,HIGH);
                  if (blinkTX == 1){
                    digitalWrite(LEDPwrRXTXPin, LOW); // invert blink because power is already on
                    delay(40);
                    digitalWrite(LEDPwrRXTXPin, HIGH);
                    blinkTX = 0;
                  }
                }
                
                if (LEDMode == 2){
                  digitalWrite(LEDPwrPin1,HIGH);
                  digitalWrite(LEDRXTXPin,LOW);
                  if (blinkTX == 1){
                    digitalWrite(LEDRXTXPin, HIGH);
                    delay(40);
                    digitalWrite(LEDRXTXPin, LOW);
                    blinkTX = 0;
                  }
                }
                if (LEDMode == 3){
                  digitalWrite(LEDRXPin,LOW);
                  digitalWrite(LEDTXPin,LOW);
                  if (blinkTX == 1){
                    digitalWrite(LEDTXPin, HIGH);
                    delay(40);
                    digitalWrite(LEDTXPin, LOW);
                    blinkTX = 0;
                  }
                }
                if (LEDMode == 4){
                  digitalWrite(LEDPwrPin2,HIGH);
                  digitalWrite(LEDRXPin,LOW);
                  digitalWrite(LEDTXPin,LOW);
                  if (blinkTX == 1){
                    digitalWrite(LEDTXPin, HIGH);
                    delay(40);
                    digitalWrite(LEDTXPin, LOW);
                    blinkTX = 0;
                  }
                }
                
                
                //------------------------------------------------------------------------
                // YOUR CODE
                //------------------------------------------------------------------------
                // VOID LOOP
                
                // !!! at  gw.send(msg.set...); there also needs to be a - blinkTX = 1; - !!!
            
              }
              
              
              void incomingMessage(const MyMessage &message) {
                
                //------------------------------------------------------------------------
                // POWER RX TX LED
                //------------------------------------------------------------------------
                // INCOMING MESSAGE
                if (LEDMode == 1){
                  digitalWrite(LEDPwrRXTXPin, LOW);
                  delay(40);
                  digitalWrite(LEDPwrRXTXPin, HIGH);
                }
                if (LEDMode == 2){
                  digitalWrite(LEDRXTXPin,HIGH);
                  delay(40);
                  digitalWrite(LEDRXTXPin, LOW);
                }
                if (LEDMode == 3){
                  digitalWrite(LEDRXPin, HIGH);
                  delay(40);
                  digitalWrite(LEDRXPin, LOW);  
                }
                if (LEDMode == 4){
                    digitalWrite(LEDRXPin, HIGH);
                    delay(40);
                    digitalWrite(LEDRXPin, LOW);
                }
              
                //------------------------------------------------------------------------
                // YOUR CODE
                //------------------------------------------------------------------------
                // INCOMING MESSAGE
            
              }
            

            Still missing is the ERROR. Is there a way to ask if there was a "fail" within the message?

            Thanks

            1 Reply Last reply
            0
            • A Offline
              A Offline
              andriej
              wrote on last edited by
              #6

              +1 for the RX/TX LED support in code for node! :-)

              :-)

              BulldogLowellB 1 Reply Last reply
              0
              • A andriej

                +1 for the RX/TX LED support in code for node! :-)

                BulldogLowellB Offline
                BulldogLowellB Offline
                BulldogLowell
                Contest Winner
                wrote on last edited by
                #7

                @andriej said:

                +1 for the RX/TX LED support in code for node! :-)

                ++ to include the new RGB implementation along with this mod!

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  Meister_Petz
                  wrote on last edited by
                  #8

                  now without delay() but with LEDs are on for a number of loops (millis()) didn't work smoothly)

                     #include <MySensor.h>
                      #include <SPI.h>
                      MySensor gw;
                      
                      //-----------------------------------------------------------------------------------------------------------
                      //-----------------------------------------------------------------------------------------------------------
                      //-----------------------------------------------------------------------------------------------------------
                      // DEFINITIONS
                      //-----------------------------------------------------------------------------------------------------------
                      
                        //------------------------------------------------------------------------
                        // POWER RX TX LED
                        //------------------------------------------------------------------------
                        // Definitions 
                        
                             // choose one Mode
                               // All with one LED => LEDMode = 1
                               // POWER seperate   => LEDMode = 2
                               // only TX and RX   => LEDMode = 3 
                               // 3 seperate LEDS  => LEDMode = 4
                               // RX TX combined, no PWR LED  => LEDMode = 5
                               // for a power LED, I would connect a LED between GND and VCC in general.
                               
                             const int LEDMode = 5; // 2 3 4 5 (0 is off)
                             
                             // does not need to be modified
                             // Mode 1
                             #define LEDPwrRXTXPin 4
                             
                             // Mode 2
                             #define LEDPwrPin1 3
                             #define LEDRXTXPin 4
                             
                             // Mode 3
                             #define LEDRXPin 3
                             #define LEDTXPin 4
                             
                             // Mode 4
                             #define LEDPwrPin2 14
                             #define LEDRXPin2 3
                             #define LEDTXPin2 4
                             
                             // Mode 5
                             #define LEDRXTXPin2 4
                    
                             int blinkRX = 0;
                             int blinkTX = 0;
                             int blinkLoopTX = 0;
                             int blinkOffTX = 500; // number of Loops until blink is off
                             int blinkLoopRX = 0;
                             int blinkOffRX = 500; // number of Loops until blink is off
                         
                      //-----------------------------------------------------------------------------------------------------------
                      //-----------------------------------------------------------------------------------------------------------
                      //-----------------------------------------------------------------------------------------------------------
                      // VOID SETUP - VOID SETUP - VOID SETUP - VOID SETUP - VOID SETUP
                      //-----------------------------------------------------------------------------------------------------------
                      
                       void setup()  
                      {  
                        gw.begin(incomingMessage, AUTO, true);
                            
                        //------------------------------------------------------------------------
                        // POWER RX TX LED
                        //------------------------------------------------------------------------
                        // VOID SETUP
                            // does not need to be modified
                             // All with one LED => LEDMode = 1
                             if (LEDMode == 1){
                               pinMode(LEDPwrRXTXPin, OUTPUT);
                             }
                               
                             // POWER seperate => LEDMode = 2
                             if (LEDMode == 2){
                               pinMode(LEDPwrPin1, OUTPUT);
                               pinMode(LEDRXTXPin, OUTPUT);
                             }
                               
                             // only TX and RX => LEDMode = 3
                             if (LEDMode == 3){
                               pinMode(LEDRXPin, OUTPUT);
                               pinMode(LEDTXPin, OUTPUT);
                             }
                               
                             // 3 seperate LEDS => LEDMode = 4
                             if (LEDMode == 4){
                               pinMode(LEDPwrPin2, OUTPUT);
                               pinMode(LEDTXPin, OUTPUT);
                               pinMode(LEDRXPin, OUTPUT);
                             }
                             
                             // no POWERLEd only RX TX combined => LEDMode = 5
                             if (LEDMode == 5){
                               pinMode(LEDRXTXPin2, OUTPUT);
                             }
                      }
                     
                      
                      //-----------------------------------------------------------------------------------------------------------
                      //-----------------------------------------------------------------------------------------------------------
                      //-----------------------------------------------------------------------------------------------------------
                      // VOID LOOP - VOID LOOP - VOID LOOP - VOID LOOP - VOID LOOP - VOID LOOP
                      //-----------------------------------------------------------------------------------------------------------
                      
                      //  Check if digital input has changed and send in new value
                      void loop() 
                      {
                        gw.process();
                        
                        //------------------------------------------------------------------------
                        // POWER RX TX LED
                        //------------------------------------------------------------------------
                        // VOID LOOP
                        // does not need to be modified
                        
                        if (LEDMode == 1){
                          if (blinkTX == 0 && blinkRX == 0){digitalWrite(LEDPwrRXTXPin,HIGH);}
                          if (blinkTX == 1 || blinkRX == 1){
                            digitalWrite(LEDRXTXPin, LOW);
                            if (blinkLoopTX >= blinkOffTX){ blinkTX = 0; blinkRX = 0; blinkLoopTX = 0;}
                            blinkLoopTX++;
                          }
                        }
                        
                        if (LEDMode == 2){
                          digitalWrite(LEDPwrPin1,HIGH);
                          if (blinkTX == 0 && blinkRX == 0){digitalWrite(LEDRXTXPin,LOW);}
                          if (blinkTX == 1 || blinkRX == 1){
                            digitalWrite(LEDRXTXPin, HIGH);
                            if (blinkLoopTX >= blinkOffTX){ blinkTX = 0; blinkRX = 0; blinkLoopTX = 0;}
                            blinkLoopTX++;
                          }
                        }
                        
                        if (LEDMode == 3){
                          digitalWrite(LEDRXPin,LOW);
                          if (blinkTX == 0){digitalWrite(LEDTXPin,LOW);}
                          if (blinkTX == 1){
                            digitalWrite(LEDTXPin, HIGH);
                            if (blinkLoopTX >= blinkOffTX){ blinkTX = 0; blinkLoopTX = 0;}
                            blinkLoopTX++;
                          }
                          if (blinkRX == 0){digitalWrite(LEDRXPin,LOW);}
                          if (blinkRX == 1){
                            digitalWrite(LEDRXPin, HIGH);
                            if (blinkLoopRX >= blinkOffRX){ blinkRX = 0; blinkLoopRX = 0;}
                            blinkLoopRX++;
                          }
                        }
                        
                        if (LEDMode == 4){
                          digitalWrite(LEDPwrPin2,HIGH);
                          if (blinkTX == 0){digitalWrite(LEDTXPin2,LOW);}
                          if (blinkTX == 1){
                            digitalWrite(LEDTXPin2, HIGH);
                            if (blinkLoopTX >= blinkOffTX){ blinkTX = 0; blinkLoopTX = 0;}
                            blinkLoopTX++;
                          }
                          if (blinkRX == 0){digitalWrite(LEDRXPin2,LOW);}
                          if (blinkRX == 1){
                            digitalWrite(LEDRXPin2, HIGH);
                            if (blinkLoopRX >= blinkOffRX){ blinkRX = 0; blinkLoopRX = 0;}
                            blinkLoopRX++;
                          }
                          
                        }
                        if (LEDMode == 5){
                          if (blinkTX == 0 && blinkRX == 0){digitalWrite(LEDRXTXPin2,LOW);}
                          if (blinkTX == 1 || blinkRX == 1){
                            digitalWrite(LEDRXTXPin2, HIGH);
                            if (blinkLoopTX >= blinkOffTX){ blinkTX = 0; blinkRX = 0; blinkLoopTX = 0;}
                            blinkLoopTX++;
                          }
                        }
                        
                        //------------------------------------------------------------------------
                        // YOUR CODE
                        //------------------------------------------------------------------------
                        // VOID LOOP
                    
                        // !!! at  gw.send(msg.set...); there also needs to be a - blinkTX = 1; - !!! 
                        
                      }
                     
                      //------------------------------------------------------------------------
                      //------------------------------------------------------------------------
                      //------------------------------------------------------------------------
                      // VOID INCOMING MESSAGE - VOID INCOMING MESSAGE - VOID INCOMING MESSAGE
                      //------------------------------------------------------------------------
                      
                      void incomingMessage(const MyMessage &message) {
                        //------------------------------------------------------------------------
                        // POWER RX TX LED
                        //------------------------------------------------------------------------
                        // INCOMING MESSAGE
                        blinkRX = 1;
                       
                        //------------------------------------------------------------------------
                        // YOUR CODE
                        //------------------------------------------------------------------------
                        // INCOMING MESSAGE
                      
                      }
                  
                  1 Reply Last reply
                  2
                  • AWIA Offline
                    AWIA Offline
                    AWI
                    Hero Member
                    wrote on last edited by AWI
                    #9

                    I use something similar mainly to show if messages are received. For this purpose I created a small class/ library to blink and time LED's. The class uses a similar syntax as Bounce2 for assigning and handling LED's attached to output pins. LedFlash.

                    A code example:
                    https://codebender.cc/sketch:85200

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    14

                    Online

                    11.7k

                    Users

                    11.2k

                    Topics

                    113.0k

                    Posts


                    Copyright 2019 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                    • Login

                    • Don't have an account? Register

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