พื้นฐาน Arduino: วิธีอ่านค่าจากข้อมูลมาตรวจสอบและควบคุมการทำงาน
พื้นฐาน Arduino: วิธีอ่านค่าจากข้อมูลมาตรวจสอบและควบคุมการทำงาน
ในการเขียนโปรแกรม Arduino สำหรับโปรเจกต์ที่ซับซ้อนขึ้น เรามักต้องทำงานกับข้อมูลหลายค่า ไม่ว่าจะเป็นการตรวจสอบรหัสผ่าน การเปรียบเทียบค่าจากเซ็นเซอร์ หรือการค้นหาข้อมูลที่ตรงกับเงื่อนไข
บทความนี้จะสอนเทคนิคการอ่านค่าจากข้อมูลมาตรวจสอบด้วย Arduino ซึ่งเป็นพื้นฐานสำคัญที่นำไปต่อยอดได้หลายโปรเจกต์
ข้อมูลคืออะไรในบริบทของ Arduino
Arduino สามารถเก็บข้อมูลหลายค่าไว้ในตัวแปรประเภท Array ซึ่งเปรียบเสมือนตารางที่มีแถวและคอลัมน์ เราสามารถนำค่าใน Array มาตรวจสอบว่าตรงกับเงื่อนไขที่ต้องการหรือไม่
// ตัวอย่าง: การประกาศ Array เก็บรหัสผ่านที่อนุญาต 4 รหัส
const int ALLOWED_PASSWORDS[] = {1234, 5678, 9012, 3456};
const int PASSWORD_COUNT = 4;
// ตัวอย่าง: การประกาศ Array เก็บชื่อผู้ใช้ (ใช้ String)
String allowedUsers[] = {"admin", "user1", "user2", "guest"};
[image: โค้ด Arduino แสดงการประกาศ Array สำหรับเก็บข้อมูลรหัสผ่านและชื่อผู้ใช้]
วิธีตรวจสอบค่าด้วย Loop และ Conditional
เมื่อมีข้อมูลใน Array แล้ว ขั้นตอนถัดไปคือการวนลูปเพื่อตรวจสอบว่าค่าที่รับเข้ามาตรงกับค่าใดในข้อมูลหรือไม่
bool checkPassword(int inputPassword) {
for (int i = 0; i < PASSWORD_COUNT; i++) {
if (ALLOWED_PASSWORDS[i] == inputPassword) {
return true; // พบรหัสที่ตรงกัน
}
}
return false; // ไม่พบรหัสที่ตรงกัน
}
void setup() {
Serial.begin(9600);
// ทดสอบการตรวจสอบ
int testCode = 5678;
if (checkPassword(testCode)) {
Serial.println("Access Granted");
} else {
Serial.println("Access Denied");
}
}
void loop() {
// ไม่มีการทำงานซ้ำ
}
อธิบายโค้ด:
- ฟังก์ชัน
checkPassword()รับค่ารหัสที่ป้อนเข้ามา - วนลูป for ตรวจสอบทุกค่าใน Array
- ถ้าพบค่าที่ตรงกัน จะ return true ทันที
- ถ้าวนครบทุกค่าแล้วไม่พบ จะ return false
[image: โค้ด Arduino แสดงฟังก์ชันตรวจสอบรหัสผ่านด้วย for loop และ if condition]
การประยุกต์ใช้กับโปรเจกต์จริง
เทคนิคนี้สามารถนำไปใช้ได้หลายรูปแบบ:
| โปรเจกต์ | ข้อมูลใน Array | การตรวจสอบ |
|---|---|---|
| ระบบล็อกอินด้วย Keypad | รหัสผ่าน 4 หลัก | เปรียบเทียบกับ Array |
| ตรวจสอบบัตร RFID | ID ของบัตรที่ลงทะเบียน | ค้นหาใน Array |
| ระบบเปิด-ปิดไฟด้วยรหัส | รหัสที่อนุญาต | เช็คเงื่อนไข |
ตัวอย่าง: ระบบล็อกอินเบื้องต้น
const String VALID_USERS[] = {"admin", "engineer", "technician"};
const int VALID_CODES[] = {1111, 2222, 3333};
const int USER_COUNT = 3;
bool authenticateUser(String username, int code) {
for (int i = 0; i < USER_COUNT; i++) {
if (VALID_USERS[i] == username && VALID_CODES[i] == code) {
return true;
}
}
return false;
}
void setup() {
Serial.begin(9600);
// ทดสอบการยืนยันตัวตน
if (authenticateUser("admin", 1111)) {
Serial.println("Welcome, admin!");
// เปิดใช้งานระบบ
}
}
void loop() {
// รอรับข้อมูลเพิ่มเติม
}
จุดที่ต้องปรับเพิ่มเติม:
- เพิ่มการรับค่าจาก Keypad หรือ Serial Monitor
- เพิ่มตัวนับจำนวนครั้งที่ใส่รหัสผิด
- เพิ่มการหน่วงเวลาหลังใส่รหัสผิด
ข้อจำกัดที่ควรรู้
Arduino มี RAM จำกัด (ประมาณ 2 KB สำหรับ Uno) ดังนั้น:
- หลีกเลี่ยงการสร้าง Array ขนาดใหญ่เกินไป
- ใช้
constสำหรับข้อมูลที่ไม่ต้องการเปลี่ยนแปลง เพื่อประหยัด RAM - ถ้าต้องการข้อมูลมากๆ ควรใช้ SD Card Module แทน
สรุป
การอ่านค่าจากข้อมูลมาตรวจสอบเป็นพื้นฐานที่สำคัญสำหรับการเขียนโปรแกรม Arduino ที่ซับซ้อนขึ้น โดยใช้ Array เก็บข้อมูล และใช้ for loop ร่วมกับ if-else เพื่อตรวจสอบเงื่อนไข ซึ่งเทคนิคนี้นำไปประยุกต์ใช้ได้ทั้งระบบล็อกอิน การควบคุมการเข้าถึง หรือการประมวลผลข้อมูลจากเซ็นเซอร์หลายตัว
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย