สารบัญ:

เมนู Arduino บนจอ LCD Nokia 5110 โดยใช้เครื่องเข้ารหัสแบบหมุน: 6 ขั้นตอน (พร้อมรูปภาพ)
เมนู Arduino บนจอ LCD Nokia 5110 โดยใช้เครื่องเข้ารหัสแบบหมุน: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เมนู Arduino บนจอ LCD Nokia 5110 โดยใช้เครื่องเข้ารหัสแบบหมุน: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เมนู Arduino บนจอ LCD Nokia 5110 โดยใช้เครื่องเข้ารหัสแบบหมุน: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Arduino Tutorial: Rotary Encoder Tutorial on Arduino Mega with Nokia 5110 display 2024, พฤศจิกายน
Anonim
Image
Image
เมนู Arduino บน LCD Nokia 5110 โดยใช้ Rotary Encoder
เมนู Arduino บน LCD Nokia 5110 โดยใช้ Rotary Encoder

เพื่อนๆที่รักยินดีต้อนรับสู่การกวดวิชาอื่น! ในวิดีโอนี้ เราจะมาเรียนรู้วิธีสร้างเมนูของเราเองสำหรับจอแสดงผล Nokia 5110 LCD ยอดนิยม เพื่อทำให้โปรเจ็กต์ของเราเป็นมิตรกับผู้ใช้และมีความสามารถมากขึ้น มาเริ่มกันเลย!

นี่คือโครงการที่เราจะสร้าง ในจอแสดงผล เมนูอย่างง่ายจะปรากฏขึ้น และด้วยความช่วยเหลือของตัวเข้ารหัสแบบหมุน ฉันสามารถเลื่อนขึ้นหรือลงและเลือกรายการเมนูได้โดยการกดปุ่มตัวเข้ารหัสแบบหมุน เมื่อกดปุ่มตรงกลางของตัวเข้ารหัสแบบหมุน หน้าจออื่นจะปรากฏขึ้นและเราสามารถเปลี่ยนค่าของตัวแปรได้ หากเรากดปุ่มเข้ารหัสแบบหมุนอีกครั้ง เราจะกลับไปที่หน้าจอเมนูหลัก เมนูมี 6 รายการ และเราสามารถเลื่อนลงหรือขึ้นเมนูและรายการบนจอแสดงผลจะเปลี่ยนไปตามนั้น ดูวิดีโอที่แนบมาเพื่อดูว่าเมนูนี้ทำงานอย่างไร แน่นอน คุณสามารถปรับเปลี่ยนเพื่อสร้างเมนูที่ซับซ้อนมากขึ้นได้หากต้องการ

ตอนนี้เรามาดูวิธีการสร้างโครงการนี้กัน

ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด

รับอะไหล่ทั้งหมด
รับอะไหล่ทั้งหมด

ชิ้นส่วนที่จำเป็นในการสร้างโครงการนี้มีดังต่อไปนี้:

  • Arduino Uno ▶
  • จอ LCD ของ Nokia 5110 ▶
  • ตัวเข้ารหัสแบบหมุน ▶
  • เขียงหั่นขนมขนาดเล็ก ▶
  • บางสาย ▶
  • พาวเวอร์แบงค์ ▶

ต้นทุนของโครงการต่ำมาก น้อยกว่า $10 คุณสามารถค้นหาลิงก์สำหรับส่วนทั้งหมดที่ฉันใช้ในคำอธิบายของวิดีโอด้านล่าง

ขั้นตอนที่ 2: จอแสดงผล LCD ของ Nokia 5110

Image
Image
การสร้างโครงการ
การสร้างโครงการ

Nokia 5110 คือจอแสดงผลที่ฉันโปรดปรานสำหรับโปรเจ็กต์ Arduino ของฉัน

Nokia 5110 เป็นหน้าจอ LCD แบบกราฟิกพื้นฐานซึ่งเดิมมีไว้สำหรับเป็นหน้าจอโทรศัพท์มือถือ ใช้คอนโทรลเลอร์ PCD8544 ซึ่งเป็นคอนโทรลเลอร์/ไดรเวอร์ CMOS LCD พลังงานต่ำ ด้วยเหตุนี้จอแสดงผลนี้จึงมีการใช้พลังงานที่น่าประทับใจ ใช้เพียง 0.4mA เมื่อเปิดเครื่อง แต่ปิดไฟแบ็คไลท์ ใช้น้อยกว่า 0.06mA เมื่ออยู่ในโหมดสลีป! นั่นเป็นเหตุผลหนึ่งที่ทำให้จอแสดงผลนี้เป็นที่ชื่นชอบ PCD8544 เชื่อมต่อกับไมโครคอนโทรลเลอร์ผ่านอินเตอร์เฟสบัสอนุกรม นั่นทำให้จอแสดงผลใช้งานง่ายมากกับ Arduino คุณต้องเชื่อมต่อสายไฟ 8 เส้นเท่านั้น

