Programming Arduino Getting Started with Sketches


loop function of sketch 6-04, the function reads the digital input and assigns its value to a variable  switchOpen



Yüklə 5,42 Kb.
Pdf görüntüsü
səhifə49/78
tarix22.12.2023
ölçüsü5,42 Kb.
#189286
1   ...   45   46   47   48   49   50   51   52   ...   78
Arduino SimonMonk 2011

loop
function of sketch 6-04, the function reads the digital input and
assigns its value to a variable 
switchOpen
. This is a 0 if the button is pressed and a 1 if it
isn’t (remember that the pin is pulled up to 1 when the button is not pressed).
When you program 
digitalWrite
to turn the LED on or off, you need to reverse this
value. You do this using the 
!
or 
not
operator.
If you upload this sketch and connect your wire between D5 and GND (see 
Figure 6-9
),
you should see the LED light. Bouncing may be going on here, but it is probably too fast
for you to see and does not matter.
One situation where key bouncing would matter is if you were making your switch
toggle the LED on and off. That is, if you press the button, the LED comes on and stays
on, and when you press the button again, it turns off. If you had a button that bounced,
then whether the LED was on or off would just depend on whether you had an odd or even
number of bounces.
Sketch 6-05 just toggles the LED without any attempt at “debouncing.” Try it out using
your wire as a switch between pin D5 and GND:


You will probably find that sometimes the LED toggles, but other times it appears not to
toggle. This is bouncing in action!
A simple way to tackle this problem is simply to add a delay after you detect the first
button press, as shown in sketch 6-06:


Figure 6-9
Using a wire as a switch
By putting a delay here, nothing else can happen for 500 milliseconds, by which time
any bouncing will have subsided. You should find that this makes the toggling much more
reliable. An interesting side-effect is that if you hold the button down, the LED just keeps
flashing.
If that is all there is to the sketch, then this delay is not a problem. However, if you do
more in the 
loop
, then using a delay can be a problem; for example, the program would be
unable to detect the press of any other button during that 500 milliseconds.
So, this approach is sometimes not good enough and you will need to be a bit more
sophisticated. You can write your own advanced debouncing code by hand, but doing so
gets complicated and fortunately some fine folks have done all the work for you.



Yüklə 5,42 Kb.

Dostları ilə paylaş:
1   ...   45   46   47   48   49   50   51   52   ...   78




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin