發表文章

目前顯示的是有「Arduino」標籤的文章

Arduino [7SEGX8] 七段顯示器x2 使用74HC164驅動

圖片
這是一塊2排4位數7段顯示器(共8位數)的板子,由2顆74HC164控制,它的線路非常的單純排除電源之外,就只有DATA和CLOCK兩個訊號源而已。 由於它是由74HC164組成,所以資料傳輸方式就是使用位元資料PUSH出去的方式: shiftOut (data_pin, clk_pin, MSBFIRST , ~output[index]); shiftOut (data_pin, clk_pin, MSBFIRST , 1<<index); delayMicroseconds (delayTime); 從上面的範例有執行兩次shiftOut的動作 第一次是送顯示位元(bit)送出去 第二次是重送定位(Digit)第幾位數 第三行是delayMicroseconds是顯示停留時間      顯示停留時間如果太短,你會幾乎看不到顯示的數字,顯示時間太久,你會看到一個數字一個數字的移動,因為這個設計一次只能顯示一個位置的一個數字,然後利用快速切換將每個位置的數字依序跑一遍。然後利用視覺暫留的時間讓你的眼睛看到該數字出現在那裏。 模組樣式 這個模組顯示方式從第 0 位置到 7 位置,從左上方開始,於右下方結束 0 →1→2→3 4→5→6→7 這次我們做個計數器來測試,接線方式如下: 程式碼如下: #define data_pin  2 #define clk_pin   3 int16_t delayTime = 2500; // 顯示暫留時間 / / 顯示七節字碼 [0,1,2,3,4,5,6,7,8,9,空] // B00111111,B00000110,B01011011,B01001111,B01101101,B01111101,B00000111,B0111111,B01101111,B00000000 uint8_t seg7[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F , 0x00}; uint8_t output[8]; long count = 0; void setup() {   // 設定輸出   pinMode (clk_pin, OUTPUT );   pinMode (data_p

Arduino 控制 - 使用 L293D 來驅動馬達

圖片
L293D 式一顆用雙路直流馬達的控制器,用這顆 IC 可以用來驅動一般的小型馬達/玩具馬達之類的,相當方便。 其內部結構大概就是一個 4路半H橋式驅動電路。 Pin 2 與 Pin 7 屬於一對,Pin 10 與 Pin 15 也屬於一對。 Pin 1 與 Pin 9 雖然做為 Enable 接腳,但是也可以輸入 PWM 訊號來控制馬達出力的力度。 Pin 8 是提供給馬達的電力,可以獨立供給,也可以和 Pin 16 的 Vcc 共用。 底下是利用 Arduino 做的簡易的控制電路: 藍色 LED 是用來觀察 PWM 的強度用的,可以不接。 我這邊另外用 9V 提供給 L293D 來驅動馬達,速度會比較快。 程式碼方塊如下: 程式源碼如下: int counter; int counter2; void setup() {   pinMode(3, OUTPUT);   pinMode(5, OUTPUT);   pinMode(6, OUTPUT);   pinMode(13, OUTPUT); } void loop() {   analogWrite(3, 255);   digitalWrite(5, HIGH);   digitalWrite(6, LOW);   for (counter = 0; counter < 5; ++counter) {     digitalWrite(13, HIGH);     delay(500); // Wait for 500 millisecond(s)     digitalWrite(13, LOW);     delay(500); // Wait for 500 millisecond(s)   }   analogWrite(3, 64);   digitalWrite(5, LOW);   digitalWrite(6, HIGH);   for (counter2 = 0; counter2 < 5; ++counter2) {     digitalWrite(13, HIGH);     delay(500); // Wait for 500 mill

使用arduino設計EBD展示燈

圖片
其實這個構想很久了, 指是要先處理單線電力供電問題,再處理高低壓控制,以及演示計算問題。 我再這之前有作出一個簡易的 EBD 煞車燈, 但是,看久了還是希望有點變化,可是又不希望買市面上的燈條來組合: 一來是我希望展示燈有有延遲啟動效果,市面上燈條做不到。 二來是希望展示的方式可以依照自己喜好組合,市面上燈條也難辦到。 所以只好動起 Arduino 歪腦筋,看看能不能塞進去第三煞車燈了。 先勾勒出電路圖 不算太難,只是線路有點多而已,由於要塞到第三煞車燈裡面所以要進量縮小 因此比較多零件的驅動電晶體使用了SMD的N通道MOSFET - P3055LDG來製作。 原則上Arduino NANO 是5V 驅動與電力提供, 控制 TLC5940NT 一路都是5V 但是要轉到控制12V的LED燈板就需要用到偶合電路比較安全, 因此這裡選用了簡單形式的 LTV847 光耦合IC來串接, 這樣就可以隔離12V電力,避免逆流回Arduino 或TLC5940NT導致燒毀問題。 Arduino NANO TLC5940NT LTV847 P3055LDG 程式的部分改天再分享上來