ฉันได้เตรียมการสอนโดยละเอียดเกี่ยวกับวิธีใช้จอแสดงผล Nokia 5110 LCD กับ Arduino ฉันได้แนบวิดีโอนั้นในคำแนะนำนี้ ซึ่งจะให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับการแสดงผล ดังนั้นฉันขอแนะนำให้คุณดูอย่างระมัดระวัง ค่าใช้จ่ายของจอแสดงผลอยู่ที่ประมาณ 4 เหรียญ

คุณสามารถรับได้ที่นี่: ▶

ขั้นตอนที่ 3: ตัวเข้ารหัสแบบหมุน

Image
Image

เครื่องเข้ารหัสแบบโรตารี่หรือที่เรียกว่าเครื่องเข้ารหัสเพลาเป็นอุปกรณ์เครื่องกลไฟฟ้าที่แปลงตำแหน่งเชิงมุมหรือการเคลื่อนที่ของเพลาหรือเพลาเป็นรหัสอนาล็อกหรือดิจิตอล เครื่องเข้ารหัสแบบโรตารี่ถูกนำมาใช้ในการใช้งานจำนวนมากที่ต้องการเพลาที่แม่นยำในการหมุนไม่จำกัด ซึ่งรวมถึงการควบคุมในอุตสาหกรรม หุ่นยนต์ เลนส์ถ่ายภาพสำหรับวัตถุประสงค์พิเศษ อุปกรณ์ป้อนข้อมูลของคอมพิวเตอร์ (เช่น เมาส์ออปโตเมคานิคัลและแทร็กบอล) รีโอมิเตอร์วัดความเค้นแบบควบคุม และแพลตฟอร์มเรดาร์ที่หมุนได้

เครื่องเข้ารหัสแบบโรตารี่ที่เราจะใช้ในโครงการนี้เป็นเครื่องเข้ารหัสที่มีราคาไม่แพงมาก นอกจากนี้ยังมีปุ่มฝังอยู่และเพื่อให้ใช้งานได้ เราจำเป็นต้องเชื่อมต่อสายไฟเพียง 5 เส้นเท่านั้น ฉันได้เตรียมการสอนโดยละเอียดเกี่ยวกับวิธีใช้เครื่องเข้ารหัสแบบหมุนแล้ว คุณสามารถแนบวิดีโอนี้ได้ที่นี่

ค่าใช้จ่ายของตัวเข้ารหัสแบบหมุนนี้ต่ำมาก มีค่าใช้จ่ายประมาณ 1.5 เหรียญ

สามารถดาวน์โหลดได้ที่นี่ ▶

ขั้นตอนที่ 4: การสร้างโครงการ

Image
Image
การสร้างโครงการ
การสร้างโครงการ
การสร้างโครงการ
การสร้างโครงการ

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

ฉันได้วางจอแสดงผลไว้บนเขียงหั่นขนมขนาดเล็กเช่นนี้ มาเชื่อมต่อจอภาพกันก่อน พินแรกของจอแสดงผลซึ่งถูกรีเซ็ตไปที่พินดิจิตอล 3 ของ Arduino Uno พินที่สองไปที่พินดิจิทัล 4 พินที่สามไปที่พินดิจิตอล 5 พินที่สี่ถึงพินดิจิตอล 11 และพินที่ห้าเป็นดิจิตอล พิน 13 พินถัดไปคือ Vcc เราเชื่อมต่อ Vcc กับรางบวกของเขียงหั่นขนมและรางบวกของเขียงหั่นขนมกับเอาต์พุต 3.3V ของ Arduino หมุดถัดไปคือแบ็คไลท์สำหรับจอแสดงผล เนื่องจากเราต้องการควบคุมผ่านซอฟต์แวร์ เราจึงเชื่อมต่อกับพินดิจิทัล 7 พินสุดท้ายคือ GND เราเชื่อมต่อ GND กับรางลบของเขียงหั่นขนมและรางลบของเขียงหั่นขนมกับ Arduino GND

