使用ST的Nucleo入坑Arduino,开发确实简单,分享个变频灯

2019-12-10 18:29发布

1. 安装STM32 Core支持包
2. 选择对应的板
3. 打开例程测试
4. 自由发挥

  1. int  UserButton = PC13;
  2. bool NeedBlink = false;
  3. int  KeyPreStatus = HIGH;    // 默认为未按下
  4. int  PressCnt  = 0;
  5. int  TimeCnt = 0;
  6. void setup() {
  7.   // put your setup code here, to run once:
  8.   pinMode(LED_BUILTIN, OUTPUT);
  9.   pinMode(UserButton, INPUT);
  10. }

  11. void loop() {
  12.   // 按键控制变频闪烁
  13.   if(NeedBlink == true) {
  14.     if(digitalRead(LED_BUILTIN) == HIGH) {
  15.       digitalWrite(LED_BUILTIN, LOW);
  16.     }
  17.     else {
  18.       digitalWrite(LED_BUILTIN, HIGH);
  19.     }
  20.     NeedBlink = false;
  21.   }
  22.   
  23.   if(digitalRead(UserButton) == KeyPreStatus)  // 按键扫描,消抖
  24.   {
  25.     if(KeyPreStatus == LOW) {
  26.       PressCnt++;
  27.       if((PressCnt % 50) == 0) {   // 50ms
  28.         NeedBlink = true;
  29.       }
  30.     }
  31.     else {
  32.       TimeCnt++;
  33.       if(TimeCnt > 1000) {    // 1s
  34.         TimeCnt = 0;
  35.         NeedBlink = true;
  36.       }  
  37.     }
  38.   }
  39.   else {
  40.     KeyPreStatus = digitalRead(UserButton);
  41.     PressCnt = 0;
  42.   }
  43.   
  44.   delay(1);
  45. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
styleno1
2019-12-11 13:16
串口跑得飞起。

  1. int  UserButton = PC13;
  2. bool NeedBlink = false;
  3. int  KeyPreStatus = HIGH;    // 默认为未按下
  4. int  PressCnt  = 0;
  5. int  TimeCnt = 0;
  6. float time;

  7. void setup() {
  8.   // put your setup code here, to run once:
  9.   pinMode(LED_BUILTIN, OUTPUT);
  10.   pinMode(UserButton, INPUT);
  11.   Serial.begin(115200, SERIAL_8N1);
  12. }

  13. void loop() {
  14.   // 按键控制变频闪烁
  15.   if (NeedBlink == true) {
  16.     if (digitalRead(LED_BUILTIN) == HIGH) {
  17.       digitalWrite(LED_BUILTIN, LOW);
  18.     }
  19.     else {
  20.       digitalWrite(LED_BUILTIN, HIGH);
  21.     }
  22.     NeedBlink = false;
  23.   }

  24.   if (digitalRead(UserButton) == KeyPreStatus) // 按键扫描,消抖
  25.   {
  26.     if (KeyPreStatus == LOW) {
  27.       PressCnt++;
  28.       if ((PressCnt % 50) == 0) {  // 50ms
  29.         NeedBlink = true;
  30.       }
  31.     }
  32.     else {
  33.       TimeCnt++;
  34.       if (TimeCnt > 1000) {   // 1s
  35.         TimeCnt = 0;
  36.         NeedBlink = true;
  37.       }
  38.     }
  39.   }
  40.   else {
  41.     if((KeyPreStatus == HIGH) && (digitalRead(UserButton) == LOW)) {
  42.       time = millis() / 1000.0f;
  43.       Serial.print(time);
  44.       Serial.println(" Key pressed.");
  45.     }
  46.     else if((KeyPreStatus == LOW) && (digitalRead(UserButton) == HIGH)) {
  47.       time = millis() / 1000.0f - time;
  48.       Serial.print(time);
  49.       Serial.println(" Key released.");
  50.     }
  51.     KeyPreStatus = digitalRead(UserButton);
  52.     PressCnt = 0;
  53.   }

  54.   delayMicroseconds(500);
  55. }
复制代码

一周热门 更多>