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. Development
  3. Powering a sensor with digital out

Powering a sensor with digital out

Scheduled Pinned Locked Moved Development
27 Posts 7 Posters 4.5k Views 7 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.
  • hozzeH Offline
    hozzeH Offline
    hozze
    wrote on last edited by hozze
    #1

    Hi,

    I'm trying to power a sensor with one of the digital pins of Arduino. Issue I'm facing is I'm unable to turn on digital pin, I have tried quite few options. I feel I'm missing something simple but its wrecking my brain. Can any one of you look at the code and see what I'm doing wrong, please.

    Arduino : pro mini Atmega168 3.3v

    #define MY_NODE_ID 1  // node id 
    #define MY_RADIO_NRF24  // enabling support for NRF radio module
    #define NODE_ID 1  // sensor id
    #define SENS_ON 2
    #include <MySensors.h>
    #include <SPI.h>
    
    
    MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg
    const int VAL_PROBE = 0; // initializing the moisture variable
    
    void setup()
    {
      pinMode(SENS_ON, OUTPUT);
    }
    void presentation()
    {
      present(NODE_ID, S_MOISTURE);  // presenting the sensor 
      sendSketchInfo("SoilSensor", "0.1"); //meta data 
    }
    
    void loop()
    {
      digitalWrite(SENS_ON, HIGH);
      delay(10000); // To check the input voltage on pin 2
      int moisture = analogRead(VAL_PROBE); //measuring the moisture
      send(msg.set(moisture));  // sending the data 
      sleep(1000);  // sleeping for 10 sec
    }
    
    TheoLT mfalkviddM 2 Replies Last reply
    0
    • hozzeH hozze

      Hi,

      I'm trying to power a sensor with one of the digital pins of Arduino. Issue I'm facing is I'm unable to turn on digital pin, I have tried quite few options. I feel I'm missing something simple but its wrecking my brain. Can any one of you look at the code and see what I'm doing wrong, please.

      Arduino : pro mini Atmega168 3.3v

      #define MY_NODE_ID 1  // node id 
      #define MY_RADIO_NRF24  // enabling support for NRF radio module
      #define NODE_ID 1  // sensor id
      #define SENS_ON 2
      #include <MySensors.h>
      #include <SPI.h>
      
      
      MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg
      const int VAL_PROBE = 0; // initializing the moisture variable
      
      void setup()
      {
        pinMode(SENS_ON, OUTPUT);
      }
      void presentation()
      {
        present(NODE_ID, S_MOISTURE);  // presenting the sensor 
        sendSketchInfo("SoilSensor", "0.1"); //meta data 
      }
      
      void loop()
      {
        digitalWrite(SENS_ON, HIGH);
        delay(10000); // To check the input voltage on pin 2
        int moisture = analogRead(VAL_PROBE); //measuring the moisture
        send(msg.set(moisture));  // sending the data 
        sleep(1000);  // sleeping for 10 sec
      }
      
      TheoLT Online
      TheoLT Online
      TheoL
      Contest Winner
      wrote on last edited by
      #2

      @hozze

      try this

      void loop()
      {
        digitalWrite(SENS_ON, HIGH);
      
        delay(10000); // To check the input voltage on pin 2
      // byTheo 10 seconds seems to be a bit much??
      
        int moisture = analogRead(VAL_PROBE); //measuring the moisture
      
        digitalWrite(SENS_ON, LOW); // turn it off
      //byTheo you didn't turn the pin off
      
      
        send(msg.set(moisture));  // sending the data 
        sleep(10000);  // sleeping for 10 sec
      // byTheo 1000 s isn't 10 secs 
      }
      1 Reply Last reply
      1
      • hozzeH hozze

        Hi,

        I'm trying to power a sensor with one of the digital pins of Arduino. Issue I'm facing is I'm unable to turn on digital pin, I have tried quite few options. I feel I'm missing something simple but its wrecking my brain. Can any one of you look at the code and see what I'm doing wrong, please.

        Arduino : pro mini Atmega168 3.3v

        #define MY_NODE_ID 1  // node id 
        #define MY_RADIO_NRF24  // enabling support for NRF radio module
        #define NODE_ID 1  // sensor id
        #define SENS_ON 2
        #include <MySensors.h>
        #include <SPI.h>
        
        
        MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg
        const int VAL_PROBE = 0; // initializing the moisture variable
        
        void setup()
        {
          pinMode(SENS_ON, OUTPUT);
        }
        void presentation()
        {
          present(NODE_ID, S_MOISTURE);  // presenting the sensor 
          sendSketchInfo("SoilSensor", "0.1"); //meta data 
        }
        
        void loop()
        {
          digitalWrite(SENS_ON, HIGH);
          delay(10000); // To check the input voltage on pin 2
          int moisture = analogRead(VAL_PROBE); //measuring the moisture
          send(msg.set(moisture));  // sending the data 
          sleep(1000);  // sleeping for 10 sec
        }
        
        mfalkviddM Offline
        mfalkviddM Offline
        mfalkvidd
        Mod
        wrote on last edited by
        #3

        @hozze I'm using a similar solution if my office plant monitoring. It works well. What observation made you think that it doesn't work? Have you tried measuring the output pin with a multimeter? Could you show your wiring diagram?

        1 Reply Last reply
        1
        • mfalkviddM Offline
          mfalkviddM Offline
          mfalkvidd
          Mod
          wrote on last edited by
          #4

          You could try changing

          const int VAL_PROBE = 0; // initializing the moisture variable
          

          to

          #define VAL_PROBE A0
          

          I don't see any point in declaring it const int, and I prefer to use the An naming to make it clear which pin I am using.

          1 Reply Last reply
          1
          • hozzeH Offline
            hozzeH Offline
            hozze
            wrote on last edited by hozze
            #5

            @TheoL , Thanks for the suggestion . Tried that, same result.

            @mfalkvidd , Thanks for the code suggestion, I made the change. Regarding the issue, I did check with a multi-meter and it shows 0V . To make sure I also used the example blink sketch with pin 2 as output and it is showing 3.24V I will attach the wiring diagram(I haven't drawn one). Things I noticed.

            • On commenting the Mysensor.h library and related code from above sketch I'm able to turn on the Pin
            • I tried using different digital pins and same result.
            • To make sure I measured the output pin voltage powering it with USB ( without connecting the board to radio and soil sensor ) , same result voltage is 0V
            mfalkviddM 1 Reply Last reply
            0
            • hozzeH hozze

              @TheoL , Thanks for the suggestion . Tried that, same result.

              @mfalkvidd , Thanks for the code suggestion, I made the change. Regarding the issue, I did check with a multi-meter and it shows 0V . To make sure I also used the example blink sketch with pin 2 as output and it is showing 3.24V I will attach the wiring diagram(I haven't drawn one). Things I noticed.

              • On commenting the Mysensor.h library and related code from above sketch I'm able to turn on the Pin
              • I tried using different digital pins and same result.
              • To make sure I measured the output pin voltage powering it with USB ( without connecting the board to radio and soil sensor ) , same result voltage is 0V
              mfalkviddM Offline
              mfalkviddM Offline
              mfalkvidd
              Mod
              wrote on last edited by mfalkvidd
              #6

              @hozze looks like good troubleshooting, great work.

              Very interesting that it works when uncommenting the MySensors stuff. I think there are some leds blinking features in 2.0 (have not yet moved to 2.0 myself so I don't know more than what I've read in the forum), but I think that is only enabled for gateways.

              Does it help if you remove include <SPI.h>? It looks like SPI is not used so it shouldn't make a difference but you might as well remove it if you aren't using it.

              YveauxY 1 Reply Last reply
              2
              • mfalkviddM mfalkvidd

                @hozze looks like good troubleshooting, great work.

                Very interesting that it works when uncommenting the MySensors stuff. I think there are some leds blinking features in 2.0 (have not yet moved to 2.0 myself so I don't know more than what I've read in the forum), but I think that is only enabled for gateways.

                Does it help if you remove include <SPI.h>? It looks like SPI is not used so it shouldn't make a difference but you might as well remove it if you aren't using it.

                YveauxY Offline
                YveauxY Offline
                Yveaux
                Mod
                wrote on last edited by
                #7

                @mfalkvidd said:

                there are some leds blinking features in 2.0

                This feature is also present in previous versions and not limited to gateways.
                Pin 2 however is never used for leds as it is the default irq pin for nRF.
                Try with another pin, e.g. 4/5/6 and see if that makes a difference.

                http://yveaux.blogspot.nl

                1 Reply Last reply
                0
                • hozzeH Offline
                  hozzeH Offline
                  hozze
                  wrote on last edited by
                  #8

                  @mfalkvidd : Removed SPI.h , it didn't help though. Thanks for pointers on cleaning up the code :smiley:
                  @Yveaux :
                  Tried with pin 5 , same result.
                  Tried using a different pro mini ( Atmega328 16Mhz 5 v ) got same result , no output on pin :expressionless:

                  YveauxY 1 Reply Last reply
                  0
                  • hozzeH hozze

                    @mfalkvidd : Removed SPI.h , it didn't help though. Thanks for pointers on cleaning up the code :smiley:
                    @Yveaux :
                    Tried with pin 5 , same result.
                    Tried using a different pro mini ( Atmega328 16Mhz 5 v ) got same result , no output on pin :expressionless:

                    YveauxY Offline
                    YveauxY Offline
                    Yveaux
                    Mod
                    wrote on last edited by
                    #9

                    @hozze make sure you don't define MY_LEDS_BLINKING_FEATURE or MY_INCLUSION_MODE_FEATURE, as their pin mappings might interfere with your application.

                    http://yveaux.blogspot.nl

                    1 Reply Last reply
                    2
                    • hozzeH Offline
                      hozzeH Offline
                      hozze
                      wrote on last edited by
                      #10

                      @Yveaux I don't have those defined. Below is my current code.

                      #define MY_NODE_ID 1  // node id 
                      #define MY_RADIO_NRF24  // enabling support for NRF radio module
                      #define NODE_ID 1  // sensor id
                      #define SENS_ON 5
                      #define VAL_PROBE A0
                      #include <MySensors.h>
                      
                      MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg
                      
                      void setup()
                      {
                        pinMode(SENS_ON, OUTPUT);
                      }
                      
                      void presentation()
                      {
                        present(NODE_ID, S_MOISTURE);  // presenting the sensor 
                        sendSketchInfo("SoilSensor", "0.1"); //meta data 
                      }
                      
                      void loop()
                      {
                        digitalWrite(SENS_ON, HIGH);
                        delay(1000); // To check the input voltage of pin 2
                        int moisture = analogRead(VAL_PROBE); //measuring the moisture
                        send(msg.set(moisture));  // sending the data 
                        digitalWrite(SENS_ON, LOW); // turn it off
                      //  sleep(1000);  // sleeping for 10 sec
                      }
                      

                      An as soon as I comment it out like below the pin out on 5 works

                      #define MY_NODE_ID 1  // node id 
                      #define MY_RADIO_NRF24  // enabling support for NRF radio module
                      #define NODE_ID 1  // sensor id
                      #define SENS_ON 5
                      #define VAL_PROBE A0
                      //#include <MySensors.h>
                      
                      MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg
                      
                      void setup()
                      {
                        pinMode(SENS_ON, OUTPUT);
                      }
                      
                      void presentation()
                      {
                      //  present(NODE_ID, S_MOISTURE);  // presenting the sensor 
                      //  sendSketchInfo("SoilSensor", "0.1"); //meta data 
                      }
                      
                      void loop()
                      {
                        digitalWrite(SENS_ON, HIGH);
                        delay(1000); // To check the input voltage of pin 2
                        int moisture = analogRead(VAL_PROBE); //measuring the moisture  
                      // send(msg.set(moisture));  // sending the data 
                        digitalWrite(SENS_ON, LOW); // turn it off
                      //  sleep(1000);  // sleeping for 10 sec
                      }
                      
                      YveauxY 1 Reply Last reply
                      0
                      • hozzeH hozze

                        @Yveaux I don't have those defined. Below is my current code.

                        #define MY_NODE_ID 1  // node id 
                        #define MY_RADIO_NRF24  // enabling support for NRF radio module
                        #define NODE_ID 1  // sensor id
                        #define SENS_ON 5
                        #define VAL_PROBE A0
                        #include <MySensors.h>
                        
                        MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg
                        
                        void setup()
                        {
                          pinMode(SENS_ON, OUTPUT);
                        }
                        
                        void presentation()
                        {
                          present(NODE_ID, S_MOISTURE);  // presenting the sensor 
                          sendSketchInfo("SoilSensor", "0.1"); //meta data 
                        }
                        
                        void loop()
                        {
                          digitalWrite(SENS_ON, HIGH);
                          delay(1000); // To check the input voltage of pin 2
                          int moisture = analogRead(VAL_PROBE); //measuring the moisture
                          send(msg.set(moisture));  // sending the data 
                          digitalWrite(SENS_ON, LOW); // turn it off
                        //  sleep(1000);  // sleeping for 10 sec
                        }
                        

                        An as soon as I comment it out like below the pin out on 5 works

                        #define MY_NODE_ID 1  // node id 
                        #define MY_RADIO_NRF24  // enabling support for NRF radio module
                        #define NODE_ID 1  // sensor id
                        #define SENS_ON 5
                        #define VAL_PROBE A0
                        //#include <MySensors.h>
                        
                        MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg
                        
                        void setup()
                        {
                          pinMode(SENS_ON, OUTPUT);
                        }
                        
                        void presentation()
                        {
                        //  present(NODE_ID, S_MOISTURE);  // presenting the sensor 
                        //  sendSketchInfo("SoilSensor", "0.1"); //meta data 
                        }
                        
                        void loop()
                        {
                          digitalWrite(SENS_ON, HIGH);
                          delay(1000); // To check the input voltage of pin 2
                          int moisture = analogRead(VAL_PROBE); //measuring the moisture  
                        // send(msg.set(moisture));  // sending the data 
                          digitalWrite(SENS_ON, LOW); // turn it off
                        //  sleep(1000);  // sleeping for 10 sec
                        }
                        
                        YveauxY Offline
                        YveauxY Offline
                        Yveaux
                        Mod
                        wrote on last edited by
                        #11

                        @hozze it's strange that you only measure 3.24V on the output pin if you're using a 5V pro mini. This is IMHO an indication that something is wrong, also when your pin does seem to toggle.

                        http://yveaux.blogspot.nl

                        TheoLT 1 Reply Last reply
                        0
                        • hozzeH Offline
                          hozzeH Offline
                          hozze
                          wrote on last edited by
                          #12

                          I see that output on pro mini Atmega168 3.3v with commented sketch.
                          I tried with a different 5v pro mini Atmega368 and I'm getting 5.04V on output pin with commented sketch.

                          1 Reply Last reply
                          0
                          • YveauxY Yveaux

                            @hozze it's strange that you only measure 3.24V on the output pin if you're using a 5V pro mini. This is IMHO an indication that something is wrong, also when your pin does seem to toggle.

                            TheoLT Online
                            TheoLT Online
                            TheoL
                            Contest Winner
                            wrote on last edited by
                            #13

                            @Yveaux @hozze Are you sure it's a ProMini 5V? Could you measure the voltage on the Raw pin.

                            I've received some Pro Mini 3.3V while I actually did order 5V.

                            It's just a guess.

                            hozzeH 1 Reply Last reply
                            0
                            • TheoLT TheoL

                              @Yveaux @hozze Are you sure it's a ProMini 5V? Could you measure the voltage on the Raw pin.

                              I've received some Pro Mini 3.3V while I actually did order 5V.

                              It's just a guess.

                              hozzeH Offline
                              hozzeH Offline
                              hozze
                              wrote on last edited by
                              #14

                              @TheoL I have two pro mini's. I measured the voltage across a output pin ( HIGH ) and GND and it gives me near 5V on one and near 3.3V on another .So it looks as if I do have 5V pro mini.

                              I have tried few other sketches on both, seems they are working fine, I face the specific issue only when including the Mysensor.h library. I will give it a try on a nano that I have and see what happens.

                              TheoLT 1 Reply Last reply
                              0
                              • hozzeH hozze

                                @TheoL I have two pro mini's. I measured the voltage across a output pin ( HIGH ) and GND and it gives me near 5V on one and near 3.3V on another .So it looks as if I do have 5V pro mini.

                                I have tried few other sketches on both, seems they are working fine, I face the specific issue only when including the Mysensor.h library. I will give it a try on a nano that I have and see what happens.

                                TheoLT Online
                                TheoLT Online
                                TheoL
                                Contest Winner
                                wrote on last edited by
                                #15

                                @hozze It was just a guess. I once compiled a sketch for a 5V and uploaded it to a ProMini 3.3V. Took me a while before I noticed my mistake. I just didn;t understand why my Arduino couldn't control my relay boards ;-)

                                hozzeH 1 Reply Last reply
                                0
                                • TheoLT TheoL

                                  @hozze It was just a guess. I once compiled a sketch for a 5V and uploaded it to a ProMini 3.3V. Took me a while before I noticed my mistake. I just didn;t understand why my Arduino couldn't control my relay boards ;-)

                                  hozzeH Offline
                                  hozzeH Offline
                                  hozze
                                  wrote on last edited by
                                  #16

                                  @TheoL :smiley: me too learning things the hard way.

                                  Thanks for all the pointers that you guys are giving . Looks as if I'm in the right place and with a great community,

                                  Let me tinker a bit more and see if I can get somewhere, if anyone can give any further info kindly do.

                                  Boots33B 1 Reply Last reply
                                  1
                                  • hozzeH hozze

                                    @TheoL :smiley: me too learning things the hard way.

                                    Thanks for all the pointers that you guys are giving . Looks as if I'm in the right place and with a great community,

                                    Let me tinker a bit more and see if I can get somewhere, if anyone can give any further info kindly do.

                                    Boots33B Offline
                                    Boots33B Offline
                                    Boots33
                                    Hero Member
                                    wrote on last edited by
                                    #17

                                    @hozze You should enable debugging at the top of your sketch with

                                    // Enable debug prints to serial monitor
                                    #define MY_DEBUG
                                    

                                    and check the serial monitor to see if the radio is initialising . Maybe the loop part of the program will not run if this does not happen. That could be why commenting out the #include <MySensors.h> allows it to work.

                                    You might also use wait instead of delay

                                    1 Reply Last reply
                                    1
                                    • hozzeH Offline
                                      hozzeH Offline
                                      hozze
                                      wrote on last edited by
                                      #18

                                      @Boots33 , I enabled MY_DEBUG. Sorry if I sound stupid. I have connected the pro mini to computer with USB serial CP2102 for programming/serial debug , at the same time can I power the pro mini + Radio with an external power supply 3.3V ?

                                      I did something similar with a ATTINY85 few days back and bricked it :cry: ( Connected it to USB and same time powered it )

                                      mfalkviddM Boots33B 2 Replies Last reply
                                      0
                                      • hozzeH hozze

                                        @Boots33 , I enabled MY_DEBUG. Sorry if I sound stupid. I have connected the pro mini to computer with USB serial CP2102 for programming/serial debug , at the same time can I power the pro mini + Radio with an external power supply 3.3V ?

                                        I did something similar with a ATTINY85 few days back and bricked it :cry: ( Connected it to USB and same time powered it )

                                        mfalkviddM Offline
                                        mfalkviddM Offline
                                        mfalkvidd
                                        Mod
                                        wrote on last edited by
                                        #19

                                        @hozze connect gnd from the serial adapter AND the external power supply to gnd on the Arduino. Connect + on the external adapter to the pin you normally use (vcc or raw). Do not connect + from the serial adapter. That's it.

                                        1 Reply Last reply
                                        1
                                        • hozzeH hozze

                                          @Boots33 , I enabled MY_DEBUG. Sorry if I sound stupid. I have connected the pro mini to computer with USB serial CP2102 for programming/serial debug , at the same time can I power the pro mini + Radio with an external power supply 3.3V ?

                                          I did something similar with a ATTINY85 few days back and bricked it :cry: ( Connected it to USB and same time powered it )

                                          Boots33B Offline
                                          Boots33B Offline
                                          Boots33
                                          Hero Member
                                          wrote on last edited by
                                          #20

                                          @hozze The whole purpose of a good forum is for people to share ideas and knowledge. So never be worried about asking questions. :)

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


                                          29

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.1k

                                          Posts


                                          Copyright 2025 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