“第五课--按钮PWM控制LED亮度实验/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
原理图
Pkj讨论 | 贡献
程序
第28行: 第28行:
 
==程序==
 
==程序==
 
<source lang="cpp">
 
<source lang="cpp">
 +
int led=4;
 +
int butt0n_1=2;
 +
int butt0n_2=3;
 
int n=0;
 
int n=0;
 +
 
void setup ()
 
void setup ()
 
{
 
{
   pinMode(2, INPUT_PULLDOWN); //设置为内部下拉
+
   pinMode(butt0n_1, INPUT_PULLDOWN); //设置为内部下拉
   pinMode(7,INPUT_PULLUP);//设置为内部上拉
+
   pinMode(butt0n_2,INPUT_PULLUP);//设置为内部上拉
   pinMode(11,PWM);//该端口需要选择有0,1,4,11,12,14(A0),15(A1),16(A2),17(A3),18(SDA),19(SCL),20(A6),21(A7)才能PWM控制
+
   pinMode(led,PWM);//该端口需要选择有0,1,4,11,12,14(A0),15(A1),16(A2),17(A3),18(SDA),19(SCL),20(A6),21(A7)才能PWM控制
 
}
 
}
  
 
void loop()
 
void loop()
 
{
 
{
   int up =digitalRead(7);          //读取2号口的状态
+
   int up =digitalRead(butt0n_1);          //读取2号口的状态
   int down = digitalRead(2);      //读取7号口的状态   
+
   int down = digitalRead(butt0n_2);      //读取7号口的状态   
 
   if (up==HIGH)                     
 
   if (up==HIGH)                     
 
   {  
 
   {  
第46行: 第50行:
 
       n=255;
 
       n=255;
 
     }               
 
     }               
    pwmWrite(11,n*16);  //使用PWM控制11号口输出,变量n的取值范围是0- 65535
 
    delay (300);
 
 
   }
 
   }
 
   if (down==LOW)             
 
   if (down==LOW)             
第55行: 第57行:
 
       n=0;
 
       n=0;
 
     }
 
     }
    pwmWrite(11,n*16); //使用PWM控制11号口输出,变量n的取值范围是0-65535
 
    delay (300);
 
 
   }
 
   }
 +
  pwmWrite(led,n*160);  //使用PWM控制11号口输出,变量n的取值范围是0- 65535
 +
  delay (300);
 
}
 
}
 +
 +
 
</source>
 
</source>
  

2014年7月18日 (五) 09:46的版本

目的

通过按键调节led亮度逐渐亮与逐渐灭。

设备

Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。

  • 其他硬件设备
  • 其他硬件设备
    • 面包板跳线 一盒
    • 面包板 一块
    • LED发光二极管 一个
    • 220欧姆电阻 一个
    • 按键 两个
    • USB数据连接线 一根

原理图

按键接法分别采用内部上拉和外部下拉,接数字口D0-D13。led控制口必须是使用PWM: 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); //设置为内部下拉
  pinMode(butt0n_2,INPUT_PULLUP);//设置为内部上拉
  pinMode(led,PWM);//该端口需要选择有0,1,4,11,12,14(A0),15(A1),16(A2),17(A3),18(SDA),19(SCL),20(A6),21(A7)才能PWM控制
}

void loop()
{
  int up =digitalRead(butt0n_1);          //读取2号口的状态
  int down = digitalRead(butt0n_2);      //读取7号口的状态   
  if (up==HIGH)                    
  { 
    n=n+5;                         
    if (n>=255) {
      n=255;
    }              
  }
  if (down==LOW)             
  {
    n=n-5;
    if (n<=0) {
      n=0;
    }
  }
  pwmWrite(led,n*160);   //使用PWM控制11号口输出,变量n的取值范围是0- 65535 
  delay (300);
}

结果

一个按键使led亮度逐级递减,另一个按键使led亮度逐级递增。

视频