Arduino 項目:使用瀏覽器點亮內建LED

在這篇教學中,我們將擴展 Arduino Web Server 範例 ,以便可以通過瀏覽器向 Arduino 發送指令。 我們將透過存取 /on 的 URL 點亮 Arduino 上的內建 LED,並透過開啟 /off 的 URL 來關閉它。其他任何指令都將無效。 以下是來自其他教學的程式碼: #include <SPI.h> #include <WiFiNINA.h> WiFiServer server(80); void setup() { char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; Serial.begin(9600); while (!Serial); int status = WL_IDLE_STATUS; while (status != WL_CONNECTED) { Serial.print("Connecting to "); Serial.println(ssid); status = WiFi.begin(ssid, pass); delay(5000); } Serial.print("IP address: "); Serial.println(WiFi.localIP()); server.begin(); } void loop() { WiFiClient client = server....

arduino-read-values-http

#從Arduino通過HTTP讀取數值 在本教程中,我想擴展Arduino Web Server教程以讀取由傳感器測量的數值,這樣我們只需打開瀏覽器上的一個頁面就可以看到數據。 例如,我們將使用DHT11傳感器測量溫度,並使用接近傳感器測量對象距離。 我們通過訪問/on URL點亮Arduino上的內置LED,並通過打開/off URL關閉它。其他任何操作都不起作用。 這是來自其他教程的代碼: #include <SPI.h> #include <WiFiNINA.h> WiFiServer server(80); void setup() { char ssid[] = SECRET\_SSID; char pass[] = SECRET\_PASS; Serial.begin(9600); while (!Serial); int status = WL\_IDLE\_STATUS; while (status != WL\_CONNECTED) { Serial.print("Connecting to "); Serial.println(ssid); status = WiFi.begin(ssid, pass); delay(5000); } Serial.print("IP address: "); Serial.println(WiFi.localIP()); server.begin(); } void loop() { WiFiClient client = server.available(); if (client) { String line = ""; while (client.connected()) { if (client....

Arduino專案:讀取數位輸入

在這個專案中,您將學習使用digitalRead()函數從數位I/O腳位讀取數據。 Arduino Uno板上的數位I/O腳位通常位於USB連接埠一側並可能在腳位上有標示為數位的標籤,就像我的情況一樣: 這些腳位的編號從0到13,但除非沒有足夠的腳位,否則您幾乎不會使用腳位0和1,因為它們用於串列通信(請參閱印刷在腳位上的rx和tx標籤)。 首先,我們將建立電路,然後轉到電腦上的Arduino IDE。 這個電路非常簡單。我們將使用一個按鈕,其中一個引腳連接到Arduino的GND,另一個引腳連接到數位腳位#3(任何其他數位腳位均可)。 我們將每秒檢測腳位#3的電壓水平。我們將定義腳位號碼為常數以避免在代碼中使用神奇數字: #define BUTTON_PIN 3 在setup()函數中,我們呼叫pinMode()將此腳位設置為輸入腳位,並使用INPUT_PULLUP選項: pinMode(BUTTON_PIN, INPUT_PULLUP); 需要使用INPUT_PULLUP選項,因為默認情況下,如果沒有任何東西連接到腳位上(如果按鈕未點擊,電路是斷開的,就像沒有任何東西連接到腳位上),輸入腳位是浮動的,這意味著它容易受到干擾,可能會隨機選擇0或1。 在電路中,我們可以添加上拉電阻或下拉電阻,但更簡單的方法是將INPUT_PULLUP標誌傳遞給Arduino。如果沒有連接任何東西,它將默認為1。 然後,在loop()函數中,我們使用digitalRead()函數獲取輸入腳位的值: int value = digitalRead(BUTTON_PIN); 這個值可以是0或1,取決於輸入。 如果按下按鈕,Arduino將檢測到0。 如果未按下按鈕,Arduino將檢測到1。 您也可以使用常數LOW(對應0)和HIGH(對應1)。 這個值可以打印到串行輸出上,就像在這個程式中一樣: #define BUTTON_PIN 3 void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); Serial.begin(9600); } void loop() { int value = digitalRead(BUTTON_PIN); Serial.print(value); delay(1000); } 保存並上傳程式到Arduino,然後在Arduino IDE中點擊右上角的“Serial Monitor”按鈕: 它將顯示串行接口監視器。請確保底部調整到9600波特率,您應該會看到一堆1,直到您按下按鈕一秒鐘,此時您應該會得到一個0。 我们还可以点亮一个LED。我们可以将LED添加到电路中,但我们也可以使用Arduino Uno板上的內建LED,它映射到数字I/O腳位#13。我们可以这样编写程序: #define BUTTON_PIN 3 void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(13, OUTPUT); digitalWrite(13, LOW); } void loop() { int value = digitalRead(BUTTON_PIN); digitalWrite(13, value); } 实时反映按钮输入值,无需等待1秒。之前我们这样做是为了避免向串行接口写入过多的值,使其难以管理。...

