user87473: I'm a very new to Arduino and any electrical engineering, I'm learning through some Youtube tutorials.
Based on my understanding though, sending analog signals to a non-PWM pin would just check for a threshold and send either LOW or HIGH, as opposed to being able to send variable voltages to a PWM pin.
BUT ... that's not what I'm seeing in practice...
Using Arduino UNO, I made a little project, for changing a blue LED's brightness. At first I did it through a PWM pin (pin 9) and it worked flawlessly. But then I tried seeing what would happen in a non-PWM pin (pin 8), you know cause you learn by trying and experimenting. So I switched to a non-PWM pin and ... it works the same exact way ...
I can change the brightness of the LED 5 different levels ... using analogWrite ... to a non-PWM pin ...
Thanks in advance

user10794: 
Based on my understanding though, sending analog signals to a non-PWM pin would just check for a threshold and send either LOW or HIGH, as opposed to being able to send variable voltages to a PWM pin.

On the Uno you do not send analog signals anywhere. The PWM pins are merely digital outputs which turn on and off rapidly at a frequency and duty cycle that you specify.
You can, therefore, do the same thing to non-PWM pins by sending HIGH/LOW at a variable rate.
To comment more on why your code appears to be "working" we would need to see it.


What is the point of PWM pins if its also possible to send variable high/low signals to non-PWM pins?

Well, the PWM pins output high/low signals asynchronously. That is, without code having to do it. So, if you set up a timer (which is connected to the PWM pins) to output 100kHz then it will do that, regardless of what the code is doing at the time. You might be calculating prime numbers, but the hardware timers will mindlessly toggle that PWM pin on and off at the specified frequency.
If you try to make your own PWM in code, then the code has to do that and nothing else if it is going to output a consistent signal.

87473: <p>I'm a very new to Arduino and any electrical engineering, I'm learning through some Youtube tutorials.</p>
<p>Based on my understanding though, sending analog signals to a non-PWM pin would just check for a threshold and send either LOW or HIGH, as opposed to being able to send variable voltages to a PWM pin.</p>
<p><strong>BUT</strong> ... that's not what I'm seeing in practice...</p>
<p>Using Arduino UNO, I made a little project, for changing a blue LED's brightness. At first I did it through a PWM pin (pin 9) and it worked flawlessly. But then I tried seeing what would happen in a non-PWM pin (pin 8), you know cause you learn by trying and experimenting. So I switched to a non-PWM pin and ... it works the same exact way ...</p>
<p>I can change the brightness of the LED <strong>5 different levels</strong> ... using analogWrite ... to a non-PWM pin ...</p>
<p>Thanks in advance</p>
 10794: <blockquote>
<p>Based on my understanding though, sending analog signals to a non-PWM pin would just check for a threshold and send either LOW or HIGH, as opposed to being able to send variable voltages to a PWM pin.</p>
</blockquote>
<p>On the Uno you do not send analog signals anywhere. The PWM pins are merely digital outputs which turn on and off rapidly at a frequency and duty cycle that you specify.</p>
<p>You can, therefore, do the same thing to non-PWM pins by sending HIGH/LOW at a variable rate.</p>
<p>To comment more on why your code appears to be &quot;working&quot; we would need to see it.</p>
<hr />
<blockquote>
<p>What is the point of PWM pins if its also possible to send variable high/low signals to non-PWM pins?</p>
</blockquote>
<p>Well, the PWM pins output high/low signals asynchronously. That is, without code having to do it. So, if you set up a timer (which is connected to the PWM pins) to output 100kHz then it will do that, regardless of what the code is doing at the time. You might be calculating prime numbers, but the hardware timers will mindlessly toggle that PWM pin on and off at the specified frequency.</p>
<p>If you try to make your own PWM in code, then the code has to do that <strong>and nothing else</strong> if it is going to output a consistent signal.</p>
