[教程]arduino交互設(shè)計作品2019——害羞的郁金香

永遠盛開的郁金香

機械郁金香雕塑母廷,只需輕輕觸摸即可綻放释移,可以發(fā)出五彩斑斕的光亮分瘾。

硬件材料

1 * Arduino Nano R3

1 * SG90舵機

1 * TTP223觸摸模塊

1 * 1毫米黃銅線

1 * 2毫米黃銅管

1 * 0.3mm絕緣銅線

7 * WS2812 5050 LED燈

30 * 白色貼片1206 LED

故事

? ?? ?? ?永恒的花朵弄捕,永恒的愛。一個完美的不只是情人節(jié)可以送給你所愛的人的禮物。這款郁金香只需輕輕觸摸即可綻放出任何顏色既鞠。它的六個花瓣將慢慢打開并點亮晕翠。當(dāng)花瓣關(guān)閉時,它們會產(chǎn)生令人難以置信的環(huán)境光線和葉子圖案担映。


如何實現(xiàn)

? ?? ???在我告訴你如何創(chuàng)造這種美之前废士,先簡單地談?wù)勊侨绾芜\作的。郁金香由6個花瓣組成蝇完,每個花瓣有5個貼片白色LED官硝。每個花瓣都與一個Arduino輸出引腳相連《掏桑花蕊隱藏了7個RGBLED氢架。從電氣的角度來說,整個花是負電壓的朋魔,花瓣中的靜脈是正電壓岖研。花瓣通過推桿打開警检,推桿一直沿著莖桿向底座延伸孙援。推桿由小型舵機構(gòu)的運動控制。閥桿側(cè)面的小葉片連接到底座內(nèi)的TTP223觸摸傳感器扇雕,并創(chuàng)建一個電容式觸摸板拓售。木質(zhì)底座包含舵機,觸摸IC和ArduinoNano镶奉。讓我們自己構(gòu)建一個吧础淤!

? ?? ?? ?我沒有告訴你材料的任何尺寸和花朵的確切形狀崭放。我認為每朵花都應(yīng)該是獨一無二的。



花瓣(4小時)

讓我們從最令人滿意的部分開始- 開花的花瓣值骇。

你需要的第一件事是開花的模板莹菱。我用石膏澆注成管模具。干燥后吱瘩,我把它塑造成郁金香花道伟。你也可以3D打印它,但我沒有3D打印機使碾。石膏很棒蜜徽,因為它很容易加工,鉛筆可以在上面畫畫票摇。單瓣是模板表面的1/4拘鞋,所以最后當(dāng)它們有6個時,它們會略微重疊矢门,形成郁金香花朵的精確外觀盆色。我用鉛筆在石膏表面畫出花瓣形狀。當(dāng)我對花瓣形狀感到滿意時祟剔,我用刀子將它雕刻成石膏隔躲,以幫助我在焊接時將桿固定到位。

花瓣由1毫米的黃銅棒組成物延,一直圍繞著形狀宣旱。花瓣內(nèi)部是5個1206白色LED和來自同一根線的“靜脈”結(jié)構(gòu)叛薯。首先浑吟,創(chuàng)建圓周線,花時間彎曲它耗溜。切下一小段管子并將其放在電線的底部平坦部分- 這將是鉸鏈花瓣將四處移動组力。焊絲末端焊接在一起,確保不要用焊料填充管子抖拴。它需要自由移動忿项。用LED和靜脈結(jié)構(gòu)完成花瓣〕俏瑁看我做一個花瓣轩触。對我感到羞恥,這是我制作這首花的唯一鏡頭家夺。


現(xiàn)在再做5個脱柱。所有花瓣都需要完全相同。這真的很重要拉馋。否則榨为,它們在關(guān)閉時不會像一個漂亮的郁金香形狀惨好,甚至可能卡住。


開花(1小時)