Johnny Five,如何點亮一個LED

學習如何使用JavaScript與電子設備進行通訊 本文是Johnny Five系列的一部分。請先看第一篇文章。 首先創建一個文件夾並初始化npm: npm init -y 然後在本地安裝Johnny Five: npm install johnny-five 現在創建一個名為app.js的文件,內容如下: const { Board, Led } = require("johnny-five") const board = new Board() board.on("ready", () => { const led = new Led(13) led.blink() }) 這個程式通過調用new Board()來初始化一個新的開發板。 當開發板準備就緒時,board對象會觸發ready事件,我們可以在回調函數中執行我們的應用程序。 在這個簡單的例子中,我們通過初始化一個新的Led對象在引腳13上初始化一個新的LED,然後使其閃爍(不斷開關)。 Led對象和Board對象是Johnny Five庫提供的許多功能之一。 Arduino Uno開發板上的13號引腳是連接到內置LED的引腳。 現在運行node app.js來執行程序: 你應該可以看到LED不斷開關! 你也可以通過將負極引腳連接到GND(0V),將正極引腳連接到引腳13,以連接一個真實的LED: 注意我使用了一個電阻器來限制LED通過的電流量。 要停止運行程序,請按兩次ctrl-C:

內建LED

Arduino板上有一個小工具: 內建LED。 它在旁邊有個字母L標示。在Arduino Uno板上,它靠近腳位#13: 在Arduino MKR 1010 WiFi板上,它靠近5V輸出腳位: 這個LED通常連接到數字I/O腳位#13上,但在某些板上,如Arduino MKR系列,它連接到腳位#6。 無論如何,你可以使用LED_BUILTIN常數引用正確的腳位,Arduino IDE會根據你編譯的板子正確對應到該腳位。 要使LED亮起來,首先需要在setup()函式中將腳位設置為輸出模式: pinMode(LED_BUILTIN, OUTPUT); 然後可以發送HIGH信號給它: digitalWrite(LED_BUILTIN, HIGH); 或者 digitalWrite(LED_BUILTIN, 1); 下面是一個簡單的程式,將使內建LED每秒閃爍一次: void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); }

電子元件︰LED

發光二極體(Light Emitting Diode,縮寫為LED)是你在實驗中使用的第一個電子元件之一,因為它使用簡單且由於其特性,非常適合探索我們所學概念。 有各種不同種類的LED,用於不同的應用與用途。有些非常小,適用於網格。有些是高功率的,例如用於汽車照明。 在這裡我們將討論常用於原型製作的5mm LED。 這種LED有2個引腳,一個是陽極,另一個是負極。 通常陽極比負極長: 我們將陽極連接到+正極,將負極連接到-。重要的是不要顛倒這個順序,否則LED將無法工作。 注意,負極的引腳較短,但如果引腳被剪斷,可能難以確定哪個連接是負極——對於5mm LED來說,負極的形狀會有一個小切口,不像陽極那邊的形狀是一個完美的圓形。 它的工作原理與二極體完全相同,只是它能發出光。以下是它的引腳與二極體連接的對比圖: LED就像是一個微小的燈泡,有多種顏色選擇: 當一定的電壓和電流通過引腳時,LED將發光。我不會解釋原因,只需知道這是材料在電流通過時的反應。 你已經看到如何使用電池和電阻點亮LED。 我們使用電阻限制通過LED的電流,否則LED可能會燒毀,因為LED具有極小的電阻量,因此電路中流經的電流過大。 警告:過高的電壓/電流也可能導致LED爆炸。 通過使用電阻,一切都正常工作。 根據電阻的值,LED上的電壓跌落值將不同。 這裡是一個3kΩ的電阻示例。LED的電壓跌落為1.87V(實際值會根據LED型號而有所不同)。電阻將限制電流並造成7.12V的電壓降。 如果我們使用了300Ω的電阻,LED的電壓降為2.10V,電流為22.9mA。 多大的電流算過大呢?這由LED制造商在產品規格表上確定。Elegoo電子元件套裝中的5mm LED提供了這份數據表https://www.superbrightleds.com/moreinfo/through-hole/5mm-red-led-15-degree-viewing-angle-5000-mcd/282/1209/,其中指出連續正向電流為50mA,峰值為100mA。 如果我們將2個LED串聯起來,將第二個的陽極連接到第一個的負極,我們會發現它們都會引起1.85V的電壓降(和之前的1.87V差不多),而電阻引起的電壓降比之前小,只有5.29V: 不同的LED具有不同的電壓降,這還取決於顏色,稱為額定正向電壓,可以通過直接測量獲得。它的範圍從1.7V到4V。 LED需要一定的電流才能正確發光,通常從5mA到30mA。 這裡有3個串聯的LED: 如果我們將9V應用到電路上,我們會看到它們發出相當亮的光,因為電流為13.3mA: 但如果我們添加第四個LED: 應用相同的9V將導致光亮度大大降低,因為現在電路中的電流只有5.72mA,不足以發出明亮的光: