# Arduino Official Website
# Design Flow
- 決定你需要哪種類型的感測器。
- 學習如何使用感測器。
- 設計你的專案電路 (可能需要一塊麵包板)
- 確保電源(可能是 3.3V 或 5V)、接地(GND)和信號連接正確,以避免損壞元件。
- 學習感測器的 API 及如何使用它。
- 閱讀感測器的庫文檔,了解可用的函數和方法以便與其互動。
- 部分庫可以在
工具
→ 管理庫
中設置。
- 編寫程式碼,使用
Serial.println()
進行除錯。 - 測試系統並完善設計。
Component | Usage | 用途 | Additional Info |
---|
HLF8574T | LCD | 液晶顯示器 | |
DHT11 | Humidity, Temperature Sensor | 溫溼度感測器 | |
DS1302 | Real Time Clock Module | 時間模組 | |
W104 | Simple Sound Sensor | 聲音偵測模組 | |
HW-504 | Joystick | 搖桿 | |
HC-SR04 | Ultrasonic Sensor | 超音波測距模組 | |
| Water Sensor | 水位測量模組 | |
ULN2003 AN | Stepper Motor | 步進馬達 | Often use with 28BYJ-48 |
28BYJ-48 | Stepper Motor | 步進馬達 | Often use with ULN2003 AN |
SG90 | Servo Motor | 伺服馬達 | |
RFID-RC522 | RFID System | 無線射頻辨識 | |
5011AS | 7 Segment Display | 7 段顯示器 | |
3461BS-1 | 4-Digit 7 Segment Display | 4 位 7 段顯示器 | |
1588BS | 8x8 dot matrix | 8x8 點陣 | |
74HC595N | 8-bit Shift Register | 移位暫存器 | |
| Buzzer | 蜂鳴器 | Active, Passive Buzzer |
# Examples
- 超音波感測器
- 使用聲波測量距離。
- 任何需要知道距離的專案都可以從這個範例擴展。
- 蜂鳴器
- 主動蜂鳴器 (Active Buzzer): 可用於警報系統等。
- 被動蜂鳴器 (Passive Buzzer): 可用於播放旋律。
- RFID 系統
- 其他感測器:使用感測器的 ID 搜尋其用途。
# Ultrasonic sensor (HC-SR04)
![]()
| const int trigPin = 9; |
| const int echoPin = 10; |
| |
| float duration, distance; |
| |
| void setup() { |
| pinMode(trigPin, OUTPUT); |
| pinMode(echoPin, INPUT); |
| Serial.begin(9600); |
| } |
| |
| void loop() { |
| |
| digitalWrite(trigPin, LOW); |
| delayMicroseconds(2); |
| digitalWrite(trigPin, HIGH); |
| delayMicroseconds(10); |
| digitalWrite(trigPin, LOW); |
| |
| |
| duration = pulseIn(echoPin, HIGH); |
| distance = (duration * 0.0343) / 2; |
| Serial.print("Distance: "); |
| Serial.println(distance); |
| delay(100); |
| } |
Tools
→ Serial Monitor
to see the output
# Buzzers
- 主動蜂鳴器
- 被動蜂鳴器
- 儘管它需要指定頻率,但它允許您創建任何旋律,儘管更複雜,但提供了更大的靈活性。
Active Buzzer | void setup() { |
| pinMode(7,OUTPUT); |
| } |
| |
| void loop() { |
| digitalWrite(7,HIGH); |
| delay(1000); |
| digitalWrite(7,LOW); |
| delay(2000); |
| } |
Passive Buzzer | #include "pitches.h" |
| |
| const int buzzer = 8; |
| |
| |
| int melody[] = { |
| NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 |
| }; |
| |
| |
| int noteDurations[] = { |
| 4, 8, 8, 4, 4, 4, 4, 4 |
| }; |
| |
| void setup() { |
| for (int i = 0; i < 8; i++) { |
| |
| int noteDuration = 1000 / noteDurations[i]; |
| |
| |
| |
| |
| tone(buzzer, melody[i], noteDuration); |
| |
| |
| delay(noteDuration * 1.30); |
| |
| |
| noTone(buzzer); |
| } |
| } |
| |
| void loop() {} |
# RFID RC522
- Additional library (
Tools
→ Manage Libraries
)
![]()
| #include <SPI.h> |
| #include <MFRC522.h> |
| |
| #define RST_PIN 9 |
| #define SS_PIN 10 |
| |
| MFRC522 mfrc522; |
| |
| void setup() { |
| Serial.begin(9600); |
| |
| SPI.begin(); |
| |
| mfrc522.PCD_Init(SS_PIN, RST_PIN); |
| Serial.print(F("Reader ")); |
| Serial.print(F(": ")); |
| mfrc522.PCD_DumpVersionToSerial(); |
| } |
| |
| void loop() { |
| |
| if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) { |
| Serial.print(F("Card UID:")); |
| dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); |
| Serial.println(); |
| |
| Serial.print(F("PICC type: ")); |
| MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); |
| Serial.println(mfrc522.PICC_GetTypeName(piccType)); |
| |
| mfrc522.PICC_HaltA(); |
| } |
| } |
| |
| void dump_byte_array(byte *buffer, byte bufferSize) { |
| for (byte i = 0; i < bufferSize; i++) { |
| Serial.print(buffer[i] < 0x10 ? " 0" : " "); |
| Serial.print(buffer[i], HEX); |
| } |
| } |
出處: Reference for Arduino Final Project
# 學習資料
Arduino Uno R3 ATmega328P 開發板
# 教學文章列表 1
# 教學文章列表 2
Arduino 快速入門教學全集
分章節:
# 可能遇到的問題
Arduino 記憶體不足解法