Lesson 3--Microduino "Button Controlled LED"

来自Microduino Wikipedia
Jasonsheng讨论 | 贡献2014年2月16日 (日) 07:50的版本
跳转至: 导航搜索
Language English

Objective

The first two experiments showed you how to use software to control the LED directly. If we add a button, to control the LED light, then realize the combination of hardware and software. Actually that two experiment use Microduino I/O port as the output to control the LED, if want to use the button, how to monitor the input signal of the button? Today we will take button as an example to show how to use the Microduino as the input.


Equipment

  • Microduino-Core
  • Microduino-FT232R
  • Other hardware equipment
    • Breadboard Jumper one box
    • Breadboard one piece
    • LED Light-emitting diodes one
    • 220ohm resistor one
    • Button one
    • USB Data cable one

Button

  • Button principle
Button.jpg

If use this wrap button making PCB, if bad wiring, it has two pairs of pins available always conduction as a conductor wiring.

  • Button connection
Button connection.jpg

Experimental schematic

Button schematic.jpg

Using external pulldown resistor, when didn't press, it is low "0", press for high.


Program

  • LED display button value
const int buttonPin = 2;     // Define button input pin
const int ledPin =  13;     //Define LED pin
int buttonState = 0;        //Initialize the button value
void setup() {
  pinMode(ledPin, OUTPUT);    //Set the LED pin as output    
  pinMode(buttonPin, INPUT); //Set button pin as intpu    
}
void loop(){
  buttonState = digitalRead(buttonPin);//Read the value from the buttonPin
  if (buttonState == HIGH) {     
    digitalWrite(ledPin, HIGH); //If the button input signal is high, the LED will light (LED connect method is that anode connects control pin, cathode connects GND)
  } 
  else {
    digitalWrite(ledPin, LOW); //LED goes out
  }
}
  • LED voltage flip
const int buttonPin = 2;     // Define button input pin
const int ledPin =  13;     

int buttonState = 0; 
boolean led;         //Define LED as boolean(true or false)
void setup() {
  pinMode(ledPin, OUTPUT);      
  // pinMode(buttonPin, INPUT); //Set the button pin as input     
  pinMode(buttonPin, INPUT_PULLUP);//Set button pin as interanl pull-up input    
}
void loop(){
  buttonState = digitalRead(buttonPin);
  if (buttonState ==HIGH) //Use the external pull-down, because the initial state is low, only the press is high, the press was flipped, or not it will blink.
  {  
    delay(200);                     //Short time delay, stabilization
    // delay(1000);               //Long time press
    // if (buttonState == LOW)  //Check still is low
    led=!led;                   //LED state flip
  } 
  digitalWrite(ledPin, led);  
}

This experiment should be noted the button anti-shake, you can adjust the delay time, or at both ends of the input signal plus a 104 capacitor, then voltage signal does not mutant. The detailed button anti-shake information, please refer to:http://www.geek-workshop.com/thread-74-1-1.html

digitalRead()usage

Read a Pin's value and return HIGH or LOW.

Result

  • Program 1:LED display input button value. High value will light LED, or Put out the LED.
  • Program 2:Each time you press the button, led voltage flipping once, pay attention to button anti-shake.

Video