是時候?qū)⑺谢ò旰附釉谝黄鹆怂婀搿日川;ǖ幕渴橇切? 6個花瓣【乩郑花瓣通過鉸鏈固定在六邊形上龄句。然而,六邊形略微不規(guī)則散罕。我失敗很多次分歇。花瓣需要相互重疊欧漱,如果六邊形是規(guī)則的职抡,則不允許。三個花瓣靠近中心(內(nèi)花瓣)误甚,另外三個花瓣稍微偏移(外花瓣)缚甩。為此,我創(chuàng)建了一個模板并將其打印在紙上窑邦。紅色形狀是由兩個嵌套的正六邊形組成的最終不規(guī)則六邊形擅威。將所有鉸鏈(管道)焊接到六邊形上。從模板中心出來的光線將幫助你將花瓣焊接到正確的位置奕翔≡U花瓣的中心需要跟隨從六邊形中心出來的射線浩蓉。最后派继,當(dāng)你關(guān)閉花瓣時,你將擁有最后的花朵形狀捻艳。





制作閥桿和推桿(1小時)

首先完成了開花內(nèi)部的機制驾窟,然后添加了一個桿和推桿。它為制作增添了許多痛苦认轨。有一次绅络,我?guī)缀跸氚阉鼇G棄,永不回頭嘁字《骷保花瓣的移動是由1毫米黃銅推桿在黃銅管內(nèi)自由移動而產(chǎn)生的〖脱眩花瓣通過一個非常小的六邊形與推桿連接衷恭,每側(cè)有2mm長的鉸鏈- 推桿頭。六邊形垂直地坐在推桿上纯续,借助穿過六邊形中心的小桿随珠。這是制表師的工作灭袁。

為了做推桿頭,我做了第二個模板窗看。首先茸歧,彎曲電線以形成微小的六邊形。然后切下2毫米長的小管并將它們放在電線上显沈。焊接電線以完成六邊形形狀软瞎。再次確保不要將管道焊接到電線上。繼續(xù)將焊絲焊接到六邊形的中心构罗。并通過垂直于推桿頭中心焊接1毫米線完成桿铜涉。



將黃銅管切成所需長度。而現(xiàn)在是第二個關(guān)鍵部分遂唧。莖需要與花的六角形基部完全垂直芙代,需要在其正中心,并且需要有足夠的空間讓推桿頭向下移動以關(guān)閉花瓣盖彭。首先纹烹,我將兩根電線焊接到閥桿的一端以形成V形膨脹。這些將是連接桿與六邊形基座頂點的6根線中的2根召边。

因此將花朵倒置并將V形膨脹物焊接到六角形底座的兩個相對頂點铺呵。檢查形狀。如果你把桿放在桿內(nèi)隧熙,它需要在花的中心出來片挂。花點時間在這里完美贞盯。這真的是一個至關(guān)重要的部分音念。當(dāng)你使用它時,在六邊形頂部的其余部分和桿頂部之間焊接4根導(dǎo)線躏敢。確保不要焊接管道內(nèi)的孔闷愤!

花瓣機制(6小時)

我差點把它丟進垃圾桶里。你要釘它件余!對于這一部分讥脐,我受到蒸汽機及其桿,活塞和飛輪的啟發(fā)啼器。



用莖將花固定在向上的位置旬渠。將推桿穿過閥桿,頭部朝上端壳。垂直于推桿底端焊接短管告丢,并用1mm黃銅線制成一個小連桿,用于連接舵機和推桿(見上圖)更哄。應(yīng)該能夠使用舵機上下推動推桿芋齿。連接你的Arduino嘗試一下腥寇。在開始焊接花瓣和推桿頭之間的連桿之前,需要使用Arduino調(diào)整舵機機芯觅捆。編寫代碼赦役,以便在推桿頭端與開花六角形底座齊平的最頂部位置上下移動推桿。在最低位置栅炒,它位于開花V形底座的底部掂摔。為使推桿運動盡可能柔軟,請使用最靠近舵機臂中心的孔赢赊。舵機需要旋轉(zhuǎn)更長但步長更短乙漓。當(dāng)推桿向上移動時,推動連桿和花瓣向下释移。隨著它向下移動它連接桿和花瓣被關(guān)閉叭披。

