PIXNET Logo登入

洛斯里克的夏天

跳到主文

關於文字、旅遊、攝影、音樂、遊戲
電子科技等 相關介紹跟評論

部落格全站分類:休閒旅遊

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 10月 16 週日 201113:49
  • Arduino UNO 控制 8x8 LED


先從簡單的LED控制開始吧
另外,因為我不是軟體出身,所以code寫得很爛,請多包涵:D

上面的影片,主要是利用Arduino的數位輸出腳,來控制8x8的LED
顯示0~9的字型

首先,利用手動來控制 8x8 LED發亮,並且了解一下腳位如何控制
這顆8x8 LED是在光華商場對面樓下的電子材料行買的
料號: LM12883SRWK 共陰極 矩陣式8x8 LED

如何確認控制腳位? 先在excel框好8x8的格子

左邊的圖,上面那排是LED的正極(Anode)腳位4,7,2,8,12,1,14,9
左邊那排是LED的負極(Cathode)腳位13,6,5,10,3,11,15,16


如果要讓第一行,第一列(a)的LED發亮,就要在腳位4灌電壓,腳位13下地
(b) = pin7 (+),pin6 (GND) 依此類推
但唯一的問題就是,因為這只有16支腳,若要同時間做出fig-2這種顯示是無法的
因為,當你亮(j) = pin4(+) , pin6(GND) , 同時要亮(k) = pin7(+) , pin13(GND)
這時候pin4(+) , pin13(-) = (a) , pin7(+) , pin6(GND) = (b)就會變成fig-3
不過這問題,稍後我們可以利用軟體的小技巧來達到fig-2的效果


接下來在excel上面先畫好我們想要的字型,例如0~9
因為Arduino Uno只有提供14支數位的輸出腳,所以我們用6x6的格子來畫
所以6+6=12支腳,另外我們正腳位使用7,2,8,12,1,14
對應Arduino的數位輸出腳1~6 , 負腳位依此類推


根據這個電路圖,在每個LED正腳位回到DIGITAL輸出之間串220ohm的電阻
避免過大電流燒掉LED或是造成亮度不均的問題

接下來是原始碼

