1. 程式人生 > >[入門] Arduino教程 Lesson 14--自制風扇

[入門] 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: 輸入程式碼
  1. int buttonPin = 2;                          // button連線到數字2
  2. int relayPin = 3;                           // 繼電器連線到數字3
  3. int relayState = HIGH;                      // 繼電器初始狀態為HIGH 
  4. int buttonState;                            // 記錄button當前狀態值
  5. int lastButtonState = LOW;                  // 記錄button前一個狀態值
  6. long lastDebounceTime = 0;                  
  7. long debounceDelay = 50;                    //去除抖動時間
  8. void setup() {
  9.        pinMode(buttonPin, INPUT);
  10.        pinMode(relayPin, OUTPUT);
  11.        digitalWrite(relayPin, relayState);       // 設定繼電器的初始狀態
  12. }
  13. void loop() {
  14.        int reading = digitalRead(buttonPin);   //reading用來儲存buttonPin的資料
  15.        // 一旦檢測到資料發生變化,記錄當前時間
  16.        if (reading != lastButtonState) {   
  17.                    lastDebounceTime = millis();
  18.         } 
  19.        // 等待50ms,再進行一次判斷,是否和當前button狀態相同
  20.        // 如果和當前狀態不相同,改變button狀態
  21.        // 同時,如果button狀態為高(也就是被按下),那麼就改變繼電器的狀態
  22.        if ((millis() - lastDebounceTime) > debounceDelay) {
  23.               if (reading != buttonState) {
  24.                       buttonState = reading;
  25.                        if (buttonState == HIGH) {
  26.                                  relayState = !relayState;
  27.                        }
  28.                }
  29.          }
  30.          digitalWrite(relayPin, relayState);
  31.          // 改變button前一個狀態值
  32.          lastButtonState = reading;
  33. }
複製程式碼 通過按鍵,可以控制電機和LED的開和關。


STEP 3: 程式碼回顧
程式碼的大部分內容,基本應該沒有什麼難度了,主要說下按鍵去抖問題。程式碼中:
  1.   if (reading != lastButtonState) {   
  2.          lastDebounceTime = millis();
  3.   } 
  4.   if ((millis() - lastDebounceTime) > debounceDelay) {
  5.          if (reading != buttonState) {
  6.                ……
  7.          }
  8.   }
複製程式碼 reading有變化之後,不是立馬就採取相應的行動,而是先“按兵不動”,先看看這個訊號是不是“錯誤訊號”,所以再等待一陣,(也就是通過millis來實現這個等待過程的),發現確實是前方發過來的正確訊號,然後執行相關動作。

之所以這麼做的原因是,按鍵在被按下時,會有個抖動的過程,而不是立馬由低變高,或者由高變低。所以這個過程中,可能會產生錯誤訊號,我們通過程式中的這種方法,來解決硬體上的這個問題。


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