Arduino基礎入門篇07—按鍵控制LED燈

2021-02-13 TonyCode

  閱讀本文大概需要3分鐘。

前面介紹了Arduino數字I/O,通過控制數字引腳輸出來控制LED燈亮滅。本篇將介紹數字I/O的輸入功能,通過檢測按鍵狀態來控制LED燈亮滅,把LED的亮滅變成人為可控制的。

1. 實驗材料

Uno R3開發板

配套USB數據線

麵包板及配套連接線

1個LED燈

1個220Ω電阻

1個輕觸按鍵

實驗中我們用到了輕觸按鍵,常見的有2腳按鍵和4腳按鍵,其內部結構如下圖所示:

按鍵內部結構

當按下按鍵時,按鍵兩端接通,當放開時,兩端再次斷開。

2. 實驗步驟

根據原理圖搭建電路

直插式LED燈負極接開發板GND,正極接220Ω限流電阻,電阻另一端接開發板數字9引腳。按鍵一端接開發板GND,另一端接數字引腳2。

實驗原理圖如下圖所示:

實驗原理圖

實物連接圖如下圖所示:

實物連接圖

新建sketch,拷貝如下代碼替換自動生成的代碼並進行保存。

1
5
6int buttonPin = 2; 
7int ledPin =  9;  
8
9int buttonState = 0; 
10
11void setup() {
12  pinMode(ledPin, OUTPUT);  
13  pinMode(buttonPin, INPUT_PULLUP); 
14}
15
16void loop() {
17
18  buttonState = digitalRead(buttonPin); 
19
20  if (buttonState == LOW) { 
21    delay(80); 
22    if (buttonState == LOW) 
23    {  
24      digitalWrite(ledPin, HIGH); 
25    }
26  }
27  else {   
28    digitalWrite(ledPin, LOW); 
29  }
30
31}

連接開發板,設置好對應埠號和開發板類型,進行程序下載。

程序下載3. 實驗現象

按下按鍵,LED燈點亮。放開按鍵,LED燈熄滅。

實驗現象4. 函數介紹

digitalRead()

描述:讀取指定數字引腳的值

函數原型:digitalRead(pin)

參數:要讀取的數字引腳編號

返回值:HIGH(1)或LOW(0)

5. 總結分析

通過digitalRead()函數來讀取數字I/O引腳狀態,然後根據狀態去點亮或者熄滅LED燈。需要注意:

由於Arduino上電後,數字I/O管腳處於懸空狀態,此時通過digitalRead()讀到的是一個不穩定的值(可能是高,也可能是低)。所以通過pinMode()函數設置按鍵引腳為上拉輸入模式。即使用內部上拉電阻,按鍵未按下時,引腳將為高電平,按鍵按下為低電平。

按鍵在按下的過程中,有一段接觸未接觸的不穩定過程,即按鍵的抖動。在判斷按鍵狀態時,通過delay()延時跳過抖動的不穩定狀態,即軟體上進行消抖。

可以不使用內部上拉電阻,在電路上添加按鍵的上拉電阻或下拉電阻,可達到相同效果。

掃碼加入微信公眾號:TonyCode

