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 用按键控制七段显示器
-
面包板 数码管同上,12接按键
-
原理图 略
-
PCB 略
-
ArduBlock
为了按键去抖动,这里延时了200ms
image.png -
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);
}
}
网友评论