花瓣目前缺少一個關(guān)鍵部件- 花瓣針。這個鉸鏈使花瓣移動玩讳。鉸鏈位于一個桿上(見下圖)涩蜘,該桿與平行于其底座的每個花瓣焊接在一起⊙浚花瓣銷需要位于花瓣表面之上同诫,以便在動畫中看到它完全打開。用管子的鉸鏈制作一個這樣的棒樟澜,并將其焊接到第一個花瓣上误窖。這將需要大量試驗桿的大小及其與花瓣基部的距離,以允許推桿完全打開和關(guān)閉花瓣秩贰。使用試錯法霹俺。將桿焊接到合適的位置,并在推桿銷和花瓣銷之間添加連桿萍膛。如果你的推桿位于上部位置而你的花瓣處于完全打開的位置吭服,推桿銷和花瓣銷之間的空間就是連桿的長度嚷堡。




現(xiàn)在嘗試上下推動推桿蝗罗,看看發(fā)生了什么。如果它沒有任何摩擦工作正常蝌戒,花瓣可以關(guān)閉和打開你完成(與第一個花瓣)串塑!如果沒有,請嘗試不同長度的連桿或桿的不同位置北苟。為了完成開花桩匪,在剩下的5個花瓣上復(fù)制相同的條和連桿。當(dāng)開花開放時友鼻,3個外花瓣需要稍低傻昙,以允許它們在關(guān)閉時適當(dāng)?shù)刂丿B內(nèi)花瓣闺骚。最后,你應(yīng)該能夠關(guān)閉并打開花朵妆档。不要驚慌如果你沒有做第一次嘗試的完美形狀僻爽。它只意味著所有的花瓣都不完全一樣〖值耄可能需要進行大量的微調(diào)才能創(chuàng)造出完美的形狀- 連桿的長度和桿的位置略有不同胸梆。

花蕊(1小時)

在花開的里面,我放了7個LED從內(nèi)部發(fā)光须板。這些LED只需要控制一根DATA線碰镜,并且可以菊花鏈式連接。我把它們中的6個焊接在兩個小六邊形之間(當(dāng)然是另一個模板)习瑰。下六邊形是地線绪颖,上半部分是正電壓。將適當(dāng)?shù)腘eoPixels引線焊接到這些六角環(huán)上甜奄。這些LED放置在45度角下菠发,照射到側(cè)面。為了使其更好贺嫂,將第七個LED放入上六角的中心滓鸠。最后但并非最不重要的是連接DATAIN和OUT導(dǎo)致創(chuàng)建菊花鏈。

這種結(jié)構(gòu)需要兩條線向下到達基座- VCC和DATA第喳。地面取自花架糜俗。將一根0.3的絕緣銅線焊接到上環(huán)用于VCC,第二根焊接到菊花鏈中的第一個LED用于DATA曲饱。這些電線最后會到達基座悠抹。使它們至少是莖長度的3倍。在焊接之前扩淀,這些電線的末端需要從它們的透明絕緣層中釋放出來楔敌。熱量不會破壞它。用刀子去除絕緣層驻谆。你現(xiàn)在可以測試LED以確保它們正常工作卵凑。用這些銅線溫和。如果你不小心剝?nèi)ソ^緣材料以外的其他地方胜臊,可能會發(fā)生短路勺卢!

將雌蕊結(jié)構(gòu)放在花的中心。稍微偏離開花六角形底座象对,為花瓣連桿留出足夠的空間黑忱。對我來說,它比開花六邊形高1厘米。用黃銅棒連接所有頂點甫煞,形成堅固的結(jié)構(gòu)菇曲。花完成了抚吠!現(xiàn)在測試看看花瓣是否仍能自由移動羊娃。



扎根(2小時)

花瓣和LED都需要電源線才能發(fā)光。整個花卉雕塑將是一個地面埃跷,但RGBLED有6個花瓣和2個線蕊玷,需要連接到基座上的Arduino。為此弥雹,帶有透明絕緣的0.3毫米細銅線將纏繞在管桿上垃帅。用于LED的兩條線已經(jīng)完成。將另外6個焊接到鉸鏈附近的每個花瓣上的松散靜脈線上剪勿,并使線穿過莖下的花開結(jié)構(gòu)贸诚。確保不要以銳角彎曲這些電線,它會很容易斷裂厕吉。

現(xiàn)在將所有電線收集在閥桿管的上端附近酱固,并使用捆扎帶固定它們。不要過度擰緊头朱,讓電線穿過它≡吮現(xiàn)在很好地組織開花內(nèi)的所有電線。確毕钆ィ花瓣可以自由移動班眯,推桿也不會與導(dǎo)線碰撞。完成了嗎烁巫?現(xiàn)在擰緊捆扎帶署隘。


電線現(xiàn)在無法控制地繞著閥桿運行。你需要耐心地慢慢地將它們包裹在莖干上亚隙。緊密而均勻磁餐。我花了至少一個小時才完成這一步。當(dāng)你在桿的末端時阿弃,放置另一條捆扎帶以固定那里的電線并使用透明的強力膠將它們固定在那里诊霹。確保不要用推桿密封管道!


最后一根線缺失是一個地線恤浪。將另一根銅線焊接到閥桿的底端畅哑。你應(yīng)該最終從花中出來9根電線‰瓤現(xiàn)在明智的做法是將所有電線連接到Arduino并測試是否沒有短路并且所有LED都亮起水由。



花盆(2小時)

我希望這朵花能夠從人造花盆中長出來,這也將隱藏所有電子產(chǎn)品赛蔫。我用了一塊木頭把它加工成一個4厘米高砂客,直徑9厘米的圓筒泥张。我沒有車床,因此我使用圓鋸切割原始形狀鞠值,然后使用壓力鉆作為臨時車床媚创。然后我用手動銑刀雕刻了一個2.5厘米深,直徑7厘米的開口彤恶,以適應(yīng)舵機钞钙,ArduinoNano和觸摸傳感器IC。在底部声离,還有一個小開口芒炼,可以精確地安裝ArduinoNano USB端口,以便能夠從側(cè)面連接USB線术徊。


如果你有花盆本刽,可以在花朵生長的地方用電線鉆一個直徑為花莖的孔- 可能在中心。盡量適合你的花赠涮。電線要小心子寓。如果你以銳角彎曲它們,它們就會斷裂笋除。最后斜友,我還從底座內(nèi)部添加了一個大孔,為舵機臂和連桿騰出更多空間垃它。你可以做你喜歡的任何形狀的花盆蝙寨,請記住你需要適應(yīng)所有的電子設(shè)備。



觸摸葉墊(1小時)

機械郁金香需要某種互動元素嗤瞎,使人能夠開花墙歪。我選擇了TTP223觸摸傳感器。但是哪里放一個觸控板贝奇?我決定在莖的側(cè)面添加一點葉子虹菲,既可以使花更自然,也可以作為電容式觸摸板掉瞳。觸摸時會觸發(fā)TTP223傳感器并告訴Arduino打開花朵毕源。當(dāng)你完成這么復(fù)雜的雕塑時,這對你來說將是一塊蛋糕陕习。使用與花瓣相同的技術(shù)省略LED霎褐。我也為自己創(chuàng)建了一個模板。在桿孔旁邊的基座上鉆一個小孔该镣,將葉子固定在那里冻璃。

如果你不想或不能使用電容式觸摸傳感器,可以在底座上添加一個普通的按鈕。它會做同樣的工作省艳。

把它放在一起(2小時)

這是組裝的最后一步娘纷!你緊張嗎?將花莖再次插入基座的孔中“峡唬現(xiàn)在赖晶,這是重要的一步。在切割前測量兩次辐烂!打開盛開的花朵遏插。并切斷從閥桿出來的推桿的末端與閥桿齊平。現(xiàn)在纠修,當(dāng)你再次關(guān)閉花朵時涩堤,推桿應(yīng)從莖桿中拔出。垂直于推桿焊接短管分瘾。這將是連桿與舵機臂的鉸鏈胎围。當(dāng)你放開花和桿時,它應(yīng)該完全打開德召,因為管道也會作為停止白魂。

你現(xiàn)在可以將桿粘在底座上。確保閥桿管端與底座內(nèi)側(cè)齊平上岗,以便為舵機臂留出盡可能多的空間福荸。我再次使用過強力膠水。確保不要將推桿與閥桿粘在一起肴掷。這會破壞你的工作敬锐!

接下來,膠水在葉墊上呆瞻。在你將銅線焊接到它之前台夺,能夠?qū)⑷~墊連接到TTP223觸摸傳感器。


