这几天做了一块小板子的计时器-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2524|回复: 1

这几天做了一块小板子的计时器

[复制链接]
发表于 2020-10-22 21:46 | 显示全部楼层 |阅读模式
本帖最后由 会五笔的牛 于 2020-10-23 23:04 编辑

计时器有3 个按键,
按键1——短按加秒数(加到59再按回零),长按加分数(加到99再按回零).
按键2——短按减秒数(零时按下变59),长按减分数(零时按下变99).
按键3——开始,暂停。
暂停时长按按键2所有数清零 。

b22980e9cdbaa831c9e277e72c31bd6a.gif

背面

背面

上电

上电
--.gif

开始--暂停

开始--暂停
归零.gif
 楼主| 发表于 2020-10-23 23:06 | 显示全部楼层
这里是代码:
void loop(){
  unsigned char timer0=0;
  unsigned char timer1=0;
  timer2=0;
  St_Pa=0;
  debouncer0.update();
  val0=debouncer0.read();
  debouncer1.update();
  val1=debouncer1.read();
  debouncer2.update();
  val2=debouncer2.read();
  Display_min_dot(minutes);
  Display_sec_dot(adjust_seconds);
  if((val0==HIGH)&&(old_val0==LOW)){  
   for(int r=0;r<106;r++){
    Display_min_dot(minutes);
    Display_sec_dot(adjust_seconds);
    debouncer0.update();
    val0=debouncer0.read();
    timer0=timer0+val0;
    if(val0==0){
      r=108;
    }
    delayMicroseconds(200);
  }Serial.print("timer0=");
   Serial.println(timer0);
}
old_val0=val0;
if((0<timer0)&&(timer0<49)){
  adjust_seconds =++adjust_seconds;  
  if(adjust_seconds>59){
   adjust_seconds = 0;
  }
}else if((49<timer0)&&(timer0<105)){
  Serial.println(timer0);
  minutes=minutes+1;
  if(minutes>99){
   minutes=0;
   }
  }else if(timer0>105){
    minutes=minutes+10;
    if(minutes>99){
      minutes=minutes-100;
    }
   }
  if((val1==HIGH)&&(old_val1==LOW)){  
  for(int r=0;r<106;r++){
   Display_min_dot(minutes);
   Display_sec_dot(adjust_seconds);
   debouncer1.update();
    val1=debouncer1.read();
    timer1=timer1+val1;
    if(val1==0){
      r=108;
    }
    delayMicroseconds(200);
  }
}
old_val1=val1;
if((0<timer1)&&(timer1<49)){
  adjust_seconds = --adjust_seconds;   
  if(adjust_seconds<0){
   adjust_seconds=59;
  }
}else if((49<timer1)&&(timer1<105)){
   minutes=minutes-1;
   if(minutes<0){
    minutes=99;
   }
  }else if(timer1>105){
    minutes=minutes-10;
    if(minutes<0){
      minutes=100+minutes;
    }
   }
if((val2==HIGH)&&(old_val2==LOW)){
   St_Pa=!St_Pa;
    if(adjust_seconds!=0){
     for(;adjust_seconds>0;adjust_seconds--){
      if(adjust_seconds%2==0){
       for(unsigned char b=0;b<109;b++){
         Display_min_dot(minutes);
         Display_sec_dot(adjust_seconds);
         sub_s=adjust_seconds;
         sub_m=minutes;
         Pause();         
       }
      }else for(unsigned char a=0;a<109;a++){        
        Display_min(minutes);
        Display_sec(adjust_seconds);
        sub_s=adjust_seconds;
        sub_m=minutes;        
        Pause();
       }
    }
    if(adjust_seconds<0){
      adjust_seconds=0;
    }
   }
    for(;minutes>0;minutes--){           
      for(unsigned char a=0;a<109;a++){
        Display_min_dot(minutes);
        Display_sec_dot(0);
      }
      for(seconds=59;seconds>0;seconds--){
        sub_s=seconds;
        sub_m=minutes-1;        
        if(seconds%2 == 0){         
           for(unsigned char b=0;b<109;b++){         
           Display_min_dot(sub_m);
           Display_sec_dot(sub_s);           
           Pause();            
         }
        }else for(unsigned char a=0;a<109;a++){                    
          Display_min(sub_m);
          Display_sec(sub_s);         
          Pause();               
         }
      }
    }
    if(minutes<0){
      minutes=0;}
   }
}   
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:28 , Processed in 0.074202 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表