กลับไปหน้ารวมไฟล์
calculator-with-16x2-lcd-display-and-4x4-keypan-753fb1.md

ตอนพี่เรียนอยู่ มันไม่มีเครื่องคิดเลขให้ใช้แล้ว พี่เลยตัดสินใจทำเองเลย (แถมบอกให้อีกนิด ไฟเลี้ยง Arduino ใช้แบตเตอรี่ 9V ก็ได้นะ)

บทความนี้จะพาน้องไปดูว่าเครื่องคิดเลขมันประกอบด้วยอะไรบ้าง ตั้งแต่ระบบรับค่าจากปุ่ม (Keypad Matrix) ไปจนถึงตรรกะการคำนวณที่ทำงานอยู่หลังไมโครคอนโทรลเลอร์ตัวจิ๋ว

🛠 อุปกรณ์ที่ต้องใช้

การออกแบบเครื่องคิดเลขนี้เน้นความเรียบง่ายแต่ใช้งานได้จริง ใช้อุปกรณ์ที่หาได้ทั่วไปในแล็บวิศวะ ดังนี้

  1. ไมโครคอนโทรลเลอร์ (Arduino Uno/Nano): ทำหน้าที่เป็นสมอง ประมวลผลคำสั่ง รับค่าจากปุ่ม และส่งข้อมูลไปแสดงผล
  2. คีย์แพดเมทริกซ์ 4x4: อุปกรณ์รับค่าหลัก มีปุ่มตัวเลข 0-9 และตัวดำเนินการพื้นฐาน (+, -, *, /) พร้อมปุ่ม '=' และ 'C' สำหรับล้างค่า
    • พูดแบบเด็กช่าง: การใช้คีย์แพดแบบเมทริกซ์ช่วยเซฟพิน I/O ของ Arduino ได้เยอะ เพราะใช้เทคนิคสแกนแถวและคอลัมน์ แทนที่จะต่อปุ่มละพิน
  3. จอ LCD (16x2) พร้อมโมดูล I2C: จอแสดงผล 2 บรรทัด บรรทัดละ 16 ตัวอักษร
    • ทำไมต้อง I2C? การใช้ I2C ลดจำนวนสายจาก 6-10 เส้น เหลือแค่ 4 เส้น (VCC, GND, SDA, SCL) ทำให้การเดินสายข้างในดูเนี๊ยบขึ้นมาก
  4. แหล่งจ่ายไฟ (แบตเตอรี่ 9V): เพื่อให้พกพาสะดวก จ่ายไฟผ่าน DC Jack หรือพิน VIN ของ Arduino ได้เลย

💻 ตรรกะการทำงานของระบบ

เพื่อให้เครื่องคิดเลขทำงานถูกต้อง โปรแกรมข้างในถูกออกแบบด้วยตรรกะแบบ State Machine เพื่อแยกแยะว่าผู้ใช้กำลังพิมพ์ตัวเลขแรก เลือกตัวดำเนินการ หรือรอผลลัพธ์อยู่

1. การรับค่าผ่านการสแกนเมทริกซ์

โปรแกรมใช้ไลบรารี Keypad.h เพื่อตรวจสอบอย่างต่อเนื่องว่าจุดตัดระหว่างแถวและคอลัมน์ไหนมีกระแสไฟฟ้าไหลผ่าน เมื่อตรวจพบแล้ว สัญญาณไฟฟ้าจะถูกแปลงเป็นตัวอักษร (Char) ตามที่เรากำหนดไว้ใน Keymap

2. ตรรกะการประมวลผล (Flow การคำนวณ)

  • ขั้นตอนรับค่า: เมื่อกดปุ่มตัวเลข โปรแกรมจะเก็บค่าไว้ในตัวแปรประเภท String หรือ Long เพื่อต่อเป็นตัวเลขหลายหลัก (เช่น กด 1 แล้วตามด้วย 2 จะกลายเป็น 12)
  • ขั้นตอนตัวดำเนินการ: เมื่อกดปุ่มตัวดำเนินการ (+, -, *, /) โปรแกรมจะย้ายค่าของตัวเลขแรกไปเก็บในตัวแปรชั่วคราว (เช่น num1) และเตรียมรับตัวเลขที่สอง (num2)
  • ขั้นตอนคำนวณ: เมื่อกดปุ่ม '=' ฟังก์ชัน switch-case ในโค้ดจะตัดสินใจว่าต้องดำเนินการทางคณิตศาสตร์ใดกับ num1 และ num2 จากนั้นแสดงผลลัพธ์บนหน้าจอ LCD

