[入門] Arduino教程 Lesson 14--自制風扇
所需材料
- 1× 5mm LED燈
- 2× 220歐電阻
- 1× 按鈕
- 1× 繼電器 HRS1H-S -DC5V
- 1× 小電機
-
1 × 風扇葉片
STEP 1: 硬體連線
按下圖進行連線,按鈕連線到數字2。按鈕一端連線5V,另一端連線GND,並用一個220Ω的電阻作為下拉電阻,以防引腳懸空干擾。繼電器有6個引腳,分別標有序號。1,2引腳為繼電器的輸入訊號,分別接Arduino的數字引腳和GND。3,4,5,6為繼電器輸出的控制引腳,這裡只使用4,6兩個引腳。我們把繼電器想成一個開關,開關也只要用到兩個引腳。
STEP 2: 輸入程式碼
-
int buttonPin = 2; // button連線到數字2
-
int relayPin = 3; // 繼電器連線到數字3
-
int relayState = HIGH; // 繼電器初始狀態為HIGH
-
int buttonState; // 記錄button當前狀態值
-
int lastButtonState = LOW; // 記錄button前一個狀態值
-
long lastDebounceTime = 0;
-
long debounceDelay = 50; //去除抖動時間
-
void setup() {
-
pinMode(buttonPin, INPUT);
-
pinMode(relayPin, OUTPUT);
-
digitalWrite(relayPin, relayState); // 設定繼電器的初始狀態
-
}
-
void loop() {
-
int reading = digitalRead(buttonPin); //reading用來儲存buttonPin的資料
-
// 一旦檢測到資料發生變化,記錄當前時間
-
if (reading != lastButtonState) {
-
lastDebounceTime = millis();
-
}
-
// 等待50ms,再進行一次判斷,是否和當前button狀態相同
-
// 如果和當前狀態不相同,改變button狀態
-
// 同時,如果button狀態為高(也就是被按下),那麼就改變繼電器的狀態
-
if ((millis() - lastDebounceTime) > debounceDelay) {
-
if (reading != buttonState) {
-
buttonState = reading;
-
if (buttonState == HIGH) {
-
relayState = !relayState;
-
}
-
}
-
}
-
digitalWrite(relayPin, relayState);
-
// 改變button前一個狀態值
-
lastButtonState = reading;
-
}
STEP 3: 程式碼回顧
程式碼的大部分內容,基本應該沒有什麼難度了,主要說下按鍵去抖問題。程式碼中:
-
if (reading != lastButtonState) {
-
lastDebounceTime = millis();
-
}
-
if ((millis() - lastDebounceTime) > debounceDelay) {
-
if (reading != buttonState) {
-
……
-
}
-
}
之所以這麼做的原因是,按鍵在被按下時,會有個抖動的過程,而不是立馬由低變高,或者由高變低。所以這個過程中,可能會產生錯誤訊號,我們通過程式中的這種方法,來解決硬體上的這個問題。
STEP 4:硬體回顧
繼電器
我們可以把繼電器理解為一個“開關”,實際上是用比較小的電流去控制較大電流的“開關”。這裡只是為了讓初學者瞭解繼電器工作原理,所以沒有使用較大的電源器件,還是選用是需要5V就能驅動的直流電機。
我們來看下繼電器的內部構造:
這款繼電器一共有6個引腳。1,2 引腳是用來接Arduino數字引腳和GND。通過數字引腳來驅動繼電器。1,2兩端為線圈兩端。Arduino給HIGH後,線圈中就有電流,線圈就會產生磁性(就像磁鐵一樣),吸閤中間的觸片(能聽到“噠”一聲),常開端(NO)就與公共端導通。相反,如果Arduino給LOW,線圈中沒有電流,常閉端(NC)就與公共端導通。
所以,電路中我們接了4,6引腳用於控制電機和LED的通斷,(當然也可以用引腳3,6)。
直流電機、直流減速電機與舵機的區別
普通直流電機是我們接觸比較多的電機。一般只有兩個引腳,上電就能轉,正負極反接則反向轉動。如你所見,它做著周而復始的圓周運動,無法進行角度的控制,不過可以通過電機驅動板,可以對轉速進行控制,不過由於普通電機轉速過快,所以,一般不直接用在智慧小車上。
直流減速電機是在普通電機加上了減速箱,這樣便降低了轉速,使得普通電機有的更廣泛的使用空間,比如可以用於智慧小車上。同樣也可以通過PWM來進行調速。
舵機也是一種電機,它使用一個反饋系統來控制電機的位置,可以用來控制角度。所以,舵機經常用來控制一些機器人手臂關節的轉動。
相關推薦
[入門] Arduino教程 Lesson 14--自制風扇
這次,我們會做一個小風扇。同時會接觸兩件新元件——繼電器、直流電機。繼電器,我們可以理解為是用較小的電流去控制較大電流的一種“自動開關”。在這裡,繼電器是用來控制電機轉動的。所需材料 1× 5mm LED燈 2× 220歐電阻 1× 按鈕 1× 繼電器 HRS1H-
[入門] Arduino教程 Lesson 10 -- 感光燈
這個專案中將介紹一個新元件——光敏電阻。從名字可以看出,這個器件是依賴光作用的。在黑暗的環境中,光敏電阻具有非常高阻值的電阻。光線越強,電阻值反而越低。通過讀取這個電阻值,就可以檢查光線的亮暗了。我們這裡選用的是光敏二極體,光敏二極體其實就是光敏電阻中的一種,只是它還具有正
MVC 5 + EF6 入門完整教程14 -- 動態生成面包屑導航
maps setting i++ log item 文檔 應該 動態生成 內容 上篇文章我們完成了 動態生成多級菜單 這個實用組件。 本篇文章我們要開發另一個實用組件:面包屑導航。 面包屑導航(BreadcrumbNavigation)這個概念來自童話故事"漢賽爾和格萊特"
arduino教程- 14.製作光電子琴與MIDI電子鼓
發聲體和聲音 揚聲器(speaker)和蜂鳴器(piezo transducer) piezoelectric(壓電感應) 音訊:振動的頻率 音高(pitch):聲音的頻率(音訊)高低 tone()指令: tone(輸出埠, 頻率, 持續時間); 或 tone(輸出埠, 頻率),若不指定
Angular 4入門教程系列 14 PrimeNG的使用方式
這篇文章介紹一下Angular的老牌UI元件庫PrimeNG,並演示一下如何使引入PrimeNG到專案之中。 Why PrimeNG 使用PrimeNG有很多原因,比如 70多個完善的元件 開源 提高生產性 多種主題 高度可定製的模板 移動端使用者體驗的
Linux入門學習教程:在Ubuntu 14.04中安裝使用搜狗拼音輸入法
在Ubuntu Kylin系統中,預設安裝搜狗拼音輸入法,但是在原生Ubuntu系統中則不是。這可以理解,畢竟搜狗輸入法的Linux版有Kylin團隊的不小功勞。由於搜狗輸入法確實比Linux系統下其它的中文輸入法都要好用得多,所以我決定在我的Ubuntu 14.04系
Arduino 卡片13自制風扇
1、硬體部分 做一個小風扇。同時會接觸兩件新元件——繼電器、直流電機。繼電器,我們可以理解為是用較小的電流去控制較大電流的一種“自動開關”。在這裡,繼電器是用來控制電機轉動的。 按下圖進行連線,按鈕連線到數字2。按鈕一端連線5V,另一端連線GND,並用一個220Ω的電阻作為
Angular入門到精通系列教程(14)- Angular 編譯打包 & Docker釋出
[TOC] > 環境: > * Angular CLI: 11.0.6 > * Angular: 11.0.7 > * Node: 12.18.3 > * npm : 6.14.6 > * IDE: Visual Studio Code # 1. 概要 當我們完成angular的開發後,如何部署
linux學習入門標準教程(2)
linux標準教程Linux系統篇2.1 Linux系統管理經過前兩章的學習,咱們現已可以獨立裝置Linux體系,現已把握了Linux學習的竅門,那接下來,咱們將體系的來了解Linux體系各目錄、權限及常用命令的運用。2.1. 1 Linux目錄初識通過前面的學習,我們已經能夠獨立安裝完一個linux
Python入門系列教程(二)
字符 小寫 無符號 bsp div width raw_input abc body 字符串 1.字符串輸出 name = ‘xiaoming‘ print("姓名:%s"%name) 2.字符串輸入 userName = raw_input(‘請輸
Python入門系列教程(五)函數
st3 python入門 test print 缺省 .com 教程 技術 log 全局變量 修改全局變量 a=100 def test(): global a a=200 print a 多個返回值 缺省參數 d
MVC5+EF6 入門完整教程九
taf bag details 視圖 clu role pre 階段 驗證 前一陣子臨時有事,這篇文章發布間隔比較長,我們先回顧下之前的內容,每篇文章用一句話總結重點。 文章一 MVC核心概念簡介,一個基本MVC項目結構 文章二 通過開發一個最基本的登錄界面,介紹了如何從C
MVC5+EF6 入門完整教程12--靈活控制Action權限
全局 基本功 -1 str 條件 context tac 完整 suse 大家久等了。 本篇專題主要講述MVC中的權限方案。 權限控制是每個系統都必須解決的問題,也是園子裏討論最多的專題之一。 前面的系列文章中我們用到了 SysUser, SysRole, SysUserR
MVC5+EF6 入門完整教程七
好的 ring 改變 替換 使用 需要 註釋 mod num 本篇我們針對表格顯示添加一些新功能。 前面我們已經講解過表格顯示數據了,現在我們添加三個常用功能: 對顯示結果進行排序、過濾、分頁。 文章提綱 理論基礎/前置準備 詳細步驟 總結 前置準備 – 應
MVC5+EF6 入門完整教程十
crud 新建 用戶角色 tro mic acc where shtml pos 本篇是第一階段的完結篇。 學完這篇後,你應該可以利用MVC進行完整項目的開發了。 本篇主要講述多表關聯數據的更新,以及如何使用原生SQL。 文章提綱 多表關聯數據更新 如何使用原生SQ
全網首創ISE入門級教程
加法 表示 cnblogs htm padding 九月 雲服務器 對他 實驗 轉眼間我已經大三了,現在成為了實驗室的負責人,對於下一屆學生的納新重任就交到了我的手上,想采取不同的方法暑假就可能對他們進行一些培訓,所以制作了此教程,說實話,在網上還沒有找到關於ISE的
【幹貨】Html與CSS入門學習筆記12-14【完】
進度條 tom step char number 視頻容器 復選框 其中 私有 十二、HTML5標記 現代HTML html5新增的元素:header nav footer aside section article time 這些新增元素使頁面結構更清晰,取代<di
duilib入門簡明教程 -- VS環境配置(2) (轉)
dem mil 國際 程序設計 界面 環境 消息 商業 href 原文轉自:http://www.cnblogs.com/Alberl/p/3342030.html 既然是入門教程,那當然得基礎點,因為搜索duilib相關資料時,發現有些小夥伴到處都是編譯錯誤,
duilib入門簡明教程 -- 響應按鈕事件(4) (轉)
gif attach yui world lpc handler str and lba 原文轉自 http://www.cnblogs.com/Alberl/p/3343610.html 上一個Hello World的教程裏有一句代碼是這樣的:CControl
HTTP監視器charles入門使用教程分享---http/s packet monitors---ubuntu installation
pro ckey create blog repo -- can cor free APT repository Charles has an APT repository for Debian-based Linux distributions. NB: The