《博哥玩Arduino》- 藍芽七彩燈基礎版
一、前言
app 下載路徑:http://sj.qq.com/myapp/detail.htm?apkName=com.wty.app.wifirgb
前些時間做了藍芽小車
《博哥玩Arduino》-藍芽小車-基礎篇
http://www.arduino.cn/forum.php? ... 31059&fromuid=93655 (出處: Arduino中文社群)
《博哥玩Arduino》-藍芽小車-實操篇
http://www.arduino.cn/forum.php? ... 31096&fromuid=93655
後面又研究了一下ESP8266 wifi模組,然後發現在買ESP8266模組時發現商家提供了app+RGB燈,app可以控制RGB顯示顏色。感覺還是有點意思,所以就考慮一下要不咱也做一個藍芽版本的RGB燈。
由於我這裡修改了藍芽模組的名字,需要自己命名的可以看這篇:
《博哥玩Arduino》- 藍芽模組HC06 重新命名
http://www.arduino.cn/forum.php? ... 31517&fromuid=93655 (出處: Arduino中文社群)
注意:Arduino板子是Mega2560,由於樓主沒有RGB模組,所以以下都是講解原理以及實際效果,樓主會通過 串列埠列印講解實際效果(畢竟RGB其實就是收到0-255數字量而已,這個很多資料)
二、設計原理
1.概念圖
手機App掃描附近藍芽裝置,找到”藍芽檯燈“,點選連線,然後隨意點選圓盤顏色選擇器,就會把選擇的顏色傳送到HC06藍芽模組,arduino再讀取串列埠資料緩衝區拿到協議資料,再解析並控制RGB燈
app 下載路徑:http://sj.qq.com/myapp/detail.htm?apkName=com.wty.app.wifirgb
2.電路連線
HC06--->串列埠1(serial1)
3.RGB LED原理
之所以叫RGB,是因為這個LED是由紅(Red)、綠(Green)和藍(Blue)三色組成。我們電腦的顯示器也是由一個個小的紅、綠、藍點組成的。可以通過調整三個LED中每個燈的亮度就能產生不同的顏色。
RGB燈有4個引腳,R、G、B三個引腳連線到LED燈的一端,還有一個引腳是共用的正極(vcc)或者共用的陰極(gnd)。假設這裡選用的是共陰RGB。R、G、B其實就是三個LED的正極,把它們的負極拉到一個公共引腳上了,它們公共引腳是負極,所以稱之為共陰RGB。
RGB燈如何使用呢?如何實現變色呢?
RGB只是簡單的把三個顏色的LED燈封裝在一個LED中。只要當做三個燈使用就可以了。我們都知道紅色、綠色、藍色是三原色,Arduino通過PWM口對三種顏色明暗的調節,也就analogWrite(value)語句,就能讓LED調出任何你想要的顏色。
使用PWM可以產生0~255之間的全部顏色,共16777216種顏色(256×256×256),市面上那些說自己有1000萬種顏色的燈就是這個原理。
共陽RGB與共陰RGB的區別(需要去試驗):
(1)接線中的改變,共陽的話,共用端需要接5V,共陰需要接GND。
(2)第二點就是,在顏色的調配上,與共陰是完全相反的。
舉個例子:共陰RGB顯示紅色為R-255,G-0,B-0。然而共陽則完全相反,RGB數值是R-0,G-255,B-255。
三、材料
配件如下:
ARDUINO 開發板 1塊(我這裡使用mega)
HC06 藍芽模組 1個
安卓手機 1部
杜邦線 若干
RGB模組 1個(樓主資金短缺,當做它存在就可以了)
四、除錯過程
1.測試RGB模組
R引腳 ----> 引腳9
G引腳 ----> 引腳10
B引腳 ----> 引腳11
[C] 純文字檢視 複製程式碼
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 |
|
沒錯的話,應該可以看到LED顏色呈現隨機的變化。(constrain()函式需要3個引數:x、a和b。這裡x是一個被約束的數,a是最小值,b是最大值。如果值小於a,則返回a。如果大於b,則返回b。random()函式用於生成一個隨機數,min隨機數的最小值,max隨機數的最大值。)
2.app+arduino除錯(乾貨來了) 首先,由於限制,app無法上傳,有需要的人請在本帖留言 。樓主自助app,自測沒有什麼問題,如發現什麼明顯錯誤,煩請在本帖子留言。
然後,附上Arduino程式碼:
[C] 純文字檢視 複製程式碼
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
|
最後,有圖有真相:
以及用Arduino IDE 串列埠列印的結果(這個結果應該是跟app端顯示的RGB值是一致的):
使用的時候隨意點選圓盤中的任意一個點(每個點就是一個RGB值),就會看到app 頁面的四方塊顯示當前選擇的顏色以及RGB值。
注意點:
手機端以及Arduino的資料協議格式,我定義為:
"+C,10:100,255,60;"
含義:+C 開始符
10 後面真正的資料長度(100,255,60)
: 資料開始符
; 資料結束符
, 分隔符
所以Arduino 程式的ReceiveBTMessage 就會去解析這個協議。
好了,總結一下:
1)重要是理解RGB燈的原理,其次就是藍芽模組的使用。
2)最重要是 一步一步除錯 不能急躁。
3)樓主由於窮,沒去買RGB模組 只能模擬了,大夥諒解。
優化版:《博哥玩Arduino》- 藍芽七彩燈優化版
http://www.arduino.cn/forum.php?mod=viewthread&tid=32113&fromuid=93655
(出處: Arduino中文社群)