3. การจัดการทศนิยมและจำนวนลบ

เครื่องคิดเลขที่ดีต้องครบเครื่อง ในโปรเจกต์นี้เราใช้ตัวแปรประเภท float หรือ double ในการคำนวณ เพื่อรองรับผลลัพธ์ที่มีจุดทศนิยมและการหารที่ไม่ลงตัว

🔌 แผนภาพการต่อสาย

  • คีย์แพด (8 พิน): ต่อกับพิน Digital ของ Arduino (เช่น 2, 3, 4, 5, 6, 7, 8, 9)
  • I2C LCD:
    • VCC -> 5V
    • GND -> GND
    • SDA -> A4 (สำหรับ Uno)
    • SCL -> A5 (สำหรับ Uno)
  • แหล่งจ่ายไฟ: ขั้วบวกของแบตเตอรี่ 9V ต่อกับพิน VIN ขั้วลบต่อกับ GND

🚀 เริ่มต้นกันเลย

  1. ประกอบอุปกรณ์ตามแผนภาพการต่อสาย
  2. ติดตั้งไลบรารีที่จำเป็นใน Arduino IDE:
    • Keypad โดย Mark Stanley
    • LiquidCrystal_I2C โดย Frank de Brabander
  3. อัพโหลดซอร์สโค้ดลงบอร์ด
  4. ต่อแบตเตอรี่ 9V แล้วเริ่มใช้เครื่องคิดเลขของน้องได้เลย! อย่าลืมสู้งานนะน้อง

📝 สรุปจากคนทำ

การสร้างเครื่องคิดเลขนี้ไม่ใช่แค่แก้ปัญหาไม่มีอุปกรณ์ใช้ในห้องเรียน แต่มันยังเป็นการฝึกฝนที่เจ๋งมากในการเรียนรู้เรื่อง Human-Machine Interface (HMI) และการจัดการหน่วยความจำในระบบ Embedded

ถ้าน้องเพิ่งเริ่มเรียน Arduino โปรเจกต์นี้จะช่วยให้น้องเข้าใจความสัมพันธ์ระหว่างซอฟต์แวร์และฮาร์ดแวร์ได้ชัดเจนที่สุด

หมายเหตุ: สำหรับซอร์สโค้ดหรือรูปภาพประกอบการติดตั้ง สามารถดูได้ในโฟลเดอร์ของ Repository นี้

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "randomnonsense"
category: ""
components:
  - "1x 4x4 keypad"
  - "1x Breadboard (generic)"
  - "1x Standard LCD - 16x2 White on Blue"
  - "1x Arduino UNO"
  - "1x Jumper wires (generic)"
description: "เครื่องคิดเลขธรรมดา แต่เราจัดให้มันมีขั้นตอนเพิ่ม ตึงๆ วัยรุ่น ต้องลองทำ!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1+z3eF+TVHOEDDgmnVO8/FI5BBxBJpivOoPPG7DRZzQeD24rC3jMtTP6l2e1T31TTVLNzXj55Y+lOy15ITUZzsJFyeyvLDGOvM="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/calculator-with-16x2-lcd-display-and-4x4-keypan-753fb1_cover.jpg"
lang: "en"
likes: 0
passwordHash: "5322e0f0caf32086bba00799dcb0df2fd47a4d2bf1808bd61980bcb435f8bf12"
price: 1120
seoDescription: "Build a Calculator using Arduino with 16x2 LCD display and 4x4 keypad. Perfect for learning coding and electronics."
tags:
  - "lights"
  - "energy efficiency"
  - "smart appliances"
title: "เครื่องคิดเลขเท่ๆ กับจอ LCD 16x2 และคีย์แพด 4x4 งานง่ายแต่หล่อ!"
tools: []
videoLinks: []
views: 3087