2016年1月12日 星期二

Arduino UNO學習140.數字LED燈共陰5101AS



Arduino學習140.數字LED燈共陰5101AS

準備硬體
數字LED燈*1共陰
220/330歐電阻*8
面包板*1
線材
數字LED燈有7段顯示器和8段顯示器多個小數點,並分共陰或共陽,
可取3V或1.5V水銀電池,直接引線負極到顯示器中間共腳,正極隨意接一腳,
即可知各接腳訂義,此說明使用共陰型8段顯示器,
一樣每個燈都需接電阻以免燒毀,若是使用共陽型,則反向設定高低電位,

硬體連結

ArduBlock程式拼圖
說明pin4~11每+1,設定為Pin4,5,6,7,8,9,10,11都為低壓,
loop開始設Pin4為高+5v,
上傳到UNO板上看看,是否出現了小數點,試著把Pin5也改成高位後再上傳,
逐一把其他腳位都設成高位,以了解並測試各接腳定義,

再來試著顯示數字1~9和0

運用打包副函式subroutine及對映,於控制塊下方拉出拼圖,
將數字2打包設定為led2,並呼叫對映
若沒問題,試著把0,1,2,3打包,設定成led0~3,並且對映呼叫,
上傳至UNO後發現,字變的怪怪的,
原因是每個字顯示後都必須要把腳位清除,再顯示下一個字,
所以把原本的Pin4~11低電位設定也打包了,再置入每個字顯示後,
是不是3,2,1,0到數著呢?副函式和對映可簡化程式,在重覆使用上不需重新編程,

int _ABVAR_1_PIN = 0 ;
void __ardublockDigitalWrite(int pinNumber, boolean status)
{
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, status);
}


void led1();
void led2();
void led0();
void reset();
void led3();

void setup()
{
    pinMode( 5 , OUTPUT);
    pinMode( 6 , OUTPUT);
    pinMode( 7 , OUTPUT);
    pinMode( 8 , OUTPUT);
    pinMode( 10 , OUTPUT);
    pinMode( 11 , OUTPUT);
    pinMode( 9 , OUTPUT);
    reset();

}

void loop()
{
    led3();
    delay( 1000 );
    reset();
    led2();
    delay( 1000 );
    reset();
    led1();
    delay( 1000 );
    reset();
    led0();
    delay( 1000 );
    reset();
}

void led0()
{
    digitalWrite( 5 , HIGH );
    digitalWrite( 6 , HIGH );
    digitalWrite( 7 , HIGH );
    digitalWrite( 8 , HIGH );
    digitalWrite( 10 , HIGH );
    digitalWrite( 11 , HIGH );
}

void reset()
{
    for (_ABVAR_1_PIN= (4) ; _ABVAR_1_PIN <= (11) ; _ABVAR_1_PIN+= (1) )
    {
    __ardublockDigitalWrite(_ABVAR_1_PIN, LOW);
    }
}

void led2()
{
    digitalWrite( 6 , HIGH );
    digitalWrite( 7 , HIGH );
    digitalWrite( 9 , HIGH );
    digitalWrite( 10 , HIGH );
    digitalWrite( 11 , HIGH );
}

void led1()
{
    digitalWrite( 5 , HIGH );
    digitalWrite( 6 , HIGH );
}

void led3()
{
    digitalWrite( 5 , HIGH );
    digitalWrite( 6 , HIGH );
    digitalWrite( 7 , HIGH );
    digitalWrite( 9 , HIGH );
    digitalWrite( 10 , HIGH );
}



沒有留言:

張貼留言