Go Down

Topic: Controlling PWM pin (Read 561 times) previous topic - next topic

muda

I have hooked up LED driver to one of PWM pins. It is for night time moon light.
How I cut off light at day ?

   analogWrite  (moon, 0 );
or
   digitalWrite  (moon,LOW );
or ...
 

Thanks

bubulindo

Odd as it may seem...

Those are exactly the same thing:
Code: [Select]

#define HIGH 0x1
#define LOW  0x0 // <- same as 0


How do you have your LED hooked up? Is it inverted logic?
This... is a hobby.

retrolefty


I have hooked up LED driver to one of PWM pins. It is for night time moon light.
How I cut off light at day ?

   analogWrite  (moon, 0 );

Yes, that is proper form.
or
   digitalWrite  (moon,LOW );
Interesting if you dig down into the source code for the analogWrite() function, I believe that analogWrite(pin,0); results in simply using a digitalWrite(pin, LOW). As I recall in some early IDE versions the analogWrite(pin,0) showed up a bug where instead of a constant low output there was a single one count duty cycle output and would show up as as very dim light if wired to a high efficiency led. I recall hooking up my oscilloscope to a PWM output set to 0 and still seeing a single high pulse, so something was screwy with the timer counter/resetting/overflow or interrupt or something along those lines. I guess the simple fix was to have the function check for a 0 duty cycle request and just force the output pin LOW.  :D

Lefty

or ...
 

Thanks

retrolefty


Odd as it may seem...

Those are exactly the same thing:
Code: [Select]

#define HIGH 0x1
#define LOW  0x0 // <- same as 0


How do you have your LED hooked up? Is it inverted logic?


I think his question rather was to use the analogWrite or the digitalWrite function. ?

Lefty

bubulindo


Interesting if you dig down into the source code for the analogWrite() function, I believe that analogWrite(pin,0); results in simply using a digitalWrite(pin, LOW). As I recall in some early IDE versions the analogWrite(pin,0) showed up a bug where instead of a constant low output there was a single one count duty cycle output and would show up as as very dim light if wired to a high efficiency led. I recall hooking up my oscilloscope to a PWM output set to 0 and still seeing a single high pulse, so something was screwy with the timer counter/resetting/overflow or interrupt or something along those lines. I guess the simple fix was to have the function check for a 0 duty cycle request and just force the output pin LOW.  :D

Lefty


Not a bug but the way the PWM works in the AVR. I don't have the manual, or time to chase that down, but it is written there (had that problem myself before).



Odd as it may seem...

Those are exactly the same thing:
Code: [Select]

#define HIGH 0x1
#define LOW  0x0 // <- same as 0


How do you have your LED hooked up? Is it inverted logic?


I think his question rather was to use the analogWrite or the digitalWrite function. ?

Lefty


You are right. Some dyslexia there, I read two analogWrite(). Disregard my previous post.
This... is a hobby.

muda

Thanks for thorough explanation.

Cheers

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy