在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

貝爾模型202藍牙電話的制作教程

454398 ? 來源:工程師吳畏 ? 2019-08-12 08:47 ? 次閱讀

第1步:電話部分

貝爾模型202藍牙電話的制作教程

電話部分

貝爾模型202電話(或1930年至1970年的任何撥號電話)

仿古木制雪茄盒

DF Robot Bluno Nano

Deek-Robot Nano終端適配器

SPI Micro SD讀卡器

Micro SD卡

220歐姆電阻器(連接到耳機揚聲器)

2x 10K歐姆電阻(連接到電話撥號)

電源插孔

5V(或高達12V)電源

第2步:名稱標簽部件

這是要制作的項目列表一個名牌。我做了10個。

(注意:我將其中的一個短路,使其部分功能失調。提前計劃:可能會額外訂購一兩個布魯諾斯或者提出一個計劃“B”以防萬一!)

DF機器人Bluno甲殼蟲

4x 100歐姆電阻器

藍色可穿戴LED

紅色可穿戴設備LED

黃色可穿戴LED

綠色可穿戴LED

9V雙容量(1200mAh)鋰電池

9V電池連接器

微型開關

2cmx8cm原型板(切成兩半)

名稱帶剪輯的標簽夾(亞馬遜

Avery 5141“您好我的名字是”名稱標簽(亞馬遜)

第3步:連接電話

手機內的arduino需要執行以下所有操作任務。本節介紹如何將所有內容連接在一起。

當有人拿起耳機時打開Arduino

撥打電話

抓住聲音SD卡

在耳機揚聲器上播放聲音

原理圖

附圖是原始圖像和Fritzing格式。您可以在此處下載Fritzing應用程序:fritzing.org

撥號和電源開關

手機內部有三個需要連接的開關。

“掛機”開關,為Bluno Nano上的Vin供電

接收器掛在掛鉤上時,此開關斷開。

“主動撥號”開關,表示車輪不在其家中位置。這是有線的,使D8在激活時為+ 5v,在激活時為0v。

當手機處于靜止位置時,我的手機上此開關正常連接 。一旦用戶開始移動撥號盤,開關就會斷開連接。我把一端貼在Arduino上。我把另一端連接到arduino上的D8。 D8還連接到10K歐姆電阻到+5。這種配置產生一個“高”使能信號,告訴Sketch程序是時候開始計數脈沖了。

(在其他一些手機上,當撥號“休息”時,此開關正常斷開。如果您有這種類型的手機,則需要將其與我的電話對接:結束到+5,另一端接到D8和一個接地的10K電阻。)

“脈沖”開關每次撥號時產生一個脈沖在從釋放返回原位時傳遞一個數字。這用于在引腳D7上產生+ 5V脈沖。

在我的手機上,當撥盤“休息”時,此開關正常連接。用戶松開方向盤后,每次通過號碼時,此開關斷開連接。我把一端貼在Arduino上。我將另一端連接到arduino上的D7。 D7還連接到一個10K歐姆電阻,該電阻導致+5導致引腳在斷開時被拉高。此配置為Sketch程序生成“高”脈沖以進行計數。

(在其他一些手機上,當撥號“休息”時,此開關正常斷開。如果您有這種類型的手機,則需要將其連接到我的對面:一端為+5,另一端為D7,另一端為10K接地電阻。)

我沒有添加任何特殊電路,如電容器進行去抖動。我用軟件處理了這個。每次開關打開或關閉時,你都會得到一堆電力尖峰(++++ - + - + - + - + - + -------)直到它結束。在決定狀態實際發生變化之前,軟件只等待輸入引腳上的值穩定到一個電壓或另一個電壓一段足夠長的時間。

聽筒揚聲器

用于產生聲音的輸出引腳需要是具有PWM功能的引腳。此外,根據您使用的Arduino,您可能需要注意運行PWM所需的定時器并可能啟用它。 Arduino Nano上的針腳D9(在我的情況下是Bluno Nano)是一個很好的默認選擇,因為默認配置正確。

耳機有三條線。簡化,這些是:地面,耳機和吹嘴。由于耳機和吹嘴松散連接,因此并不那么簡單。我將電壓表置于“接通”位置以測量電阻。在這種模式下,當您探測正確的兩個端子時,電壓表會產生少量的電,從而在聽筒中產生“靜態”的沙啞聲。

將一個端子連接到地。將另一個端子連接到一個220歐姆的電阻,該電阻通向D9 PWM引腳。這非常適合我在標準電話耳機揚聲器中所需的聲級。

(如果你想創建一個“揚聲器電話”,你需要添加一些額外的電路來將聲音放大到一個外部揚聲器供所有人聽。我沒有在我的實現中這樣做但是本來不錯增強。)

(如果要添加音量控制,可以將電位器連接到其中一個模擬輸入引腳,并根據輸入電壓讀數調整聲級。)

Micro SD卡SPI

SPI可以直接連接到Arduino Nano。 GND至GND,+ 5至+5,MISO至MISO,MOSI至MOSI,以及SCK至SCK。我使用引腳D4作為我的選擇引腳,所以:D4到CS。 (如果您使用的是5v Arduino,例如Nano,請確保使用5v SD卡控制器。)

電線

我剪了一段cat-5以太網電纜和從電話上的連接器通過一個鉆入基座的孔向下延伸到安裝在雪茄盒下面的Arduino。以太網電纜中的8根電線對我的連接來說已經足夠了,對于任何標準的撥號電話都應該足夠了。因為我將所有地面連接在一起,只有一個地面連接到Arduino,因此8根電線對我來說是過度殺死的。我不需要在手機上運行+5線,但如果你使用不同類型的手機,你可能會發現有必要這樣做。無論哪種方式,對于幾乎任何項目來說,8根電線應該足夠了。

我還在雪茄盒后面鉆了一個小洞,讓我在切斷電源線后將電源線插入。端部在盒子內拼接在一起,然后連接到電源。

暴露USB連接器進行編程

我用電工膠帶完全包裹Nano,只留下USB連接器暴露并可以進行編程。如果您決定將USB電纜留在盒子內,即使您沒有編程,也必須確保電纜末端與所有電氣部件隔離。靜電會弄亂電子設備,導致奇怪的事情發生如此意外的重置或更糟。

模擬引腳A0

注意:不連接任何東西針腳A0。該引腳用于為隨機數發生器播種,因此它需要浮動未連接。

可選:兩個Arduinos卸載聲音

如果您需要卸載聲音我提供了原理圖到了第二個Arduino。如果RAM耗盡或需要更快啟動,請執行此操作。標準的Arduino Nano處理聲音。 Bluno Beetle處理撥號和藍牙連接。

將兩個Arduinos連接在一起:D2到D2,D3到D3。

步驟4:連接名稱標簽

名稱標簽內電子設備的接線圖是公平的簡單:只需幾個LED,一個開關和一個電池。 “可穿戴”LED有點難以使用。我的繞線工具在這里派上用場了。

開始之前

在布線Bluno Beetle名稱標簽之前,我建議對每一個進行預編程,這樣他們就可以了啟動時依次閃爍所有數字引腳(D2,D3,D4,D5)。 (在提供的草圖中定義START_WITH_BLINK,或編寫您自己的簡單草圖來執行此操作。)這將允許您在組裝后立即測試不良焊接連接。

繞線和焊接LED

將所有四個電阻焊接到引腳D2,D3,D4和D5

從電路板背面夾住引線。

將電阻器導線留下約1英寸(2厘米)

將裸露的導線焊接到地面,留下1.5到2英寸(3-4厘米)。

使用繞線工具,將綠色LED的紅色線纏繞到D2電阻上并將其焊接到位。

將黑色引線繞線連接到接地引腳。

對藍色LED,黃色LED和紅色LED重復步驟5和6。

確認沒有引腳意外觸及鄰居。

再次驗證。

將USB電纜插入充電器電源插座,確認所有四個LED在啟動時按正確順序閃爍。

如果一切似乎都連接正確,請將一根熱縮管滑過每個暴露的針腳(包括接地針)并將其縮小,使其貼合。我用烙鐵來完成這個任務。如果你有一個熱縮槍(又名熱“吹風機”),那將是更好的選擇。

焊接開關和電池

將面包板切成大約3“x .5”(5cm x 1cm)(大約是Bluno Beetle抵達盒子高度的一半。

將面包板頂部三個孔中的開關焊接。

焊接一端針。

確保開關的兩端都貼著面包板,如果需要,可能會重新焊接第一根針。

焊接另一端兩個開關銷到面包板。

在電路板背面:焊接正極端(紅線)電池連接器連接到開關的頂部引腳。(焊接到面包板,使其連接到頂部引腳。)

將電池的負極(黑線)焊接到電池的接地孔上。 Bluno。

將紅線切割,剝離并焊接到開關的中間引腳上(焊接到面包板的背面)與開關的電氣連接。)

將電線穿過幾個孔以消除應力。

將紅線的另一端焊接到Bluno上的VIN孔,這樣當開關打開時,9伏將施加到VIN。

確認沒有交叉線。

連接電池并進行測試,確保Bluno開啟并在開關打開時閃爍。

纏繞電工膠帶以覆蓋整個面包板。

用電工膠帶包裹Bluno,直到您對電線應變消除和隔離連接感到滿意為止。

留出一個用于連接USB電纜的開口,以便將來進行編程。

將其打開并再次測試。

步驟5:打包名稱標簽

這些是步驟將可穿戴名稱標簽包裝在Bluno Beetle進來的盒子里面。

用鋒利的手術刀切開開關的矩形孔Exacto刀

將開關和電路板放入盒子中并將其按壓在側面以找到合適的步伐來切割孔。/li》

使用泡沫和電池將卡紙切換到位。

將電池放在電路板旁邊的盒子里

Bluno來了用一塊泡沫。將其卷起并粘貼,然后將其塞入盒子中,使開關牢固地固定到位。

為前面的LED線切一個洞因此它在關閉時不會干擾翻蓋,距離頂部大約0.75英寸(1.5厘米)。尺寸無關緊要。稍后會隱藏。我的洞大約1.5英寸x .25英寸(1厘米x) .5厘米。

通過孔進給LED

使用透明膠帶將LED指示燈朝外。透明膠帶確保LED安全并面向全世界以獲得全亮度。

將Bluno推入USB接口的盒子中,可以進行編程。

將Avery 5141名稱標簽剝離并粘貼在白紙上,然后將其剪成形狀。最好不要將名稱標簽直接粘貼到盒子上,因為將來某個時候您需要將其刪除。

覆蓋LED并將“Hello my name is”名稱標記為帶。

切割塑料名牌固定器,使其牢固地固定在盒子背面。

附上剪輯。

第6步:Arduino草圖

我已經提供了在這個項目中配置和運行Bluno Arduinos所需的全部四個草圖。

如果您還沒有下載Arduino IDE。這里:arduino.cc

解壓縮包含草圖的zip文件,并從Arduino IDE中打開它們。這些是草圖:

blunoBasic:用于初始化所有Blunos

blunoPhone:在手機上的Bluno Nano上運行

blunoPhoneSounds(可選) :播放手機上的聲音

blunoNameTag:在“可穿戴”名稱標簽上運行

步驟7:在中央電話上準備BLE

將草圖 BlunoBasic 加載到手機內的Arduino Bluno Nano中并執行以下操作:

打開串口監視器

設置“無行結束”類型“+++”并發送

應說“進入AT模式”

現在我們處于“AT”模式,用于在電路板上配置BLE藍牙。

設置“兩個NL& CR”

AT + MAC =?

復制MAC地址

打開 blunoNameTag 草圖。

找到正確的“centralMAC”

粘貼MAC以指定正確連接。

全部輸入要完成配置,請執行以下命令:

AT + ROLE = ROLE_CENTRAL

AT + CMODE = UNIQUE

AT + IBEACONS = OFF

AT + BLUNODEBUG = OFF

AT + USBDEBUG = OFF

AT + EXIT

現在用草圖重新編程bluno blunoPhone 用于正常操作。

步驟8:在名稱標簽上準備BLE

加載草圖 BlunoBasic 將放置在名稱標簽內的每個Bluno Beetle上并執行以下操作:

打開串行監視器

設置“無行結束”

輸入“+++”并發送

應該說“進入AT模式”

現在我們處于“AT”模式,用于配置主板上的BLE藍牙。

設置“兩個NL& CR”

AT + MAC =?

復制MAC地址

打開 blunoPhone 草圖。

查找“phoneLookup_t phoneBook [] = {”

將MAC粘貼到陣列中的適當位置,可能會創建一個新條目。

刪除最重要的4位數字,從而創建一個32位十六進制數字。

確保MAC_PREFIX與上一步中刪除的最重要的4位數匹配。

(步驟5和6實現優化以在手機Sketch上保存珍貴的RAM。)

綁定到bluno手機的MAC。例如,如果Bluno中央MAC是0xB4994C50236A,那么您可以在外設名稱標簽上執行此操作:

AT + BIND = 0xB4994C50236A

確定一個數字作為名稱的ID標簽。例如“8”。將該數字插入上面討論的phoneBook []數組條目,并在外圍名稱標簽bluno上執行此操作:

AT + NAME = 8

輸入以下所有命令以完成配置:

AT + ROLE = ROLE_PERIPHERAL

AT + CMODE = UNIQUE

AT + IBEACONS = OFF

AT + BLUNODEBUG = OFF

AT + USBDEBUG = OFF

AT + EXIT

現在使用Sketch blunoNameTag 重新編程bluno以進行正常操作。

步驟9:創建聲音

《我附上了一個包含我在SDCard上安裝的所有聲音的zip文件。聲音來自各種網站:

來自freesound.org的有趣聲音

電話錄音來自:http://stuff.gigo.com/phone/

如果您想要一組不同的聲音,可以生成一些或從各種網站下載。但它們需要轉換為簡單的單聲道8位16KHz WAV格式。我是這樣做的:

轉到:https://audio.online-convert.com/convert-to-wav

更改位分辨率:8位

更改采樣率:16000 Hz

更改音頻通道:單聲道

高級:

PCM格式:PCM無符號8位

開始轉換

下載

如果需要,請重命名文件,文件名中有8個或更少的字符,擴展名為“.wav”(又名8.3格式)。

將SD卡插入計算機

將所有文件復制到micro SD卡上最頂層的目錄中

彈出

插入通過SPI接口將micro SD卡連接到Arduino控制器中。

blunoPhone Sketch負責安裝SD卡并使用庫播放聲音文件:SD.h,SPI.h和TMRpcm .H

步驟10:Arduino手機草圖軟件

在手機內部的Bluno Nano上運行的Sketch blunoPhone 旨在使用BLE進行通信藍牙與另一個草圖 blunoNameTag 在電池供電的“可穿戴式”Bluno Beetles上執行,其中包含分散在房間內的人們的“名牌”。

可選擇手機聲音可以播放一個單獨的Arduino,也將被安置在手機內。這樣做的原因有很多,稍后將在評論中進行描述。如果您希望其他Arduino使用Sketch nanoPhoneSounds 播放聲音,請定義OFFLOAD_SOUND。我用一個內置的Bluno Nano制作了一部手機。我制造了第二部手機,其中包含用于通信的Bluno Beetle,以及用于播放聲音的標準Arduino Nano。在大多數情況下,我用單個Bluno Nano記錄手機,但知道還有其他選擇。

這個程序適用于Arduino。 RAM最大化因此,如果添加更多功能或增加變量數量,您可能會遇到一些奇怪的行為,例如程序重置和意外重啟。該程序使用一些先進的技術來節省RAM(以及一些黑客來節省RAM)。 (如果你有RAM問題,你應該認真考慮將聲音功能卸載到另一個Arduino。)

Bluno BLE似乎只用于兩個藍牙永不改變端點之間的通信:一個中心端口和一個外圍設備。似乎我正在使用它的目的不是專門設計的。通過一些努力,我得到了它的工作 - 主要是。有時需要多次嘗試才能建立連接。

該程序的設計有一個中央Bluno和許多外圍設備。在任何給定時間只連接一個外圍設備,但中央Bluno從已知外圍設備列表中動態選擇。通常連接速度相當快(在15秒內),但有時需要更長時間(幾分鐘)。外圍設備(名稱標簽)在代碼中內置了一個看門狗,以便偶爾強制重啟。這種“黑客”似乎有所幫助,但并不完美。手動關閉/打開所有外圍設備以及中央電話似乎有時可以幫助建立穩固的連接。

此草圖動態運行“AT + BIND”命令,然后“AT + RESTART”連接期望的外圍設備。那個序列并不總是有效。如果在一個循環中調用兩次而不是一次,它似乎更穩定。不幸的是,每次通過循環都會增加額外的延遲時間。如果您不擔心額外的延遲,請考慮調整程序調用AT + BIND三次以獲得更好的穩定性。

當通過USB電纜將Sketch編程到Bluno中心或任何外圍設備時,我發現它如果我關掉房間里所有其他的Blunos,那么最穩定。由于通過藍牙從一個Bluno到另一個Bluno的串行連接,程序員似乎對Bluno的目標編程感到困惑。

這使用PlainProtocol庫來格式化通過藍牙發送的命令。這可以在GitHub上找到:

git clone https://github.com/DFRobot/BlunoAccessoryShieldDe.。.

當在串行監視器上手動弄亂AT命令時,我發現最好運行Sketch blunoBasic 。

正常程序流程

軟件具有各種不同功能的狀態。正常的軟件路徑如下所示:

當手機放在開關掛鉤上時,電流不會流動并且Bluno電源關閉。

當有人拿起聽筒時,接通電源并且Bluno開始啟動,調用功能設置()。

在初始化期間安裝SD卡,初始化藍牙BLE,并初始化相關的數字引腳。這需要幾秒鐘。

一旦所有內容都初始化,就會播放撥號音。與所有聲音一樣,此聲音來自SD卡上的文件。撥號音實際上是一個相對較短的聲音文件,一旦完成就會重復。

一旦手機上的滾輪開始移動,軟件就會檢測到引腳D8上的更改并停止撥號音。

電話號碼中的每個數字都是根據D7針腳上檢測到的脈沖數計算出來的。

撥打全部6位數后,程序將啟動鈴聲,在phoneBook []數組中找到該號碼,并綁定到列出的名稱標簽的MAC地址。

只要完成簡單的握手以驗證MAC地址是否與預期的名稱標簽ID匹配,就會在耳機揚聲器上播放一長串(有些愚蠢)的“你好”聲音(當時草圖上的名稱標簽開始快速閃爍顏色瘋狂)。

通常此人會自動掛斷電話并觀看有人打開禮物。電源關閉,因此Bluno什么都不做。

特殊情況導致特殊情況

如果有人撥打手機上寫的號碼(869-869)或“TMW-TMW”)然后播放隨機應答消息。另外,The Mad Wrapper在圣誕樹深處隱藏了一個額外的Bluno Beetle“名牌”。布魯諾開始快速地眨眼。在樹上有一個特別的禮物供所有人享用!

各種標準的AT& T錯誤信息都是針對諸如未知號碼之類的內容而播放的,并且在沒有答案的情況下響鈴太長。

如果手機處于摘機狀態4分鐘,則摘機AT& T“blat-blat-blat 。..”聲音表示掛斷電話。

很多計時器

每次循環時,程序都會檢查時間并查看是否有任何“計時器”已過期。定時器用于一系列事情,包括正常操作和錯誤測試:

有一個看門狗定時器,用于重置和重新綁定到所需的名稱標簽。

有一個定時器用于去除“撥號移動”引腳D8。在宣布狀態發生變化之前,我們等待嘈雜的信號穩定下來。

有一個定時器用于消除引腳D7上的脈沖。

在開始同步時,有一個定時器用于限制與名稱標記的握手通信。

沒有足夠的RAM用于變量和數組

程序完全超出RAM使用量,導致以下警告

可用內存不足,可能會出現穩定性問題。

如果添加任何新內容,則可能出現錯誤功能,程序將開始表現得非常奇怪,包括重啟。我實現了一些技巧來最小化RAM使用:

諸如聲音文件名之類的字符串作為常量存儲在ROM中。函數pgm_read_word()用于檢索ROM的常量。

MAC地址是48位十六進制數。我的原始實現將MAC地址存儲為52個字符的字符串。當我只有三個名稱標簽與之通信時,這很好。一旦我啟用了10個遠程Blunos,我就用光了。我能夠通過存儲10個32位長整數來恢復程序。所有Bluno Beetle MAC地址中最重要的16位對于我所擁有的設備始終是相同的,因此我只是將16位添加到唯一的32位數字進行綁定。

另一種節省RAM的方法(可能是最好的方法)是在兩個Arduinos之間拆分任務。如果定義了OFFLOAD_SOUND,則刪除聲音產生功能。這被替換為使用SoftwareSerial庫與另一個連接到D3和D4的Arduino進行通信的功能。這樣做可以在RAM中留出足夠的空間來支持許多新功能或更多名稱標簽。

步驟11:消除嘈雜的電話交換機

當手機內的開關打開或關閉時,它不會干凈利落。電壓將反彈+ 5,0,+ 5,0,+ 5,0 。..。..一段時間,直到它穩定在一個或另一個上。這可以用一些電子設備來處理,例如電容器。我用軟件處理它。 blunoPhone 草圖會檢查該值是否發生變化,然后等待一段時間來驗證該值是否再次發生變化。

延遲10毫秒效果很好!

#define DEBOUNCE_DELAY 10 // wait 10ms for the circuit to settle during puls transition

用于跟蹤時間的變量:

long timeOfPulsePinStateChange = 0; // save the time for debouncing

去抖動的一些代碼:

if (pulseInputLastState != pulseInputPinState) {

timeOfPulsePinStateChange = millis();

}

if ((millis() - timeOfPulsePinStateChange) 》 DEBOUNCE_DELAY) {

// debounce - this happens once it‘s stabilized

if (pulseInputTrueState != pulseInputPinState) {

// this means that the switch has either just gone from closed-》open or vice versa.

pulseInputTrueState = pulseInputPinState;

}

步驟12 :Arduino名稱標記草圖軟件

草圖 blunoNameTag 實現在DFRobot上運行的可穿戴“名稱標記” Bluno Beetle。

它使用BLE藍牙連接與隱藏在古董電話中的中央Bluno進行通信。

在空閑狀態 - 當沒有連接到手機時 - - 藍色LED輕輕地發出更亮的光,然后變暗。

隨著通信握手開始,一些不同顏色的LED亮起,藍色LED發出全亮度不再發出脈沖。

握手需要使用名稱標簽的ID進行回復。這是從AT + NAME =?返回的結果。有關使用適當編號配置AT + NAME的重要說明,請參閱本Instructable的另一部分。

一旦通信完全建立,所有顏色的LED都開始瘋狂地閃爍。

很多計時器

每次循環時,程序都會檢查時間并查看是否有任何“定時器”已過期。

有一個計時器可以更新藍色LED的亮度。 (我真的很喜歡這個簡單的細微特征。在空閑狀態下輕柔的平靜脈沖為項目增添了一點“自然”的人性。)

每個彩色LED都有一個定時器告訴它閃爍一定時間。每個LED的閃爍速率不同,導致輕微隨機的光圖案。

有一個計時器可以檢查來自手機的消息。

有一個看門狗定時器可以重置整個Bluno Beetle。有時,完全開始是與嘗試接觸的中央Bluno同步的唯一方法。

步驟13:輕輕地點亮LED以獲得良好的平靜效果

我盡可能嘗試為我的應用添加一些微妙的“自然”效果。如果做得好,這將增加一定程度的舒適度并獲得用戶的一點信任。它讓人感覺很好。這是一個很好的設計。

如果您只是需要向用戶顯示您的小工具已啟動,那么簡單的事情就是在啟動過程中點亮LED并忘記它。

咩。

使用Arduino PWM功能并做一些有趣的事情。做吧!這并不難(特別是因為我已經提供了一些代碼供您復制/粘貼到您的應用程序中)。

我喜歡以下代碼的效果,它實現了藍色LED輕輕發光以平靜的“呼吸”速度變得更加明亮和暗淡。感覺很棒!

我將藍色LED連接到一個支持PWM的引腳(Bluno Beetle上的引腳D3)。

#define BLUE_LED 3 // blue LED

我設置了一些參數LED發光的速度和亮度有多快

#define GLOW_MIN 15 //15 // min brightness of glow

#define GLOW_MAX 100 //120 // max brightness of glow

#define GLOW_UPDATE_DELAY 40 // when to increment

#define GLOW_STEP_SIZE 2

及相關變量

long timeOfLastPulseUpdate = 0;

int glowValue = 0; // led brightness 0-255

int glowIncrement = GLOW_STEP_SIZE; // Either + or - depending on up/down glow

我創建了一個實用程序函數來幫助確定是否需要調整LED的亮度:

// gently glow bright/dim when not connected

bool timeToUpdateGlow () {

long now = millis();

if ((now - timeOfLastPulseUpdate) 》 GLOW_UPDATE_DELAY) {

timeOfLastPulseUpdate = now;

return true;

} else {

return false;

}

}

然后,每次通過循環,如果是時候改變亮度,改變它。如果 glowIncrement 為正數,則LED會略微變亮。如果 glowIncrement 是負數,則藍色LED稍微變暗。

void loop() {

。..

if (timeToUpdateGlow()) {

glowValue += glowIncrement;

if (glowValue 《= GLOW_MIN) {

glowValue = GLOW_MIN;

glowIncrement = GLOW_STEP_SIZE; // +1 so start glowing brighter

} else if (glowValue 》= GLOW_MAX) {

glowValue = GLOW_MAX;

glowIncrement = -GLOW_STEP_SIZE; // start dimming now

}

analogWrite(BLUE_LED, glowValue);

}

。..

}

步驟14:瘋狂的浮華色彩吸引注意力

引起人們對小工具的關注的一個好方法是使用幾個LED“隨機”潑灑閃亮的顏色。我對我使用的效果感到滿意。每個LED以不同的快速閃爍,以創建一個有趣的色彩管弦樂隊。

定義閃爍率和變量:

// blink rates when connected spaced to look like random orchestrated splatter

#define BLUE_BLINK_DELAY 300 // blink rate 0.3 seconds

#define YELLOW_BLINK_DELAY 500 // blink rate 0.5 seconds

#define RED_BLINK_DELAY 800 // blink rate 0.8 seconds

#define GREEN_BLINK_DELAY 1300 // blink rate 1.3 seconds

long timeOfLastBlueBlink = 0;

long timeOfLastGreenBlink = 0;

long timeOfLastYellowBlink = 0;

long timeOfLastRedBlink = 0;

確定何時閃爍LED的一些實用程序功能

// after connected we wildly blink the blue LED

bool timeForBlueBlink () {

long now = millis();

if ((now - timeOfLastBlueBlink) 》 BLUE_BLINK_DELAY) {

timeOfLastBlueBlink = now;

return true;

} else {

return false;

}

}

// after connected we wildly blink the green LED

bool timeForGreenBlink () {

long now = millis();

if ((now - timeOfLastGreenBlink) 》 GREEN_BLINK_DELAY) {

timeOfLastGreenBlink = now;

return true;

} else {

return false;

}

}

// after connected we wildly blink the yellow LED

bool timeForYellowBlink () {

long now = millis();

if ((now - timeOfLastYellowBlink) 》 YELLOW_BLINK_DELAY) {

timeOfLastYellowBlink = now;

return true;

} else {

return false;

}

}

// after connected we wildly blink the red LED

bool timeForRedBlink () {

long now = millis();

if ((now - timeOfLastRedBlink) 》 RED_BLINK_DELAY) {

timeOfLastRedBlink = now;

return true;

} else {

return false;

}

}

以及閃爍的功能。

void blink (int pin) {

digitalWrite(pin, HIGH);

delay(100);

digitalWrite(pin, LOW);

}

并且,如果處于正確的狀態,每個循環一次,檢查時間并使LED閃爍

void loop() {

。..

if (timeForBlueBlink()) {

blink (BLUE_LED);

}

if (timeForGreenBlink()) {

blink (GREEN_LED);

}

if (timeForYellowBlink()) {

blink (YELLOW_LED);

}

if (timeForRedBlink()) {

blink (RED_LED);

}

。..

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 藍牙
    +關注

    關注

    114

    文章

    5863

    瀏覽量

    170951
  • 電話
    +關注

    關注

    0

    文章

    135

    瀏覽量

    25857
收藏 人收藏

    評論

    相關推薦

    【「大模型啟示錄」閱讀體驗】營銷領域大模型的應用

    效地制定針對不同客戶群體的營銷策略,提高營銷活動的針對性和有效性。 大模型在內容生成方面也具有顯著優勢。它可以快速、高效地生成高質量的營銷文案、廣告語、海報、視頻等營銷素材。這種能力不僅提高了營銷內容的制作效率,還增加了內容的創意和多樣性,有助于吸引更多消費者的關注和興趣
    發表于 12-24 12:48

    用OLED拼接屏制作一個電話,是什么體驗?

    OLED拼接屏電話是一種新型的電話設備,它采用了OLED技術,可以將多個OLED屏幕拼接在一起,形成一個大屏幕,從而實現更加清晰、更加流暢的通話和視頻通話體驗。OLED技術是一種新型的顯示技術,它
    的頭像 發表于 11-01 11:14 ?201次閱讀
    用OLED拼接屏<b class='flag-5'>制作</b>一個<b class='flag-5'>電話</b>,是什么體驗?

    AI實火!諾貝爾又把化學獎頒給AI大模型

    昨天AI教父Geoff Hinton剛獲得諾貝爾物理學獎,今天,谷歌DeepMind聯合創始人兼首席執行官Demis Hassabis又拿下化學獎! Demis能獲得化學獎靠的便是谷歌赫赫有名
    的頭像 發表于 10-10 10:38 ?262次閱讀

    霍爾開關在藍牙耳機中的應用

    藍牙耳機作為一種無線通信設備,它通過藍牙技術實現與音頻源或電話的無線連接,使得用戶可以無需連接線纜即可聽取音頻或接聽電話。其中,霍爾開關在藍牙
    的頭像 發表于 09-09 10:49 ?647次閱讀

    舊款泰克TCP202和當前款TCP202A之間有何區別?

    泰克(Tektronix)是一家知名的電子測量儀器制造商,其電流探頭在電子工程和測試領域中廣泛使用。TCP202和TCP202A是泰克公司生產的兩種電流探頭,它們在設計和性能上有所不同。以下是關于
    的頭像 發表于 08-12 10:49 ?534次閱讀
    舊款泰克TCP<b class='flag-5'>202</b>和當前款TCP<b class='flag-5'>202</b>A之間有何區別?

    請問PGA204與PGA202有什么差別?

    請問PGA204與PGA202有什么差別,主要是PGA204 - 50μV 失調電壓與PGA202 - 數控有什么區別
    發表于 08-02 16:01

    用stm32制作藍牙音頻網關設備,無法連接耳機的原因?

    我用 stm32 制作藍牙音頻網關設備。 現在,我可以掃描藍牙 LE 設備了。 但是,無法連接我的耳機(從屬)。 藍牙 wiced_bt_set_pairable_mod
    發表于 07-24 07:02

    藍牙模塊在車載系統中的應用與集成:現狀、挑戰與未來展望

    模塊在車載系統中的應用,如車載電話、導航等,并探討其與車載系統的集成方式以及面臨的挑戰和未來的發展方向。 藍牙模塊在車載系統中的應用 車載電話 藍牙模塊在車載
    的頭像 發表于 06-20 17:29 ?713次閱讀

    使用ESP32 A2DP藍牙音頻制作藍牙音箱,手機來電話時通話也走ESP32,如何接電話時自動切換到iphone?

    使用ESP32 A2DP藍牙音頻制作藍牙音箱,但是手機來電話時,通話也走ESP32, 如何接電話時自動切換到iphone?
    發表于 06-14 06:58

    TLE202x-Q1,TLE202xA-Q1低功耗運算放大器數據表

    電子發燒友網站提供《TLE202x-Q1,TLE202xA-Q1低功耗運算放大器數據表.pdf》資料免費下載
    發表于 06-13 10:44 ?0次下載
    TLE<b class='flag-5'>202</b>x-Q1,TLE<b class='flag-5'>202</b>xA-Q1低功耗運算放大器數據表

    電話配線架除了110還有什么

    電話配線架除了110配線架外,還有其他類型的配線架,但具體的命名和類型可能因廠商和地區的不同而有所差異。 例如,華為提供了一種JPX202系列的電話配線架,包括JPX202-SF3D單
    的頭像 發表于 06-07 10:25 ?543次閱讀

    TLE202x,TLE202xA,TLE202xB,TLE202xY功耗精密運算放大器數據表

    電子發燒友網站提供《TLE202x,TLE202xA,TLE202xB,TLE202xY功耗精密運算放大器數據表.pdf》資料免費下載
    發表于 06-06 09:24 ?0次下載
    TLE<b class='flag-5'>202</b>x,TLE<b class='flag-5'>202</b>xA,TLE<b class='flag-5'>202</b>xB,TLE<b class='flag-5'>202</b>xY功耗精密運算放大器數據表

    烘焙vs渲染:3D模型制作中的效率與質量之爭

    探討這兩個過程,并分析它們在3D制作流程中的作用,二者之間的差異,以及在效果上的區分。模型烘焙模型烘焙是一個將動態或復雜模型信息轉換為靜態紋理的過程。這通常涉及將
    的頭像 發表于 05-12 08:27 ?500次閱讀
    烘焙vs渲染:3D<b class='flag-5'>模型</b><b class='flag-5'>制作</b>中的效率與質量之爭

    gis中制作最小阻力模型步驟

    GIS(地理信息系統)是一種集成數據、軟件和硬件技術,用于捕獲、存儲、管理、分析和顯示地理數據的系統。在GIS中,制作最小阻力模型可以用于研究生物遷徙、水流、物質擴散等現象。以下是關于制作最小阻力
    的頭像 發表于 02-25 14:59 ?1236次閱讀

    什么是衛星電話 衛星電話和普通電話區別

    衛星電話是一種通過衛星通信技術進行語音通信的設備或服務。與傳統的普通電話相比,衛星電話具有以下幾個顯著的區別。 首先,衛星電話具有全球覆蓋的能力。傳統的普通
    的頭像 發表于 02-02 16:50 ?1.6w次閱讀
    主站蜘蛛池模板: 97夜夜澡人人爽人人喊一欧美 | 天天骑天天干 | 精品国产自在现线看久久 | 日本不卡在线观看 | 一级片免费观看视频 | 天天爆操| 一级视频在线免费观看 | 日日摸人人拍人人澡 | 成在线人视频免费视频 | 激情深爱 | 国产精品一区二区三 | 国产h视频在线观看网站免费 | 日韩免费视频一区 | 黄色在线观看视频 | 国内自拍网红在综合图区 | 一级特色黄大片 | 免费一级黄色录像 | 亚洲欧美卡通 动漫 丝袜 | 同性男男肉交短文 | 理论片免费午夜 | 国产亚洲精品久久yy5099 | 日本三级在线视频 | 婷婷亚洲综合五月天在线 | 福利你懂的| 一本在线免费视频 | 久久综合九色综合98一99久久99久 | 禁网站在线观看免费视频 | 免费视频不卡一区二区三区 | 狠狠色丁香久久综合网 | 三级黄色片免费观看 | 欧美精品video | 日本不卡高清免费v日本 | 中文字幕在线观看一区二区三区 | 欧美伊人久久综合网 | 日本精品高清一区二区2021 | 最近2018免费中文字幕视频 | 青草视频在线观看国产 | 色老头免费视频 | 国产农村妇女毛片精品久久久 | l欧美18一19sex性 | 六月丁香婷婷激情国产 |