相關焦點

  • Arduino基礎入門篇06——流動的LED燈
    上一篇介紹了Arduino數字I/O引腳及相關函數,並點亮了板載LED燈。本篇將使用麵包板搭建電路,多個LED燈配合顯示流動效果。1. 實驗材料Uno R3開發板配套USB數據線麵包板及配套連接線6個LED燈6個220Ω電阻2.
  • 大牛輕鬆帶你玩轉Arduino智能硬體三-arduino入門:打造LED流水燈
    (三)arduino入門:打造LED流水燈  學完上節課的內容,學會了如何控制led燈之後,我相信這幾科的內容一會非常容易的。這節課是控制多個led燈。  一、準備材料arduino uno開發板一塊led燈6個(顏色隨意)杜邦線若干usb數據線  二、編程環境Arduino IED  三、原理講解控制單個LED燈是只需要引腳給高低電平,就可以控制燈的亮滅流水燈:多個led燈需要使用多個引腳控制,所以這裡使用2到7號引腳。分別控制燈的亮滅,就可以實現流水燈的效果。
  • 「初識Arduino - 3」按鈕控制LED燈
    (可能是高也可能低電平,可能是電磁感應等原因產生的),這會導致程序會認為我們在一直隨機的按動按鍵,因此這邊需要加一個下拉電阻(接一個電阻(常用10KΩ)然後接入GND),這樣在沒接電的時候永遠是低電平(接地了),一旦按下按鍵通電之後,就能立馬判斷出高電平了這邊注意四腳按鍵開關要把針腳用一點力輕輕按進去,不能就輕輕放在表面
  • 「初識Arduino - 3」PWM控制LED燈
    是將模擬信號變為脈衝的一種技術(用數字來控制模擬輸出的一種手段)。PWM可以控制LED亮度、控制馬達速度、控制直流電動機的速度等正弦波、方波、三角波與鋸齒波Arduino數字引腳給我們提供了我們無法得到0-5V之間的電壓(串聯電阻可以),但是我們可以通過改變信號的開關時間來改變LED亮度(即控制佔空比)PWM是一種方波控制信號,方波高電平的寬度在一個周期裡的佔比被稱為佔空比(Duty Cycle)。改變PWM的佔空比,可以改變輸出信號的平均電壓,實現模擬電壓的輸出。
  • Arduino基礎入門篇10—電位器控制LED燈
    本篇介紹Arduino模擬輸入功能,通過讀取電位器輸入的電壓值來控制LED燈的亮度。模擬輸入引腳是帶有ADC(Analog-to-Digital Converter,模數轉換器)功能的引腳。它可以將外部輸入的模擬信號轉換為晶片運算時可以識別的數位訊號,從而實現讀入模擬值的功能。
  • 樹莓派用gpiozero庫控制LED燈
    15/16年的時候,makeblock的mblock(現kittenblock的CTO開發)軟體非常流行,大大降低了人們學習和使用arduino的難度。scratch-like圖形化編程積木塊編程當然降低了編程的難度,但是我覺得易用的本質原因是抽象的程度足夠高,而gpiozero就是像scratch一樣,具有非常高抽象程度的,可以讓我們更加直觀的控制樹莓派gpio的第三方python庫。
  • 如何用Matlab連接控制Arduino:GUI界面製作與電機控制
    筆者以Matlab軟體研究如何控制Arduino,將從Matlab製作Arduino的GUI界面和simulink應用出發,探索如何使用Matlab連接和控制Arduino。  Matlab與Arduino聯合應用——GUI界面  首先介紹如何安裝配置一個基於Matlab的GUI界面,能夠實現對ArduinoIO口的操作。
  • 萬能超的arduino學習日記(一)
    從arduino uno的各個引腳功能到各類元器件的使用方法視頻裡講的很清楚,我主要從三個小電路的控制來帶大家總結一下一些簡單的小函數。本次推送,主要是帶大家進行一個小小的入門,寫的相對粗略,具體的學習還是要靠大家自主學習,後面我將會帶大家開始一個個小項目的製作。首先,拿出我珍藏已久的亂七八糟元器件和arduino開發板。
  • 三、ESP32開發板NodeMcu-32S點燈和按鍵控制
    ,輸出低電平兩端都是0V那麼燈滅LED程序編寫有接觸過arduino編程的可能會對界面比較熟悉,沒有的話也可以參考arduino社區中的GPIO控制的函數功能點亮LED控制LED燈也可以說是我們控制GPIO口狀態的過程,在控制GPIO口電平變化的過程中我們需要用到以下幾個函數pinMode
  • 智能家居控制-arduino紅外遙控控制燈
    上一篇文章介紹了 arduino接受智能家具系統中的紅外遙控的解碼在此基礎上,今天就做一個遙控器控制的燈,我們可以將燈換成繼電器,這樣的話就實現了,用紅外遙控機,控制家裡的電器開關,比如燈,電視,插座,洗衣機等
  • arduino項目:發光逗趣口罩
    今天給大家介紹一個互動性強的arduino點陣搞怪口罩,這個是我在看到國外的創客夥伴先做了一個麥克風+8x8LED的模仿人說話口型的口罩出來,然後靈機一動,用手邊的點陣模塊+震動模塊的組合也模仿了一個模仿人說話口型的口罩出來,主要是給經常帶口罩的人娛樂他人用的。
  • STM32 嵌入式學習入門(3)——STM32F103 按鍵輸入控制LED燈
    按鍵是單片機上一個很重要的輸入設備,也很容易掌握,只要明白了IO口最基本的使用,就可以操作按鍵了。我們的目的是控制開發板上板載的三個按鍵來操作開發板上板載的兩個LED燈實現亮或滅(按鍵第一次按下時燈亮,再按下時燈滅,以此類推)。
  • 智能家居控制-arduino紅外基本控制
    智能家居控制系統中最常見的應該就是紅外遙控器了,電視,空調,機頂盒等,基本上常見的只要是遙控控制的都是採用的紅外發射控制。紅外發射,其實就是將要控制的設備,通過遙控的主控晶片發射一組編碼,然後設備接收後進行對應的操作,要想實現智能設備控制就先要知道遙控器發射的是什麼今天這篇文章就是用arduino這個最基本的單片機,來解讀不同遙控器發射出來的編碼,知道編碼後,就可以實現後續使用單片機或者智能音響控制設備。
  • 如何使用開源硬體的WIFI控制開關
    打開APP 如何使用開源硬體的WIFI控制開關 石門coder 發表於 2020-02-07 10:45:04 對作為主要連接電源的開關進行智能化改造,既能實現傳統的控制功能又極大的降低了改造成本。在這樣的背景下,本開關實現了基於Wi-Fi的智能開關控制系統,該系統以Wi-Fi通信技術為基礎,並且加入了伺服器,只要擁有公網ip,在廣域網環境下便可以通過手機對智能插座進行控制。 本系統設計的智能插座控制系統為B/S模式,由智能插座硬體服務端、瀏覽器控制端組成。
  • Arduino教程5:製作流水燈
    在這一篇文章中新朋將帶大家做一個簡單而且又有趣好玩的東西——流水燈,在製作的過程中我們將學習如何使用Arduino進行數字輸出(開關LED燈)並了解如何通過程序實現多個LED燈有順序的點亮與熄滅。
  • 搭建第一個程序控制電路LED燈,體會C語言的魅力
    一、首先,介紹一下arduino UNO控制器內部電壓的問題。v 高電平(5V):對應數值是1,輸入狀態3.5V-5.5V。v 低電平(0V):對應數值是0,輸入狀態-0.5V-1.5V。二、Mixly程序:三、代碼程序編寫:void setup()//當Arduino板起動,setup()函數會被調用。
  • arduino從零開始(4)PWM與呼吸燈
    即:使用數字控制產生佔空比不同的方波(一個不停在開與關之間切換的信號)來控制模擬輸出。我們要在數字電路中輸出模擬信號,就可以使用PWM技術實現。在arduino中,我們常用PWM來驅動LED的暗亮程度,電機的轉速等。我們知道,在數字電路中,電壓信號是離散的: 不是 0(0V)  就是 1(5V或者3.3V), 那麼如何輸出介於 0v 和  5V之間的某個電壓值呢?
  • Arduino 課時二:控制Led
    將引腳的值放在數組ledpin[]裡,方便後續調用。1.控制Led的亮與滅int ledpin[]={2,3,4,5,6,7};void setup(){    for(int i=0;i<=5;i++){    pinMode(ledpin[i],OUTPUT);}  }void loop(){    for(int
  • 如何使用neopixel或ws 2812或帶Arduino的快速LED
    購買零件: 購買ARDUINO UNO: https://www.utsource.net/itm/p/7199843.html 購買WS2812 LED燈: httpswww.utsource.net/itm/p/8673712.html 購買WS2812 LED燈環: https://www.utsource達網絡/ITM/p/8673715.html //////////////////////////////////////////////////////// 所以首先需要獲得兩個重要組件,其中一個是arduino
  • 乾貨|arduino基本IO介紹
    今天小營營為大家講解的是arduino的基本IO介紹。跟小營營學起來吧!     先給大家看兩張圖片,這是比較簡單的單片機(關於單片機的簡單介紹可在公眾號菜單欄get到)。(雖然看起來內部結構不太簡單,但是沒關係,這些不重要)。我們只需要看它能對外提供的功能。簡單也是指對外提供的功能以及使用簡單。