久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 如何使用Arduino設計延時繼電器? [打印本頁]

作者: yctjs    時間: 2024-8-30 18:42
標題: 如何使用Arduino設計延時繼電器?
如題,求大俠!

作者: msold5    時間: 2024-8-31 10:26
簡單程序直接用等待語句,復雜場合用中斷?
作者: angmall    時間: 2024-8-31 12:50
給你個參考。

int led_pin = 18;
int relay_pin = 12;
int sensor_pin = 4;

bool detected = false;
bool stop_relay = false;
unsigned long motion_stopped_time = 0; //will track the elapsed time after the motion stop

void setup() {
  pinMode(led_pin, OUTPUT);
  pinMode(relay_pin, OUTPUT);
  pinMode(sensor_pin, INPUT_PULLUP);
  Serial.begin(9600);
}


void loop(){

  if(digitalRead(sensor_pin) == HIGH){ //the sensor has detected motion

        //enclose the code here so it only executes once when motion is detected
        if(detected == false){
            Serial.println("Motion detected!");
            detected = true;

            digitalWrite(led_pin, HIGH); //turn led on
            digitalWrite(relay_pin, HIGH); //switch the relay on

        }

  }else{ //the sensor has stopped detecting motion

      if(detected == true){ //execute this only once when motion stops
            Serial.println("Motion stopped!");
            detected = false;

            digitalWrite(led_pin, LOW); //turn the led off

            motion_stopped_time = millis(); //remember the current time
            stop_relay = true;

       }else{
          if(stop_relay == true){ // ensures that this block will only execute once after the delay timer logic below

            //the current millis() time is 60sec more than the remembered time when the motion stopped
            if(millis() - motion_stopped_time >= 60000){
                digitalWrite(relay_pin, LOW); //switch the relay off
                stop_relay = false;
            }

          }
       }
  }
}


作者: jinyudz    時間: 2024-8-31 14:18
1、輸入定時延時函數數值。2、為了模擬,輸出為13,板子上面有LED觀察,可改為其它引腳為繼電器輸出。
3、2、3設定為定時開始和停止按鍵。
由于要求未說明白,本例使用MsTimer2定時器和硬件中斷,以提高穩定性。

  1. #include <MsTimer2.h>
  2. // 設定各類函數,定時、開始、停止、執行
  3. volatile int atime;
  4. volatile boolean start;
  5. volatile boolean stop;
  6. volatile boolean led;

  7. void msTimer2_func() {
  8.   start = start;
  9.   digitalWrite(13,start);
  10. }

  11. void attachInterrupt_fun_RISING_2() {
  12.   // MsTime2定時器
  13.   MsTimer2::set(atime, msTimer2_func);
  14.   MsTimer2::start();
  15. }

  16. void attachInterrupt_fun_RISING_3() {
  17.   MsTimer2::stop();
  18.   digitalWrite(13,stop);
  19. }

  20. void setup(){
  21.   atime = 5000;//定時時間設定
  22.   start = true;
  23.   stop = false;
  24.   led = true;
  25.   pinMode(2, INPUT_PULLUP);
  26.   pinMode(13, OUTPUT);//執行輸出
  27.   pinMode(3, INPUT_PULLUP);
  28.   interrupts();// 硬件中斷,2、3接開始和停止按鈕
  29.   attachInterrupt(digitalPinToInterrupt(2),attachInterrupt_fun_RISING_2,RISING);
  30.   attachInterrupt(digitalPinToInterrupt(3),attachInterrupt_fun_RISING_3,RISING);
  31. }

  32. void loop(){

  33. }
復制代碼

看能否適用這個要求。
[color=rgba(0, 0, 0, 0.85)]
作者: yctjs    時間: 2024-9-2 22:04
感謝前輩指點!的確沒有描述清楚,奉上原理圖及時序圖。煩請指點,謝謝!
如圖,按鈕AN按下后,D2、D3點亮,D4保持熄滅;按鈕松開,開始延時,D2熄滅,D3延時后熄滅,D4點亮;延時結束后全部熄滅。





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久久久久久久久国产 | 日韩香蕉视频 | 亚洲精品91天天久久人人 | 成人av播放| 日韩黄色在线观看 | 亚洲高清在线视频 | 四虎影院网站 | 国产做爰免费观看视频 | 三级黄色网 | av在线播放不卡 | 精品一区二区三区四区五区 | 91网在线| 天天操天天拍 | 福利视频一区二区 | 在线国产91 | 日本一本草久p | 五月婷婷六月激情 | 久久久久久久国产精品 | 亚洲成a人 | 亚洲精品视频在线播放 | 超碰在线人人 | 超碰成人在线观看 | 日韩欧美中文 | av每日更新 | 99精品视频免费观看 | 色就是色欧美 | 日韩av在线免费 | 久久精品国产视频 | 毛片毛片毛片毛片毛片 | 国内福利视频 | 欧美精品区 | 窝窝午夜精品一区二区 | 一级片中文字幕 | 五月av| 欧美日韩中文字幕在线 | 成人黄色小视频 | 国内精品视频 | 四虎精品在线 | 欧美一级在线 | 欧美成人猛片aaaaaaa | 成人国产精品一区二区 |