STEM|Arduino+DS18B20活用Adafruit_SSD1306
製作一個 Arduino 專案,使用溫度感測器(例如DS18B20)作為輸入,並使用OLED顯示器顯示溫度讀數。以下是一個簡單的範例程式碼,使用Arduino和相應的庫(Wire和Adafruit_SSD1306)。
### 所需材料:
1. Arduino板(例如Arduino Uno)
2. 溫度感測器(例如DS18B20)
3. OLED顯示器(使用I2C接口)
4. 電阻(4.7k歐姆)- DS18B20所需
5. 杜邦線
### 接線:
1. 將DS18B20的VCC連接到Arduino的5V腳,GND連接到GND,Data連接到D2(或您選擇的數位腳)。
2. 將OLED顯示器的VCC和GND連接到Arduino的對應腳,SDA和SCL連接到A4和A5。
### 程式碼:
```cpp
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define ONE_WIRE_BUS 2 // 溫度感測器連接到數位腳2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
// 初始化OLED顯示器
if(!display.begin(SSD1306_I2C_ADDRESS, OLED_RESET)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display(); // Clear the buffer
delay(2000); // 等待2秒
display.clearDisplay();
}
void loop() {
sensors.requestTemperatures(); // 請求溫度讀數
float temperatureC = sensors.getTempCByIndex(0); // 取得溫度(攝氏)
// 在序列埠顯示溫度讀數
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
// 在OLED顯示器上顯示溫度讀數
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.print("Temperature: ");
display.print(temperatureC);
display.print(" C");
display.display();
delay(2000); // 等待2秒再更新
}
```
### 注意事項:
1. 請確保您已經安裝了Wire和Adafruit_SSD1306庫,可以在Arduino IDE的「工具」->「管理程式庫」中安裝。
2. 這個程式碼使用了DS18B20溫度感測器庫,您可以在Arduino IDE的「工具」->「管理程式庫」中安裝「DallasTemperature」。
3. 此程式碼基於Adafruit的SSD1306 OLED庫,您可以根據您使用的OLED顯示器進行調整。
這個程式碼將溫度讀數從DS18B20感測器讀取,然後在序列埠和OLED顯示器上顯示。希望這能幫助您開始製作您的Arduino專案!
最新文章
查看全部建立自己的 AI 系統是一個複雜的過程,需要具備豐富的技術知識和實踐經驗。以下是一些關鍵步驟: 1. 確定目標和應用場景 首先要明確 AI 系統的目標和應用場景,例如是用於自然語言處理、圖像識別還是其他領域。這將決定系統的架構和所需的技術棧。 2. 選擇合適的機器學習框架...
Comments