在本文中,我們將學習如何使用 Arduino 構建基于觸控的變色植物。當您觸摸植物時,植物花瓶的顏色會自動改變。這是一個不錯的室內裝飾項目,也是初學者構建和學習一些有趣東西的小愛好項目。
現在,當我們說基于觸摸的植物時,可能會出現一個常見問題,即電子電路如何通過植物檢測到人類的觸摸。如今,觸摸感應設備無處不在。我們可以在智能手機和不同類型的電器中看到觸摸屏。觸摸傳感器只是一個開關,當有人觸摸觸摸傳感器時,傳感器會關閉電子電路并允許電流流動。
觸摸傳感器類型
從手機到智能自動售貨機,如今,我們可以在所有現代設備中找到觸摸傳感器。觸摸傳感器主要有兩種類型,即 電阻式觸摸式和電容式觸摸式。類型名稱本身就表明了操作方式和工作原理。
電阻式觸摸傳感器:顧名思義,電阻式觸摸傳感器的工作原理是基于導體的電阻。當人體發生觸摸時,導體的電阻率會發生變化,也會產生電壓變化,這種電壓變化會被電路檢測到,事情就會發生。
電容式觸摸傳感器:這是最常用的觸摸傳感器類型。這僅僅是因為我們可以一次執行多個觸摸。電容式觸摸傳感器基于電容的變化工作,即當我們觸摸傳感器時,電路的電容發生變化,這將被檢測為觸摸。現在讓我們詳細討論一下我們的電路。
如何檢測植物的觸摸?
我們廠的電路也是基于電容式觸摸傳感器。也就是說,我們將一根電線連接到我們的植物上,使其像電極一樣,然后當我們觸摸植物時,由于我們身體的存在,電容會發生變化,這將被我們的電路檢測到。說到電路,我們需要一個微控制器來檢測電容的變化并控制整個系統。在我們的例子中,微控制器是 Arduino。
制作我們的變色植物花瓶所需的材料
阿杜諾
共陰極RGB LED
1兆歐電阻(棕色、黑色、綠色)
連接線
有基地的植物
普通PCB
基于觸摸的變色 Arduino Plant 電路圖
該項目中使用的完整電路圖如下所示。該電路是使用 Easy EDA 創建的,如您所見,它是一個非常簡單的電路。
首先,在 Arduino 引腳 2 和引腳 4 之間連接一個兆歐電阻。然后將一根長線(銅)連接到引腳 4。這條線充當電極或觸摸引線,然后將 RGB LED 公共接地連接到地,紅色連接到Arduino的D5和D6的綠色,D7的藍色,最后將電線連接到植物體上,就是這樣。連接后我的硬件設置如下所示。
我已將 RGB LED 連接到一個普通的穿孔板上(如下圖所示),最后將底座(玻璃)放在 PCB 上方。而已。
用于檢測植物觸摸并更改 LED 顏色的 Arduino 程序
此項目中使用的完整程序可在此頁面底部找到。要檢測植物的電容,我們需要使用電容傳感器庫。您可以從以下鏈接下載 Arduino 電容式傳感器庫。
下載 Arduino 電容式觸摸傳感器庫
下載庫并將其添加到您的 Arduino IDE 后,將該庫包含到您的代碼中。該庫有助于讀取 Arduino 引腳的電容。
#include <電容傳感器.h>
我們已經在引腳 2 和 4 之間連接了電阻,因此我們需要測量引腳 4 中的電容,為此,定義引腳。
電容傳感器 cs_2_4 = 電容傳感器(2,4);
電容傳感器切換微控制器引腳,即它將引腳發送到新狀態,然后等待接收引腳更改為與發送引腳相同的狀態。在設置部分,我為 LED 和傳感器引線定義了不同的引腳。
pinMode(4,輸入); pinMode(5,輸出); pinMode(6,輸出); pinMode(7,輸出);
在循環部分借助數字讀取,我們可以讀取引腳 4 的狀態,并將值存儲在變量“r”中。
r = 數字讀取(4); if (r == HIGH && p == LOW && millis() - time > debounce) { cnt++; 如果(狀態 == 高) 狀態 = 低; if(cnt == 1){ digitalWrite(5, HIGH); 數字寫入(6,低); 數字寫入(7,低); } if(cnt == 2){ digitalWrite(5, LOW); 數字寫入(6,高); 數字寫入(7,低); } if(cnt == 3){ digitalWrite(5, LOW); 數字寫入(6,低); 數字寫入(7,高); } if(cnt > 3){ cnt = 1; } p = r;
每次檢測到觸摸時,它都會增加計數,我根據增加的數字給出了不同的條件以不同的顏色點亮。
代碼準備好后,只需將其上傳到您的 Arduino 板并將 LED 放在您的花瓶下。在這里,我使用的是玻璃花瓶,一切準備就緒后,我的設置看起來像這樣。
#include <電容傳感器.h>
電容傳感器 cs_2_4 = 電容傳感器(2,4);// 引腳 2 和 4 之間有 1M 電阻,引腳 4 是傳感器引腳,添加一根導線和
詮釋cnt = 0;
整數 = 2;
詮釋= 4;
詮釋狀態=高;
詮釋r;
詮釋 p = 低;
長時間 = 0;
長時間去抖 = 200;
無效設置()
{
pinMode(4,輸入);
/* LED 輸出 */
pinMode(5,輸出);
pinMode(6,輸出);
pinMode(7,輸出);
}
無效循環()
{
r = 數字讀取(4);
if (r == HIGH && p == LOW && millis() - time > debounce) {
cnt++;
如果(狀態 == 高)
狀態=低;
別的
時間=毫秒();
}
如果(cnt == 1){
數字寫入(5,高);
數字寫入(6,低);
數字寫入(7,低);
}
如果(cnt == 2){
數字寫入(5,低);
數字寫入(6,高);
數字寫入(7,低);
}
如果(cnt == 3){
數字寫入(5,低);
數字寫入(6,低);
數字寫入(7,高);
}
如果(cnt > 3){
cnt = 1;
}
p = r;
}
-
觸控
+關注
關注
9文章
230瀏覽量
71411 -
RGB
+關注
關注
4文章
801瀏覽量
58740 -
觸摸傳感器
+關注
關注
0文章
123瀏覽量
23114 -
Arduino
+關注
關注
188文章
6477瀏覽量
187968
發布評論請先 登錄
相關推薦
評論