Header Ads Widget

Example 4-5. Another new and improved formula for button presses—with simple debouncing!

កូដបិទបើកLEDដោយបើButton

Example 4-5. Another new and improved formula for button presses—with simple debouncing!

const int LED = 13; // the pin for the LED
const int BUTTON = 7; // the input pin where the
// pushbutton is connected
int val = 0; // val will be used to store the state
// of the input pin
int old_val = 0; // this variable stores the previous
// value of "val"
int state = 0; // 0 = LED off and 1 = LED on
void setup() {
pinMode(LED, OUTPUT); // tell Arduino LED is an output
pinMode(BUTTON, INPUT); // and BUTTON is an input
}
void loop(){
val = digitalRead(BUTTON); // read input value and store it
// yum, fresh
// check if there was a transition
if ((val == HIGH) && (old_val == LOW)){
state = 1 - state;
delay(10);
}
old_val = val; // val is now old, let's store it
if (state == 1) {
digitalWrite(LED, HIGH); // turn LED ON
} else {
digitalWrite(LED, LOW);
}
}
if ((val == LOW) && (old_val == HIGH)) {
delay(10);
}

ដំណើការកូដ

ទី១ ប្រកាស ជើងLED នៅជើងទី១៣
ទី២ ប្រកាស val=0 សម្រាប់ store តម្ដៃ state
ទី៣ ប្រកាស state សម្រាប់បិទបើកអំពូល LED

នៅក្នុង setup


ទី១ pinMode(LED, OUTPUT); // tell Arduino LED is an output
ទី២ pinMode(BUTTON, INPUT); // and BUTTON is an input

និយាយអំពីដំណើការLoop

  • នៅពេលដែលយើងចុចBotton លើកទី១ដោយមិនទាន់ដកដៃចេញ(press)

  • val=1;(ព្រោះ val = digitalRead(BUTTON)
    បន្ទាប់វាឆែកcodition ទី១ យើងឃើងថា codition ទី១ ពិត ព្រោះ val=1 and old_val=0;
    នោះវាគណនា state ដោយ state= 1-state = 1 ព្រោះ (state នៅខាងលើ ប្រកាស state =0 )
    old_val=1;
    បន្ទាប់វាឆែក codition ទ២ ឃើញថាពិត(ព្រោះ state=1)
    នោះវាធ្វើcodition ទី២ គឹអោយ LED ភ្លឺ
    បន្ទាប់វាឆែក codition ទី៣ ប៉ុន្ដែមិនពិត ព្រោះ (state =១)
    codition ទី៣មិនដំណើរការ។
  • នៅពេលដែលយើងដកដៃចេញនោះវាធ្វើម្ដងទៀត(loop2)

  • var=0;
    codition ទី១ មិនពិត (ព្រោះ val=0)នោះcodition ទី១មិនដំណើការ
    old_val=0;
    codition ទ២ ពិត (ព្រោះ state =1 ដ ដែល)នោះវាធ្វើអោយ ledភ្លឺដដែល
    codition ទី៣ មិនពិត មិនដំណើការទេ

  • នៅពេលដែលយើងចុចBotton លើកទី២ដោយមិនទាន់ដកដៃចេញ(press)

  • val=1;(ព្រោះ val = digitalRead(BUTTON)
    បន្ទាប់វាឆែកcodition ទី១ យើងឃើងថា codition ទី១ ពិត ព្រោះ val=1 and old_val=0;
    នោះវាគណនា state ដោយ state= 1-state = ០ ព្រោះ (state នៅខាងលើ loop2 state =1 )
    old_val=1;
    បន្ទាប់វាឆែក codition ទី២ ឃើញថាមិនពិត(ព្រោះ state=0)
    នោះវាធ្វើcodition ទី២ មិនដំណើការទេ
    បន្ទាប់វាឆែក codition ទី៣ ឃើញថាពិត ព្រោះ (state ខុសពី១)
    codition ទី៣ដំណើរការ វាធ្វើLEd អត់ភ្លឺ។
  • នៅពេលដែលយើងដកដៃចេញនោះវាធ្វើម្ដងទៀត(loop៤)

  • var=0;
    codition ទី១ មិនពិត (ព្រោះ val=0)នោះcodition ទី១មិនដំណើការ
    old_val=0;
    codition ទ២ មិនពិតដែល (ព្រោះ state =០ ដដែល)្នោះវាធ្វើcodition ទី២ មិនដំណើការទេ
    បន្ទាប់វាឆែក codition ទី៣ ឃើញថាពិត ព្រោះ (state ខុសពី១)
    codition ទី៣ដំណើរការ វាធ្វើLEd អត់ភ្លឺដដែល។

    Post a Comment

    0 Comments