ตอนนี้ ทั้งหมดที่เราต้องทำคือเชื่อมต่อเครื่องเข้ารหัสแบบโรตารี่ พินแรกคือ GND และเราเชื่อมต่อกับรางลบของเขียงหั่นขนม พินถัดไปคือ Vcc และเราเชื่อมต่อกับรางบวกของเขียงหั่นขนม พินถัดไปคือ SW และเราเชื่อมต่อกับ Analog Pin 2 พินถัดไปชื่อ DT และเราเชื่อมต่อกับ Analog Pin 1 สุดท้ายพิน CLK เชื่อมต่อกับ Analog Pin 0 คุณสามารถค้นหาแผนผังของโครงการนี้ใน คำอธิบายของวิดีโอด้านล่าง

ตอนนี้เราพร้อมที่จะเพิ่มพลังให้กับโครงการแล้ว อย่างที่คุณเห็น โปรเจ็กต์ทำงานได้ดี และเมนูทำงานตามที่คาดไว้! เยี่ยมมาก ตอนนี้มาดูซอฟต์แวร์ของโครงการกัน

ขั้นตอนที่ 5: รหัสของโครงการ

รหัสโครงการ
รหัสโครงการ

ในโครงการนี้เราใช้ห้องสมุด 4 แห่ง เราใช้ไลบรารีสองไลบรารีสำหรับการแสดงผล และสองไลบรารีสำหรับเครื่องเข้ารหัสแบบหมุน

  1. Adafruit GFX:
  2. โนเกีย 5110:
  3. ไลบรารีตัวเข้ารหัส:
  4. ห้องสมุด TimerOne:

ขั้นแรกเราจะมาดูฟังก์ชัน drawMenu ฟังก์ชันนี้มีหน้าที่ในการวาดเมนูบนจอแสดงผล ฟังก์ชันนี้เรียกว่าทุกๆ สองสามมิลลิวินาที ดังนั้นหากมีการเปลี่ยนแปลงในเมนู ฟังก์ชันนี้จะมีหน้าที่ในการอัปเดตเมนูบนหน้าจอ

int menuitem = 1; เฟรม int = 1; หน้า int = 1; int lastMenuItem = 1;

นอกจากนี้ยังมีตัวแปรส่วนกลางที่สำคัญมาก 3 ตัว ได้แก่ หน้าตัวแปร รายการเมนูตัวแปร และเฟรมตัวแปร หน้าตัวแปรจะจดจำหน้าจอ UI ใดที่แสดงบนหน้าจอ ดังนั้น หากตัวแปรหน้าเป็น 1 แสดงว่าเราอยู่ในหน้าจอ UI หลัก และหากตัวแปรเป็น 2 เราอยู่ในหน้าจอ UI รองที่เราตั้งค่าให้กับตัวแปร รายการเมนูจะจำรายการเมนูที่เลือก ดังนั้น หากค่าของมันคือ 1 รายการเมนูแรกจะถูกเลือก ดังนั้นฟังก์ชัน drawMenu จะต้องวาดรายการเมนูนี้เป็นสีดำพร้อมตัวอักษรสีขาว หากรายการเมนูเป็น 2 รายการเมนูที่สองจะถูกเลือกเป็นต้น ตัวแปรเฟรมจะจดจำส่วนใดของเมนูที่แสดงบนหน้าจอ เนื่องจากเมนูที่เราสร้างมี 6 รายการ และเราสามารถแสดงได้ครั้งละ 3 รายการเท่านั้น เราจำเป็นต้องรู้ว่ารายการใดบ้างที่แสดงบนหน้าจอ ตัวแปรเฟรมบอกเราอย่างนี้ หากตัวแปรเฟรมมีค่าเป็น 1 เราจะแสดงรายการเมนูสามรายการแรก หากเป็น 2 เราจะแสดงรายการที่ 2, 3, 4 และอื่นๆ

ฉันพยายามทำให้โค้ดแก้ไขได้ง่ายที่สุด ดังนั้นฉันจึงได้สร้างตัวแปรส่วนกลางบางตัวที่มีชื่อสำหรับรายการเมนู ด้วยวิธีนี้ คุณสามารถสร้างเมนูของคุณเองได้อย่างง่ายดายโดยไม่ต้องค้นหาในโค้ด