void num0(int a) //設定數字0要怎麼顯示,請參考上圖
{
digitalWrite(7, LOW); //把想亮的列設成Low,不想亮的設成High
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(3, HIGH); //把pin3設成High(+5V),這時就會出現fig-1
delay(a); //停頓一個時間
digitalWrite(3, LOW); //把pin3設成Low,這時候就會全部不亮

digitalWrite(7, LOW); //把想亮的列設成Low,不想亮的設成High
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(4, HIGH); //把pin4設成High(+5V),這時就會出現fig-2
delay(a); //停頓一個時間
digitalWrite(4, LOW); //把pin4設成Low,這時候就會全部不亮

digitalWrite(7, LOW); //把想亮的列設成Low,不想亮的設成High
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(5, HIGH); //把pin5設成High(+5V),這時就會出現fig-3
delay(a); //停頓一個時間
digitalWrite(5, LOW); //把pin5設成Low,這時候就會全部不亮
}
//由於delay的時間非常短,利用人眼視覺暫留的方式快速的亮暗每一行
//最後眼睛就會看到0這個數字,也就是fig-4
//下列1~9的字型,就按照數字0的方式編寫
void num1(int a)
{
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(3, HIGH);
delay(a);
digitalWrite(3, LOW);

digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(4, HIGH);
delay(a);
digitalWrite(4, LOW);

digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(5, HIGH);
delay(a);
digitalWrite(5, LOW);
}
void num2(int a)
{
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(3, HIGH);
delay(a);
digitalWrite(3, LOW);

digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(4, HIGH);
delay(a);
digitalWrite(4, LOW);

digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(5, HIGH);
delay(a);
digitalWrite(5, LOW);
}
void num3(int a)
{
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(3, HIGH);
delay(a);
digitalWrite(3, LOW);

digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(4, HIGH);
delay(a);
digitalWrite(4, LOW);

digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(5, HIGH);
delay(a);
digitalWrite(5, LOW);
}
void num4(int a)
{
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(3, HIGH);
delay(a);
digitalWrite(3, LOW);

digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(4, HIGH);
delay(a);
digitalWrite(4, LOW);

digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(5, HIGH);
delay(a);
digitalWrite(5, LOW);
}
void num5(int a)
{
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(3, HIGH);
delay(a);
digitalWrite(3, LOW);

digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(4, HIGH);
delay(a);
digitalWrite(4, LOW);

digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(5, HIGH);
delay(a);
digitalWrite(5, LOW);
}
void num6(int a)
{
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(3, HIGH);
delay(a);
digitalWrite(3, LOW);

digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(4, HIGH);
delay(a);
digitalWrite(4, LOW);

digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(5, HIGH);
delay(a);
digitalWrite(5, LOW);
}
void num7(int a)
{
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(3, HIGH);
delay(a);
digitalWrite(3, LOW);

digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(4, HIGH);
delay(a);
digitalWrite(4, LOW);

digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(5, HIGH);
delay(a);
digitalWrite(5, LOW);
}
void num8(int a)
{
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(3, HIGH);
delay(a);
digitalWrite(3, LOW);

digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(4, HIGH);
delay(a);
digitalWrite(4, LOW);

digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(5, HIGH);
delay(a);
digitalWrite(5, LOW);
}
void num9(int a)
{
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(3, HIGH);
delay(a);
digitalWrite(3, LOW);

digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(4, HIGH);
delay(a);
digitalWrite(4, LOW);

digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(5, HIGH);
delay(a);
digitalWrite(5, LOW);
}
void setup() //設定Arduino的digital pin 1~12為輸出
{
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
int displayspeed = 50; //設定顯示每個數字間所花的時間
int blinking = 8; //設定一個數字閃爍的程度,這個值可微調
int a = 0; //設定一個參數a=0

void loop() //主程式
{
while(a < displayspeed) //讓0這個字多跑幾次迴圈,來達到數字0顯示的時間
{
num0(blinking); //把blinking=8這個值,塞入副程式的delay時間
a++;
}
a = 0; //重置a=0
while(a < displayspeed)
{
num1(blinking);
a++;
}
a = 0;
while(a < displayspeed)
{
num2(blinking);
a++;
}
a = 0;
while(a < displayspeed)
{
num3(blinking);
a++;
}
a = 0;
while(a < displayspeed)
{
num4(blinking);
a++;
}
a = 0;
while(a < displayspeed)
{
num5(blinking);
a++;
}
a = 0;
while(a < displayspeed)
{
num6(blinking);
a++;
}
a = 0;
while(a < displayspeed)
{
num7(blinking);
a++;
}
a = 0;
while(a < displayspeed)
{
num8(blinking);
a++;
}
a = 0;
while(a < displayspeed)
{
num9(blinking);
a++;
}
a = 0;
}


以上
有問題的請發問
ps:我的code寫得很爛,請鞭小力一點.....XD



歡迎加入粉絲團
有即時的網站更新通知,還可以留言發問唷
在圖示點"讚",就可以啦~~
(繼續閱讀...)
文章標籤

洛斯里克 發表在 痞客邦 留言(5) 人氣(33,188)

  • 個人分類:Arduino
▲top
  • 9月 27 週二 201117:09
  • Arduino UNO Placement


來研究一下這塊板子的placement吧
PS: Placement 指的是零件位置圖和對應的功能方塊

USB to UART converter: 把連接電腦端的USB訊號轉成UART (TX/RX) 給
MCU,主要使用於upload code到MCU

MCU: 這塊板子的心臟,等同電腦的CPU,主要功能是利用寫在MCU內的軟體,
去控制週邊IO動作

Digital I/O: 數位的輸入輸出阜,MCU可藉由這14支腳去讀數位值,或是輸出H/L 準位

Analog input: 類比的輸入,MCU可藉由這6支腳,讀取類比的值並轉成數位值 (ADC)

Reset button: 壓下去之後,可以重置MCU的動作

PWR on LED: 當USB or DC-in的電壓進來之後會亮起

16MHz X'Tal: 用於USB to UART converter和MCU工作用的Clock

Debug LED: 可以利用數位腳的第13支來控制這顆LED亮或暗,主要用於寫code時
debug使用

USB (Data+PWR): 連接板子和電腦的USB插槽,除了可以upload code到板子
之外,也可提供+5V給板子當電源使用

TX/RX LED: 當upload code到MCU時,這兩顆LED會同時跟著閃爍

Fuse: 位於USB的+5V端的保險絲

7~12V DC-in: 可以外接充電器,但輸入電壓必須在7~12V內

5V LDO: 把7~12V的DC-in轉成+5V電壓提供給板子

3.3V LDO: 把+5V轉成3.3V,主要是提供PWR function上的3.3V的孔給外部
電路使用

PWR function: Vin = 可外接7~12V給板子電源,5V = 提供外部電路電壓
,3.3V = 提供外部電路電壓,RESET = 短路到地的時候會重置MCU

Compare Circuit: 這是一個比較用的電路,當同時插著USB還有DC-in的時候,
這個電路會切斷USB的+5V來源,避免兩個電壓打架

備註:
Arduino UNO 電路圖 下載
另外附上零件位置圖




歡迎加入粉絲團
有即時的網站更新通知,還可以留言發問唷
在圖示點"讚",就可以啦~~
(繼續閱讀...)
文章標籤

洛斯里克 發表在 痞客邦 留言(0) 人氣(7,904)

  • 個人分類:Arduino
▲top
  • 2月 20 週日 201109:53
  • Arduino UNO 開箱文


前幾天,終於收到網路上訂購的包裹,這小小的信封
袋裡面有一個紅色的小盒子。

打開紅色的盒子,裡面裝著Arduino UNO最新的板子
這個是從藝科資訊網路下單購買,郵寄到家裡。

其實盒子非常小一個,當初在網路Survey的時候
以為會跟一般市售軟體的那種大小的包裝,沒想到
其實大小跟保險套盒子的包裝差不多。

打開盒子,裡面裝著板子,還有貼紙跟版權說明書。

正面照一張

背面也來一張

這樣一盒售價$1090台幣,那它有什麼功能呢?
它標榜著,即使設計者本身,對於軟體或是硬體完全
不熟悉,甚至完全不會,可以藉由這個Arduino的
母板,搭配簡單又直覺式的軟體語法,來達成電子產
品的設計。

相關網址:
Arduino 官方網站
Arduino.Tw 台灣
藝科資訊



歡迎加入粉絲團
有即時的網站更新通知,還可以留言發問唷
在圖示點"讚",就可以啦~~
(繼續閱讀...)
文章標籤

洛斯里克 發表在 痞客邦 留言(3) 人氣(2,415)

  • 個人分類:Arduino
▲top
1

文章分類

toggle 心情文字 chat (4)
  • 書、讀後感 (13)
  • 生活分享 (6)
  • 劇、觀後感 (7)
  • 美食推薦 (2)
toggle 遊戲 Gaming (1)
  • 天堂W (Lineage W) (1)
toggle 旅行 travel (4)
  • 印尼 (1)
  • 臺灣 (23)
  • 日本 (5)
  • 中國 (1)
toggle 音樂 music (1)
  • 台灣樂團 (5)
toggle 專業 electric (3)
  • Arduino (3)
  • 相機 Camera (1)
  • 其他 others (1)
  • 未分類文章 (1)

最新文章

  • 柿內尚文 在麵包店賣飯糰
  • 窪美澄 在夜空中綻放星星
  • 台北 公館 藍家割包
  • 桃園 雄獅文具 想像力製造所
  • 金色機械 (金色大人)
  • 村上 T
  • 龐氏風暴
  • Lineage W 登錄須知
  • 2021 有感
  • 東京澀谷 大阪 福岡 輕旅行 Shibuya Ozaka Fukuoka (下)

熱門文章

  • (4,589)金門四天三夜自由行【金沙與金湖篇】

參觀人氣

  • 本日人氣:
  • 累積人氣: