Arduino互动设计入门

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

2018-11-18  本文已影响21人  chenzhenlindx
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);
  }
}
上一篇 下一篇

猜你喜欢

热点阅读