String menuItem1 = "ความเปรียบต่าง";String menuItem2 = "ระดับเสียง"; สตริง menuItem3 = "ภาษา"; String menuItem4 = "ความยากลำบาก"; String menuItem5 = "ไฟ: เปิด"; สตริง menuItem6 = "รีเซ็ต";

ไฟแบ็คไลท์บูลีน = จริง;

ตรงกันข้าม = 60; ปริมาณ int = 50;

ภาษาสตริง[3] = { "EN", "ES", "EL" };

int เลือกภาษา = 0;

ความยากของสตริง[2] = { "ง่าย", "ยาก" };

int ที่เลือกยาก = 0;

ตอนแรกเราเริ่มต้นตัวแปรส่วนกลางทั้งหมดที่จำเป็นในโค้ด ต่อไปเราจะเริ่มต้นการแสดงผล ในฟังก์ชันวนรอบ ตอนแรกเราเรียกฟังก์ชัน drawMenu เพื่อวาดเมนูบนหน้าจอ จากนั้นเราอ่านค่าจากตัวเข้ารหัสโรตารีและตรวจสอบว่ามีการกดปุ่มหรือไม่ ตัวอย่างเช่น หากเราอยู่ในหน้าจอ UI หลักและเลือกรายการเมนูแรก หากค่าจากตัวเข้ารหัสแบบหมุนเพิ่มขึ้น ตัวแปรรายการเมนูจะเพิ่มขึ้น และในลูปถัดไป ฟังก์ชัน drawMenu จะวาดรายการเมนูที่สองตามที่เลือกไว้ หากตอนนี้เรากดปุ่มของตัวเข้ารหัสแบบหมุน เราจะไปยังหน้าที่สองที่เราตั้งค่าตัวแปร อีกครั้งโดยใช้ตัวเข้ารหัสแบบหมุน เราสามารถเพิ่มหรือลดค่าของตัวแปรได้ ถ้าเรากดปุ่มเราจะกลับไปที่หน้าเมนูหลักและตัวแปรหน้าจะลดลง

นั่นเป็นแนวคิดพื้นฐานเบื้องหลังเมนูนี้ เราทำตามขั้นตอนเดียวกันสำหรับรายการเมนูและหน้าทั้งหมด รหัสมีความซับซ้อน มีความยาวมากกว่า 400 บรรทัด ดูเหมือนซับซ้อน แต่ถ้าคุณลองด้วยตัวเอง คุณจะเข้าใจได้ง่ายขึ้น และคุณจะสามารถเปลี่ยนแปลง ขยาย และใช้งานในโครงการของคุณเองได้ คุณสามารถหาโค้ดที่แนบมาได้ที่นี่เช่นเคย

ขั้นตอนที่ 6: การทดสอบโครงการ

ทดสอบโครงการ
ทดสอบโครงการ

หากเราโหลดโค้ด เราจะเห็นว่าโครงการทำงานตามที่คาดไว้ เราสามารถเลื่อนเมนูขึ้นและลงโดยใช้เพลาและเราสามารถเลือกรายการเมนูใด ๆ ได้โดยการกดปุ่มตัวเข้ารหัสแบบหมุน เจ๋งแค่ไหน!

ตอนนี้เรารู้วิธีสร้างเมนูสำหรับจอแสดงผล LCD ของ Nokia 5110 แล้ว เราสามารถเพิ่มคุณสมบัติต่างๆ ให้กับโปรเจ็กต์ของเราและทำให้ใช้งานได้ง่ายยิ่งขึ้น เมนูง่าย ๆ ที่เราสร้างขึ้นในวันนี้สามารถปรับปรุงได้ เราสามารถใช้อินเตอร์รัปต์แทนการตรวจสอบสถานะของปุ่มได้ตลอดเวลา ด้วยวิธีนี้ เราสามารถลดการใช้พลังงานของโครงการและทำให้โค้ดสะอาดขึ้น ฉันจะเตรียมวิดีโอเกี่ยวกับการขัดจังหวะในเร็วๆ นี้ โปรดคอยติดตาม ฉันชอบที่จะได้ยินความคิดเห็นของคุณเกี่ยวกับโครงการเมนูนี้ คุณคิดว่ามันมีประโยชน์หรือไม่และคุณวางแผนที่จะใช้เมนูในโครงการของคุณหรือไม่ กรุณาโพสต์ความคิดและความคิดของคุณด้านล่าง ขอบคุณ!

แนะนำ: