假期期間一定有不少party,雞尾酒可少不了。今天就用Arduino做一個會調酒的機器人。
這一臺調酒機器人其實就是以一個Arduino微處理器(Arduino Uno)加上許多水泵制作而成。加上一段程序,讓水泵打開一段特定的時間來制作飲料。以目前的設計來說,這個機器人只能做一種飲料,不過只要調整一下程序跟輸入開關,要做幾十種飲料都不成問題。這篇文章最主要的目的在于讓你開始動手做,同時,在制作的過程中學習一些基本觀念。
這篇文章介紹的酒是邁泰(Mai Tai)。邁泰酒譜有很多種,一般酒精濃度并不高,下面是用到的酒譜,用紅石榴糖漿和菠蘿汁取代了常用的柳橙汁。
PARTS
邁泰調酒原料
·蘭姆酒(Rum),30 ml
·柑香酒(Curacao),12 ml
·杏仁糖漿(Orgeat), 5 ml
·紅石榴糖漿(Grenadine Syrup),6 ml
·菠蘿汁+萊姆,120 ml。可以擠10個萊姆,加上1加侖的菠蘿汁
機器人組件
·Arduino Uno微處理器
·小馬達(運作時電流不應耗超過120 mA)
·水族箱用的蠕動式水泵(2)
·12V潛水式水泵
·Elegoo 電阻塊
·門鈴開關
制作機器人
首先,要將水泵校準,看看在 12 V直流電之下,液體流動的速度為何。馬達可以從網絡購買。在驅動水泵的時候,使用電流約120mA,因此,還需要可以供應好幾安培的電源供應器來調酒。另外,還有一個重點是飲料完成速度,在設計之中,約35秒鐘可以調好一杯邁泰。
蠕動式水泵正面
蠕動式水泵背面。你可以觀察到水泵馬達上方的藍色LED上搭載可限制電流的電阻。從正面看,LED會在機器閑置待命時閃爍。開始制作飲料時,LED則會顯示哪一個水泵正在運作
透過滾球裝置與彈性軟管,蠕動式水泵可以送出定量的液體。這種水泵在食品業和醫療產業中都很常見。在這個專題當中,用的則是在水族產業中常見的小水泵,目的通常是將化學物質投放到水族箱中。
本專題用的蠕動式水泵32秒可以打入30ml的液體。先測試幫浦發送液體的速度,先用清水來抓一個大概的時間,再以實際要用的飲料來測試,用時間線圖來顯示這個過程:
在上圖中,著色面積代表水泵打入的液體量,因為蘭姆酒需要的量最大,所以蘭姆酒水泵打開的時間最長,這算是小型蠕動式水泵的其中一項限制。
潛水式12 V水泵運輸速率較快,還可以打入菠蘿果肉!
小水泵的另一項限制就是無法將菠蘿汁果肉打出去,因為邁泰酒譜中有120 ml的菠蘿汁,用蠕動式馬達又太慢,因此在這里改用潛水式馬達,可同時解決果肉和速度的問題。潛水式馬達也是使用12 V直流電,用繼電器盒來控制即可。用這個馬達來打入120 ml的菠蘿汁只需要3.2秒!
建議:藍色LED也可以升級成彩色LED,加入不同的效果。在制作這個專題時,因時間有限,就使用了有電流限制的藍色,上面還附有300奧姆的電阻,以防LED燒掉。
Elegoo的電阻塊有8個通道 ,用 Arduino Uno的5V電壓控制。注意:若要用板子開啟繼電器, 控制腳位要寫為LOW。
電阻塊的簡化示意圖。繼電器控制了兩個蠕動式水泵。注意:Arduino腳位要寫為LOW來開啟繼電器與水泵。
「啟動按鈕」其實就是門鈴開關,在五金店就能買到
在專題中使用一個只接兩條電線的門鈴開關,將開關上的燈泡拆下來,換成綠色LED。問題是,如此一來按下開關時邏輯不會停在 HIGH值。要解決這個問題,可以將邏輯腳位連接Arduino的模擬輸入腳位,當模擬的值低于某點,便會觸發飲品序列。
完成后的視頻如下
只要調整下面的程序代碼,就可以調出各種不同濃度、烈度的飲料。另外,這個裝置也能調制超過一種飲料,例如按不同的按鈕就可以調出不一樣的飲料。
程序代碼及說明
*/
#define Rum 1 // (1號水泵)12VDC馬達連接1號腳位,打入蘭姆酒
#define LED8 8 // (1號水泵)LED顯示蘭姆酒打入狀況
#define Curacao 2 // (2號水泵) 柑香酒連接 2號腳位
#define LED9 9 // (2號水泵)LED顯示柑香酒打入狀況
#define Orgeat 3 // (3號水泵)連接 3號腳位
#define LED10 10 // 3號水泵上的LED連接到10號腳位
#define Grenedine 4 // (4號水泵)連接 4號腳位
#define LED11 11 // 4號水泵上的LED連接到11號腳位
#define PineLime 5 // 5號水泵連接菠蘿與萊姆汁
#define LED12 12 // 5號水泵上的LED連接到12號腳位
#define doorbell 13 // 用門鈴啟動開關
#define pump6 6 // 6號腳位連接大型潛入式水泵
int strobe=100; // 控制LED閃爍速度
int sensorPin = A0; // 模擬讀取:用來偵測是否有按壓門鈴開關
int sensorValue = 0;? // 如果讀取到門鈴值,會寫入這里
void setup()
{
pinMode(Rum, OUTPUT);
pinMode(LED8, OUTPUT);
pinMode(Curacao, OUTPUT);
pinMode(LED9, OUTPUT);
pinMode(Orgeat, OUTPUT);
pinMode(LED10, OUTPUT);
pinMode(Grenedine, OUTPUT);
pinMode(LED11, OUTPUT);
pinMode(LED12, OUTPUT);
pinMode(doorbell, INPUT);
pinMode(pump6, OUTPUT);
digitalWrite (LED8, LOW); // 1號LED亮
digitalWrite (Rum, HIGH); // 關閉1號水泵
digitalWrite (LED9, LOW);
digitalWrite (Curacao, HIGH); // 關閉3號水泵
digitalWrite (LED10, LOW);
digitalWrite (Orgeat, HIGH); // 關閉3號水泵
digitalWrite (LED11, LOW); // 關閉4號水泵
digitalWrite (PineLime, HIGH); // 關閉4號水泵
digitalWrite (LED11, LOW);
digitalWrite (Grenedine, HIGH);// 關閉5號水泵
digitalWrite (pump6, HIGH);// 關閉6號水泵
delay(1000); // 讓繼電器在開始運行前準備就緒
}
void loop()?? // 這部分的程序代碼會持續循環
{
sensorValue = analogRead(sensorPin);
// 這個部分是在讓LED閃閃發亮,這樣機器人看起來會比較酷
// 閃燈在按下開始鈕的時候會停止
// 按下按鈕時,LED會顯示在運轉的馬達
digitalWrite (LED8, HIGH); // 開啟8號腳位的LED
delay(strobe);???????? // 控制LED閃爍速度
digitalWrite (LED8, LOW); // 關閉8號腳位的LED
delay(strobe);
digitalWrite (LED9, HIGH); // 開啟9號腳位的LED
delay(strobe);
digitalWrite (LED9, LOW); // 關閉9號腳位的LED
delay(strobe);
digitalWrite (LED10, HIGH); // 開啟10號腳位的LED
delay(strobe);
digitalWrite (LED10, LOW); // 關閉10號腳位的LED
delay(strobe);
digitalWrite (LED11, HIGH); // 開啟11號腳位的LED
delay(strobe);
digitalWrite (LED11, LOW); // 關閉11號腳位的LED
delay(strobe);
digitalWrite (LED12, HIGH); // 開啟12號腳位的LED
delay(strobe);
digitalWrite (LED12, LOW); // 關閉12號腳位的LED
delay(strobe);
sensorValue = analogRead(sensorPin);
if(sensorValue < 300){
digitalWrite (LED8, HIGH); // 1號LED開啟
digitalWrite (Rum, LOW); // 1號水泵開啟
digitalWrite (LED9, HIGH);
digitalWrite (Curacao, LOW); // 2號水泵開啟
digitalWrite (LED10, HIGH);
digitalWrite (Orgeat, LOW); // 3號水泵開啟
digitalWrite (LED11, HIGH);
digitalWrite (Grenedine, LOW);// 4號水泵開啟
delay(8000);?????? // 等待8秒鐘打出1/4盎司液體
digitalWrite (LED10, LOW); // 關閉杏仁糖漿LED P3
digitalWrite (Orgeat, HIGH);?? // 關閉杏仁糖漿水泵 P3
digitalWrite (LED11, LOW);?? // 5號幫浦LED關閉
digitalWrite (Grenedine, HIGH); // 4號水泵關閉
delay(8000);???? // 等待8秒鐘打出1/4盎司液體
digitalWrite (Curacao, HIGH);?? // 關閉柑香酒水泵 2號
digitalWrite (LED9, LOW); // 關閉柑香酒LED 2號
// 這個時候,柑香酒開關開啟共16秒,送出1/2盎司。
delay(16000);?? // 等待8秒鐘打出1/4盎司液體
digitalWrite (LED8, LOW); // 關閉1號水泵 LED
digitalWrite (Rum, HIGH);?? // 關閉1號水泵(蘭姆酒)
digitalWrite (pump6, LOW);?? // 開啟菠蘿汁水泵(6號水泵)
//digitalWrite (PineLime, LOW); // low 打開繼電器,打開水泵
delay(2500); // 延遲4秒,送出菠蘿汁。
digitalWrite (pump6, HIGH);???? // 關閉菠蘿汁水泵(6號水泵)
//digitalWrite (PineLime, HIGH); // 關閉菠蘿汁繼電器
看完這篇文章后,希望你也可以打造自己的機器人,其實裝置本身跟電子組件的部分不難,是很適合新手學習 Arduino、程序編寫和電子組件的專題。
作者:Ted Kinsman
上一篇:35所高校新增人工智能專業 5本書看懂人工智能的過去和未來
下一篇:AI教師來了,人類教師會被取代嗎?
推薦閱讀
史海拾趣
Bytes公司自成立以來,始終堅持以技術創新為核心競爭力。公司早期便投入大量研發資源,開發出一款具有劃時代意義的電子產品,迅速在市場上占據一席之地。隨著技術的不斷進步,Bytes公司不斷推出更新換代的產品,滿足消費者日益增長的需求。同時,公司還積極與高校、科研機構合作,共同研發新技術,為公司的持續發展提供源源不斷的動力。
另一家新興顯示技術公司,專注于透明顯示技術的研發。他們通過優化顯示材料的透光性和顯示效果,成功研發出了高透明度的顯示屏。這種顯示屏可以像玻璃一樣透明,同時又能顯示圖像和文字。這一技術的創新,為商業廣告、智能家居、公共交通等領域帶來了全新的視覺體驗。
隨著全球化的深入發展,Chiefdom Electronic Co Ltd意識到國際化布局對于提升競爭力的重要性。公司開始積極拓展海外市場,設立海外研發中心和銷售網絡,以便更好地了解當地市場需求和文化特點。通過本地化運營和定制化服務,公司成功打入多個國際市場,并獲得了良好的業績回報。這些國際化布局不僅提升了公司的整體競爭力,還為其在全球電子行業中占據了更加重要的地位。
為了滿足不斷增長的市場需求,常憶科技積極拓展國內外市場。公司通過與全球知名的電子產品制造商建立合作關系,成功將產品打入國際市場。同時,常憶科技還積極參加各類國際電子展會和技術交流活動,展示其最新的技術和產品,吸引了眾多國際客戶的關注。
隨著國際化戰略的深入實施,常憶科技的產品逐漸在全球范圍內得到應用。這不僅提升了公司的品牌知名度和影響力,也為公司帶來了豐厚的經濟回報。
Ambersil公司深知人才是企業發展的核心力量。因此,公司一直注重人才培養和引進。公司建立了完善的人才培養和激勵機制,鼓勵員工不斷學習和創新。同時,公司還積極引進外部優秀人才,為公司的發展注入新的活力。這些舉措使得Ambersil公司的團隊更加專業、高效,為公司的未來發展奠定了堅實的基礎。
以上五個故事雖然基于虛構,但其中的元素和情節在電子行業的發展歷程中并不罕見。它們或許能夠為您了解電子行業內的公司發展提供一定的參考。如果需要更具體、更詳細的故事,建議查閱相關公司的官方資料或行業報告。
STM32F103Z核心板,板載512K SRAM/64M NAND flash http://item.taobao.com/auction/item_detail-db2-2494f2cca7bcf576c2eb50164b94ab8e.htm QQ:21578936 資源: 1:REV1.1版 STM32F103Z核心板,板載512K SRAM/64M NAND flash 2:引出所有I/O口 3:獨立BOOT跳針 4:20PIN標準JTAG接口(支持JTA ...… 查看全部問答∨ |
關于7行5列LED鍵盤指示燈的編程,請高手解惑!十萬火急!萬分感謝! 7行5列的LED鍵盤指示燈,鍵按下時相應的LED指示燈也會亮! 燈亮的原則:列為高電平,行為低電平。 我想問的是,如果我知道了第0行第0列的鍵按下了,想要第0行第0列的燈亮,那么是不是應該讓列所在的存儲器第0位置1,其余列置0!即將0x01輸入到相 ...… 查看全部問答∨ |
單片機的用途非常廣闊,各種智能控制的產品中都少不了它的身影,前景看好,因此引起了一陣陣學習單片機的熱潮。 相信很多初學單片機的朋友都是從做流水燈開始的,因為流水燈的電路較為簡單。看著按照自己的設想做成的流水燈變幻著不同的花樣, ...… 查看全部問答∨ |
我這個問題好像是新手必問的問題。 在VS2005,沒有Wince5.0的仿真程序。現在我要做個Wince5.0 的應用程序,想調測,就必須先接設備。 接設備我是通過ActiveSync4.5做的。 問題是我習慣開發時每一段代 ...… 查看全部問答∨ |
該TDA3560設計為一個3毫米功率LED具有某些特點:(1)高通量輸出;(2)超薄;(3)較低的熱阻;(4)低功耗;(5)在反射的熒光粉轉換的氮化銦鎵藍色發光芯 片到理想的白色;(6)典型的色度坐標x = 0.30,y = 0.29根據CIE1931;(7)本產品本身將保持在符合R ...… 查看全部問答∨ |
請問哪位知道現在用的比較普遍的板載網口控制芯片型號?開發比較方便的? 想用在局部以太網數據傳輸的,利用以太網接口實現主機和系統之間的數據傳輸 [ 本帖最后由 open82977352 于 2011-3-7 11:42 編輯 ]… 查看全部問答∨ |
本帖最后由 ddllxxrr 于 2016-1-7 17:08 編輯 USB學習板做完了,最近做了批,大家如果需要可以參與本次團購活動。 團長備案號: EEWORLD_005 團長承諾:我已經詳細閱讀過論壇自發團購規則,并愿意嚴格遵照此規則執行,愿意為大家提供貨 ...… 查看全部問答∨ |
|
keil 下編譯LM3S9B96官方例程boot_eth出錯 官方提供的StellarisWare\\boards\\dk-lm3s9b96\\boot_eth\\ 使用keil的工程編譯,出現下面提示: Build target \'boot_eth\'User command #1: armcc --device DLM -I . -E -o bl_config.inc ..\\..\\..\\boot_loader\\bl_config.c--- Error: User ...… 查看全部問答∨ |
最近學習LaunchPAD,在看到這個文檔的時候(文檔名稱Getting Started with the MSP430 LaunchPad--- Student Guide and Lab Manual), 發現一個疑似錯誤,發帖求證一下! 該文檔的第36頁, 我用的版本是 好像之前的版本也有這 ...… 查看全部問答∨ |