กลับหน้าหลัก
views
พื้นฐาน Arduino: วิธีอ่านค่าจากข้อมูลมาตรวจสอบและควบคุมการทำงาน
Last updated on

พื้นฐาน Arduino: วิธีอ่านค่าจากข้อมูลมาตรวจสอบและควบคุมการทำงาน


พื้นฐาน 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
ตรวจสอบบัตร RFIDID ของบัตรที่ลงทะเบียนค้นหาใน 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 แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก

จ้างทำโปรเจคเลย

ประเมินราคาอัตโนมัติ + Reference Code

ขอให้ AI ประเมินราคาโปรเจคนี้

กรอกข้อมูลให้ครบ ระบบจะสร้างรหัสอ้างอิงและประเมินราคา/ระยะเวลาคร่าว ๆ จากรายละเอียดงาน แล้วให้กด Add LINE พร้อมพิมพ์รหัสนี้เพื่อคุยต่อ

คำถามให้ AI ประเมินแม่นขึ้น

หลังส่งฟอร์ม ระบบจะโชว์ Reference Code ให้ copy แล้วกด Add LINE เพื่อคุยต่อ ข้อมูลส่วนตัวจะไม่ถูกส่งเข้า GA4

ความคิดเห็น

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...