將花倒置痴脾。雕塑周圍要小心颤介,不要現(xiàn)在打破它!這將是多么浪費赞赖!首先滚朵,將舵機放入最終位置。它的手臂應(yīng)該已經(jīng)從試驗臺準備好了前域。只需找到舵機臂在底座內(nèi)自由移動并將連桿連接到推桿的最佳位置辕近。為了將舵機系統(tǒng)固定到位,我使用了一塊金屬板和兩個螺釘匿垄。我希望在舵機故障或放置錯誤的情況下保持靈活性移宅。但如果你有信心可以粘上它归粉。

如果你有TTP223模塊,請將電線焊接到原始TTP223模塊觸摸板(組件所在的另一側(cè))的葉墊上吞杭。你需要刮擦保護性絲綢面膜以暴露銅層盏浇。粘貼觸摸模塊变丧。


進入基座的最后一個組件是ArduinoNano本身作為郁金香的大腦芽狗。將它放入底座的開口中,以便它可以連接到計算機并與所有其他組件連接:

伺服數(shù)據(jù)線? ?? ?? ?? ?? ?? ?? ????D9

TTP223觸摸傳感器數(shù)據(jù)? ?? ??D2(利用中斷)

新像素數(shù)據(jù)? ?? ?? ?? ?? ?? ?? ????A0(任何輸出引腳都可以)

花瓣? ?? ?? ?? ?? ?? ?? ?? ?? ?? ????D3痒蓬,D4童擎,D5,D6攻晒,D10顾复,D11(任何輸出引腳都可以)

花地線? ?? ?? ?? ?? ?? ?? ?? ?? ? ?GND

VCC線? ?? ?? ?? ?? ?? ?? ?? ?? ? ?5V

TTP223觸摸傳感器GND? ? ?GND

TTP223觸摸傳感器VCC? ????5V

伺服GND? ?? ?? ?? ?? ?? ?? ?? ??GND

伺服VCC? ?? ?? ?? ?? ?? ?? ?? ? ?5V

編碼(1小時)


