Maple Lesson 05 - The button PWM controls LED brightness

From Microduino Wiki
Jump to: navigation, search


LED has only two states on and off in other experiments, now we will use the button to control LED brightness light gradually and gradually out


Microduino-CoreSTM32 is an ARM development board using STM32F103CBT6 chip. It use special Upin7 interface, the size is similar with a coin and fully compatible other Microduino modules.

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


Buttons are used with internal pull-up and external pull-down, and then connect to the digital I/O port D0-D13. PWM must use following I/O port. 0,1,4,11,12,14(A0),15(A1),16(A2),17(A3),18(SDA),19(SCL),20(A6),21(A7)。


int led=4;
int butt0n_1=2;
int butt0n_2=3;
int n=0;

void setup ()
  pinMode(butt0n_1, INPUT_PULLDOWN); //Set to internal pull-down
  pinMode(butt0n_2,INPUT_PULLUP);//Set to internal pull-up
  pinMode(led,PWM);//This pin only can be set to port 0,1,4,11,12,14(A0),15(A1),16(A2),17(A3),18(SDA),19(SCL),20(A6),21(A7) for PWM.

void loop()
  int up =digitalRead(butt0n_1);          //Read port 2's state
  int down = digitalRead(butt0n_2);      //Read port 7's state   
  if (up==HIGH)                    
    if (n>=255) {
  if (down==LOW)             
    if (n<=0) {
  pwmWrite(led,n*160);   //Using PWM control the output of port 11, the range of the variable n is 0-65535
  delay (300);


One button makes the LED brightness progressively decreasing, and another button makes LED brightness incremental.