开关控制小灯让两个电路元件联控

[复制链接]
查看: 102   回复: 0

138

主题

138

帖子

795

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
795
2023-7-2 15:05:20   显示全部楼层   阅读模式  
功能:用一个小的四角蜘蛛按钮开关,控制一个小灯泡得明暗,按下熄灭 放开就是亮

实拍电路



开关控制小灯.jpg

接线图

1.png

代码:

  1. //定义作用灯光引脚
  2. int lightFoot = 12;
  3. int OpenFoot = 8;

  4. void setup() {
  5.   //初始化数字引脚LED_BUILTIN作为输出。
  6.   Serial.begin(9600);  //初始化串口通讯
  7.   pinMode(lightFoot, OUTPUT);

  8.   pinMode(OpenFoot, INPUT);
  9. }

  10. // the loop function runs over and over again forever
  11. void loop() {

  12.   int openNow = digitalRead(OpenFoot);  //显示按键状态
  13.   Serial.println(openNow);              //打印按键状态
  14.   delay(10);

  15.   if (openNow) {
  16.     digitalWrite(lightFoot, LOW);

  17.   } else {
  18.     digitalWrite(lightFoot, HIGH);
  19.   }

  20.   // digitalWrite(lightFoot, HIGH);  // 定义得12好引脚高电平点亮
  21.   // delay(5000);                    // 延迟500毫秒
  22.   // digitalWrite(lightFoot, LOW);   // 定义得12好引脚低电平熄灭
  23.   // delay(1000);                    //延迟500毫秒
  24. }
复制代码

一样得电路 通过时间戳写浅按下开灯 长按关灯


  1. //定义作用灯光引脚
  2. int lightFoot = 12;
  3. int OpenFoot = 8;

  4. int buttonState = 0;      // 按钮的当前状态
  5. int lastButtonState = 0;  // 按钮的先前状态
  6. int startPressed = 0;     // 按下按钮的那一刻
  7. int endPressed = 0;       // 松开按钮的那一刻
  8. int holdTime = 0;         // 按钮按住了多长时间
  9. int idleTime = 0;         // 按钮闲置了多长时间

  10. class btn {
  11. public:
  12.   int now = 2;
  13. };
  14. btn a;  //实例化一下

  15. void setup() {
  16.   //初始化数字引脚LED_BUILTIN作为输出。
  17.   Serial.begin(9600);  //初始化串口通讯
  18.   pinMode(lightFoot, OUTPUT);

  19.   pinMode(OpenFoot, INPUT);
  20. }

  21. // the loop function runs over and over again forever
  22. void loop() {


  23.   buttonState = digitalRead(OpenFoot);  //读取脚位显示状态显示按键状态
  24.   Serial.println(buttonState);
  25.   delay(500);

  26.   if (buttonState != lastButtonState) {  // button state changed
  27.     updateState();
  28.   }
  29.   lastButtonState = buttonState;
  30.     // int openNow = digitalRead(OpenFoot);  //显示按键状态
  31.     // Serial.println(openNow);              //打印按键状态
  32.     delay(1000);


  33.   // if (openNow) {
  34.   //   digitalWrite(lightFoot, HIGH);

  35.   // } else {
  36.   //   digitalWrite(lightFoot, LOW);
  37.   // }

  38.   // digitalWrite(lightFoot, HIGH);  // 定义得12好引脚高电平点亮
  39.   // delay(5000);                    // 延迟500毫秒
  40.   // digitalWrite(lightFoot, LOW);   // 定义得12好引脚低电平熄灭
  41.   // delay(1000);                    //延迟500毫秒
  42. }

  43. void updateState() {
  44.   // the button has been just pressed
  45.   if (buttonState == HIGH) {
  46.     startPressed = millis();
  47.     idleTime = startPressed - endPressed;

  48.    digitalWrite(lightFoot, HIGH);

  49.     if (idleTime >= 500 && idleTime < 1000) {
  50.       Serial.println("按钮闲置了半秒钟");
  51.     }

  52.     if (idleTime >= 1000) {
  53.       Serial.println("按钮空闲一秒钟或更长时间");
  54.        // 定义得12好引脚低电平熄灭
  55.     }

  56.     // the button has been just released
  57.   } else {
  58.     endPressed = millis();
  59.     holdTime = endPressed - startPressed;

  60.     if (holdTime >= 1000) {
  61.       digitalWrite(lightFoot, LOW);   // 定义得12好引脚低电平熄灭
  62.       Serial.println("按钮被按住一秒钟或更长时间");
  63.     }
  64.   }
  65. };
复制代码




回复

使用道具 举报

您需要登录后才可以回帖   登录 立即注册

高级模式

南通谢凡软件科技有限公司