美文网首页Arduino互动设计入门
实例 2.8 用按键控制七段显示器

实例 2.8 用按键控制七段显示器

作者: chenzhenlindx | 来源:发表于2018-11-18 15:10 被阅读21次
    Arduino互动设计入门
    实例 2.1 控制多个LED
    实例 2.2 按条件控制多个LED
    实例 2.3 多个LED跑马灯
    实例 2.4 利用指拨开关控制多个LED
    实例 2.5 利用指拨开关控制LED状态变化
    实例 2.6 利用按键开关控制LED
    实例 2.7 控制七段显示器
    实例 2.8 实例 2.8 用按键控制七段显示器
    1. 面包板 数码管同上,12接按键

    2. 原理图 略

    3. PCB 略

    4. ArduBlock
      为了按键去抖动,这里延时了200ms


      image.png
    5. Arduino

    int _ABVAR_1_P12 = 0 ;
    int _ABVAR_2_PIN = 0 ;
    void __ardublockDigitalWrite(int pinNumber, boolean status)
    {
      pinMode(pinNumber, OUTPUT);
      digitalWrite(pinNumber, status);
    }
    
    
    void Set3();
    void Set2();
    void Set1();
    void Reset();
    
    void setup()
    {
      pinMode( 12 , INPUT);
      pinMode( 3 , OUTPUT);
      pinMode( 4 , OUTPUT);
      pinMode( 5 , OUTPUT);
      pinMode( 7 , OUTPUT);
      pinMode( 8 , OUTPUT);
      pinMode( 6 , OUTPUT);
      _ABVAR_1_P12 = 0 ;
    
      Reset();
    
    }
    
    void loop()
    {
      if (!( digitalRead(12) ))
      {
        _ABVAR_1_P12 = ( _ABVAR_1_P12 + 1 ) ;
        if (( ( ( _ABVAR_1_P12 % 3 ) ) == ( 1 ) ))
        {
          Reset();
          Set1();
          delay( 200 );
        }
        if (( ( ( _ABVAR_1_P12 % 3 ) ) == ( 2 ) ))
        {
          Reset();
          Set2();
          delay( 200 );
        }
        if (( ( ( _ABVAR_1_P12 % 3 ) ) == ( 0 ) ))
        {
          Reset();
          Set3();
          delay( 200 );
        }
      }
    }
    
    void Set2()
    {
      digitalWrite( 3 , LOW );
      digitalWrite( 4 , LOW );
      digitalWrite( 5 , LOW );
      digitalWrite( 7 , LOW );
      digitalWrite( 8 , LOW );
    }
    
    void Set3()
    {
      digitalWrite( 3 , LOW );
      digitalWrite( 4 , LOW );
      digitalWrite( 5 , LOW );
      digitalWrite( 6 , LOW );
      digitalWrite( 7 , LOW );
    }
    
    void Set1()
    {
      digitalWrite( 4 , LOW );
      digitalWrite( 8 , LOW );
    }
    
    void Reset()
    {
      for(_ABVAR_2_PIN = 2; 
    2<=8?_ABVAR_2_PIN <= 8:_ABVAR_2_PIN >= 8; 
    2<=8?_ABVAR_2_PIN = _ABVAR_2_PIN + 1:_ABVAR_2_PIN = _ABVAR_2_PIN - 1)
      {
        __ardublockDigitalWrite(_ABVAR_2_PIN, HIGH);
      }
    }
    

    相关文章

      网友评论

        本文标题:实例 2.8 用按键控制七段显示器

        本文链接:https://www.haomeiwen.com/subject/mjrgfqtx.html