#include <Adafruit_NeoPixel.h> #include <Adafruit_TiCoServo.h> #include "SoftPWM.h" #define NEOPIXEL_PIN A0 #define TOUCH_SENSOR_PIN 2 #define SERVO_PIN 9 //#define SERVO_OPEN 1750 #define SERVO_OPEN 1650 #define SERVO_SAFE_MIDDLE 1000 #define SERVO_CLOSED 775 #define RED 0 #define GREEN 1 #define BLUE 2 float currentRGB[] = {0, 0, 0}; float changeRGB[] = {0, 0, 0}; byte newRGB[] = {0, 0, 0}; #define MODE_SLEEPING 0 #define MODE_BLOOM 3 #define MODE_BLOOMING 4 #define MODE_BLOOMED 5 #define MODE_FADE 6 #define MODE_FADING 7 #define MODE_FADED 8 #define MODE_FALLINGASLEEP 9 #define MODE_RAINBOW 90 byte mode = MODE_FADED; byte petalPins[] = {3, 4, 5, 6, 10, 11}; Adafruit_NeoPixel pixels = Adafruit_NeoPixel(7, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ400); Adafruit_TiCoServo servo; int servoChange = 1; // open int servoPosition = SERVO_SAFE_MIDDLE; void setup() { ??Serial.begin(115200); ??pixels.begin(); ??servo.attach(SERVO_PIN, SERVO_CLOSED, SERVO_OPEN); ??pinMode(TOUCH_SENSOR_PIN, INPUT); ??attachInterrupt(digitalPinToInterrupt(TOUCH_SENSOR_PIN), _touchISR, RISING); ??randomSeed(analogRead(A7)); ??SoftPWMBegin(); ??pixelsUnifiedColor(pixels.Color(0, 0, 0)); ??//pixelsUnifiedColor(pixels.Color(255, 70, 0)); ??prepareCrossFade(140, 70, 0, 140); ??servo.write(servoPosition); } int counter = 0; byte speed = 15; void loop() { ??boolean done = true; ??switch (mode) { ? ? case MODE_BLOOM: ? ?? ?prepareCrossFadeBloom(500); ? ?? ?changeMode(MODE_BLOOMING); ? ?? ?break; ? ? case MODE_BLOOMING: ? ?? ?done = crossFade() && done; ? ?? ?done = openPetals() && done; ? ?? ?done = petalsBloom(counter) && done; ? ?? ?if (done) { ? ?? ???changeMode(MODE_BLOOMED); ? ?? ?} ? ?? ?break; ? ? case MODE_FADE: ? ?? ?//prepareCrossFade(0, 0, 0, 800); ? ?? ?changeMode(MODE_FADING); ? ?? ?break; ? ? case MODE_FADING: ? ?? ?done = crossFade() && done; ? ?? ?done = closePetals() && done; ? ?? ?done = petalsFade(counter) && done; ? ?? ?if (done) { ? ?? ???changeMode(MODE_FADED); ? ?? ?} ? ?? ?break; ? ? case MODE_FADED: ? ?? ?//prepareCrossFade(140, 70, 0, 140); ? ?? ?changeMode(MODE_FALLINGASLEEP); ? ?? ?break; ? ? case MODE_FALLINGASLEEP: ? ?? ?done = crossFade() && done; ? ?? ?done = closePetals() && done; ? ?? ?if (done) { ? ?? ???changeMode(MODE_SLEEPING); ? ?? ?} ? ?? ?break; ? ? case MODE_RAINBOW: ? ?? ?rainbow(counter); ? ?? ?break; ??} ??counter++; ??delay(speed); } void changeMode(byte newMode) { ??if (mode != newMode) { ? ? mode = newMode; ? ? counter = 0; ??} } void _touchISR() { ??if (mode == MODE_SLEEPING) { ? ? changeMode(MODE_BLOOM); ??} ??else if (mode == MODE_BLOOMED) { ? ? changeMode(MODE_FADE); ??} } // petals animations boolean petalsBloom(int j) { ??if (j < 250) { ? ? return false; // delay ??} ??if (j > 750) { ? ? return true; ??} ??int val = (j - 250) / 2; ??for (int i = 0; i < 6; i++) { ? ? SoftPWMSet(petalPins[i], val); ??} ??return false; } boolean petalsFade(int j) { ??if (j > 510) { ? ? return true; ??} ??for (int i = 0; i < 6; i++) { ? ? SoftPWMSet(petalPins[i], (510 - j) / 2); ??} ??return false; } // animations void prepareCrossFadeBloom(unsigned int duration) { ??byte color = random(0, 5); ??switch (color) { ? ? case 0: // white ? ?? ?prepareCrossFade(140, 140, 140, duration); ? ?? ?break; ? ? case 1: // red ? ?? ?prepareCrossFade(140, 5, 0, duration); ? ?? ?break; ? ? case 2: // blue ? ?? ?prepareCrossFade(30, 70, 170, duration); ? ?? ?break; ? ? case 3: // pink ? ?? ?prepareCrossFade(140, 0, 70, duration); ? ?? ?break; ? ? case 4: // orange ? ?? ?prepareCrossFade(255, 70, 0, duration); ? ?? ?break; ??} } void rainbow(int j) { ??uint16_t i; ??byte num = pixels.numPixels() - 1; ??pixels.setPixelColor(pixels.numPixels() - 1, 100, 100, 100); ??for (i = 0; i < num; i++) { ? ? pixels.setPixelColor(i, colorWheel(((i * 256 / num) + j) & 255)); ??} ??pixels.show(); } // servo function boolean openPetals() { ??if (servoPosition >= SERVO_OPEN) { ? ? return true; ??} ??servoPosition ++; ??servo.write(servoPosition); ??return false; } boolean closePetals() { ??if (servoPosition <= SERVO_CLOSED) { ? ? return true; ??} ??servoPosition --; ??servo.write(servoPosition); ??return false; } // utility function void pixelsUnifiedColor(uint32_t color) { ??for (unsigned int i = 0; i < pixels.numPixels(); i++) { ? ? pixels.setPixelColor(i, color); ??} ??pixels.show(); } void prepareCrossFade(byte red, byte green, byte blue, unsigned int duration) { ??float rchange = red - currentRGB[RED]; ??float gchange = green - currentRGB[GREEN]; ??float bchange = blue - currentRGB[BLUE]; ??changeRGB[RED] = rchange / (float) duration; ??changeRGB[GREEN] = gchange / (float) duration; ??changeRGB[BLUE] = bchange / (float) duration; ??newRGB[RED] = red; ??newRGB[GREEN] = green; ??newRGB[BLUE] = blue; ??Serial.print(newRGB[RED]); ??Serial.print(" "); ??Serial.print(newRGB[GREEN]); ??Serial.print(" "); ??Serial.print(newRGB[BLUE]); ??Serial.print(" ("); ??Serial.print(changeRGB[RED]); ??Serial.print(" "); ??Serial.print(changeRGB[GREEN]); ??Serial.print(" "); ??Serial.print(changeRGB[BLUE]); ??Serial.println(")"); } boolean crossFade() { ??if (currentRGB[RED] == newRGB[RED] && currentRGB[GREEN] == newRGB[GREEN] && currentRGB[BLUE] == newRGB[BLUE]) { ? ? return true; ??} ??for (byte i = 0; i < 3; i++) { ? ? if (changeRGB[i] > 0 && currentRGB[i] < newRGB[i]) { ? ?? ?currentRGB[i] = currentRGB[i] + changeRGB[i]; ? ? } ? ? else if (changeRGB[i] < 0 && currentRGB[i] > newRGB[i]) { ? ?? ?currentRGB[i] = currentRGB[i] + changeRGB[i]; ? ? } ? ? else { ? ?? ?currentRGB[i] = newRGB[i]; ? ? } ??} ??pixelsUnifiedColor(pixels.Color(currentRGB[RED], currentRGB[GREEN], currentRGB[BLUE])); ??/* ? ? Serial.print(currentRGB[RED]); ? ? Serial.print(" "); ? ? Serial.print(currentRGB[GREEN]); ? ? Serial.print(" "); ? ? Serial.print(currentRGB[BLUE]); ? ? Serial.println(); ??*/ ??return false; } uint32_t colorWheel(byte wheelPos) { ??// Input a value 0 to 255 to get a color value. ??// The colours are a transition r - g - b - back to r. ??wheelPos = 255 - wheelPos; ??if (wheelPos < 85) { ? ? return pixels.Color(255 - wheelPos * 3, 0, wheelPos * 3); ??} ??if (wheelPos < 170) { ? ? wheelPos -= 85; ? ? return pixels.Color(0, wheelPos * 3, 255 - wheelPos * 3); ??} ??wheelPos -= 170; ??return pixels.Color(wheelPos * 3, 255 - wheelPos * 3, 0); }

代碼有點亂,可以留言鲁捏,我發(fā)送arduino的ino文件也可芯砸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市给梅,隨后出現(xiàn)的幾起案子假丧,更是在濱河造成了極大的恐慌,老刑警劉巖动羽,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件包帚,死亡現(xiàn)場離奇詭異,居然都是意外死亡运吓,警方通過查閱死者的電腦和手機渴邦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拘哨,“玉大人谋梭,你說我怎么就攤上這事【肭啵” “怎么了章蚣?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姨夹。 經(jīng)常有香客問我纤垂,道長,這世上最難降的妖魔是什么磷账? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任峭沦,我火速辦了婚禮,結(jié)果婚禮上逃糟,老公的妹妹穿的比我還像新娘吼鱼。我一直安慰自己蓬豁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布菇肃。 她就那樣靜靜地躺著地粪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪琐谤。 梳的紋絲不亂的頭發(fā)上蟆技,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音斗忌,去河邊找鬼质礼。 笑死,一個胖子當(dāng)著我的面吹牛织阳,可吹牛的內(nèi)容都是我干的眶蕉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼唧躲,長吁一口氣:“原來是場噩夢啊……” “哼造挽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弄痹,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤饭入,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后界酒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體圣拄,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年毁欣,在試婚紗的時候發(fā)現(xiàn)自己被綠了庇谆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡凭疮,死狀恐怖饭耳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情执解,我是刑警寧澤寞肖,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站衰腌,受9級特大地震影響新蟆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜右蕊,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一琼稻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饶囚,春花似錦帕翻、人聲如沸鸠补。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽紫岩。三九已至,卻和暖如春睬塌,著一層夾襖步出監(jiān)牢的瞬間泉蝌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工衫仑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留梨与,地道東北人堕花。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓文狱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缘挽。 傳聞我的和親對象是個殘疾皇子瞄崇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345