สารบัญ:
- ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด
- ขั้นตอนที่ 2: จอแสดงผล LCD ของ Nokia 5110
- ขั้นตอนที่ 3: ตัวเข้ารหัสแบบหมุน
- ขั้นตอนที่ 4: การสร้างโครงการ
- ขั้นตอนที่ 5: รหัสของโครงการ
- ขั้นตอนที่ 6: การทดสอบโครงการ
วีดีโอ: เมนู Arduino บนจอ LCD Nokia 5110 โดยใช้เครื่องเข้ารหัสแบบหมุน: 6 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
เพื่อนๆที่รักยินดีต้อนรับสู่การกวดวิชาอื่น! ในวิดีโอนี้ เราจะมาเรียนรู้วิธีสร้างเมนูของเราเองสำหรับจอแสดงผล Nokia 5110 LCD ยอดนิยม เพื่อทำให้โปรเจ็กต์ของเราเป็นมิตรกับผู้ใช้และมีความสามารถมากขึ้น มาเริ่มกันเลย!
นี่คือโครงการที่เราจะสร้าง ในจอแสดงผล เมนูอย่างง่ายจะปรากฏขึ้น และด้วยความช่วยเหลือของตัวเข้ารหัสแบบหมุน ฉันสามารถเลื่อนขึ้นหรือลงและเลือกรายการเมนูได้โดยการกดปุ่มตัวเข้ารหัสแบบหมุน เมื่อกดปุ่มตรงกลางของตัวเข้ารหัสแบบหมุน หน้าจออื่นจะปรากฏขึ้นและเราสามารถเปลี่ยนค่าของตัวแปรได้ หากเรากดปุ่มเข้ารหัสแบบหมุนอีกครั้ง เราจะกลับไปที่หน้าจอเมนูหลัก เมนูมี 6 รายการ และเราสามารถเลื่อนลงหรือขึ้นเมนูและรายการบนจอแสดงผลจะเปลี่ยนไปตามนั้น ดูวิดีโอที่แนบมาเพื่อดูว่าเมนูนี้ทำงานอย่างไร แน่นอน คุณสามารถปรับเปลี่ยนเพื่อสร้างเมนูที่ซับซ้อนมากขึ้นได้หากต้องการ
ตอนนี้เรามาดูวิธีการสร้างโครงการนี้กัน
ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด
ชิ้นส่วนที่จำเป็นในการสร้างโครงการนี้มีดังต่อไปนี้:
- Arduino Uno ▶
- จอ LCD ของ Nokia 5110 ▶
- ตัวเข้ารหัสแบบหมุน ▶
- เขียงหั่นขนมขนาดเล็ก ▶
- บางสาย ▶
- พาวเวอร์แบงค์ ▶
ต้นทุนของโครงการต่ำมาก น้อยกว่า $10 คุณสามารถค้นหาลิงก์สำหรับส่วนทั้งหมดที่ฉันใช้ในคำอธิบายของวิดีโอด้านล่าง
ขั้นตอนที่ 2: จอแสดงผล LCD ของ Nokia 5110
Nokia 5110 คือจอแสดงผลที่ฉันโปรดปรานสำหรับโปรเจ็กต์ Arduino ของฉัน
Nokia 5110 เป็นหน้าจอ LCD แบบกราฟิกพื้นฐานซึ่งเดิมมีไว้สำหรับเป็นหน้าจอโทรศัพท์มือถือ ใช้คอนโทรลเลอร์ PCD8544 ซึ่งเป็นคอนโทรลเลอร์/ไดรเวอร์ CMOS LCD พลังงานต่ำ ด้วยเหตุนี้จอแสดงผลนี้จึงมีการใช้พลังงานที่น่าประทับใจ ใช้เพียง 0.4mA เมื่อเปิดเครื่อง แต่ปิดไฟแบ็คไลท์ ใช้น้อยกว่า 0.06mA เมื่ออยู่ในโหมดสลีป! นั่นเป็นเหตุผลหนึ่งที่ทำให้จอแสดงผลนี้เป็นที่ชื่นชอบ PCD8544 เชื่อมต่อกับไมโครคอนโทรลเลอร์ผ่านอินเตอร์เฟสบัสอนุกรม นั่นทำให้จอแสดงผลใช้งานง่ายมากกับ Arduino คุณต้องเชื่อมต่อสายไฟ 8 เส้นเท่านั้น
ฉันได้เตรียมการสอนโดยละเอียดเกี่ยวกับวิธีใช้จอแสดงผล Nokia 5110 LCD กับ Arduino ฉันได้แนบวิดีโอนั้นในคำแนะนำนี้ ซึ่งจะให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับการแสดงผล ดังนั้นฉันขอแนะนำให้คุณดูอย่างระมัดระวัง ค่าใช้จ่ายของจอแสดงผลอยู่ที่ประมาณ 4 เหรียญ
คุณสามารถรับได้ที่นี่: ▶
ขั้นตอนที่ 3: ตัวเข้ารหัสแบบหมุน
เครื่องเข้ารหัสแบบโรตารี่หรือที่เรียกว่าเครื่องเข้ารหัสเพลาเป็นอุปกรณ์เครื่องกลไฟฟ้าที่แปลงตำแหน่งเชิงมุมหรือการเคลื่อนที่ของเพลาหรือเพลาเป็นรหัสอนาล็อกหรือดิจิตอล เครื่องเข้ารหัสแบบโรตารี่ถูกนำมาใช้ในการใช้งานจำนวนมากที่ต้องการเพลาที่แม่นยำในการหมุนไม่จำกัด ซึ่งรวมถึงการควบคุมในอุตสาหกรรม หุ่นยนต์ เลนส์ถ่ายภาพสำหรับวัตถุประสงค์พิเศษ อุปกรณ์ป้อนข้อมูลของคอมพิวเตอร์ (เช่น เมาส์ออปโตเมคานิคัลและแทร็กบอล) รีโอมิเตอร์วัดความเค้นแบบควบคุม และแพลตฟอร์มเรดาร์ที่หมุนได้
เครื่องเข้ารหัสแบบโรตารี่ที่เราจะใช้ในโครงการนี้เป็นเครื่องเข้ารหัสที่มีราคาไม่แพงมาก นอกจากนี้ยังมีปุ่มฝังอยู่และเพื่อให้ใช้งานได้ เราจำเป็นต้องเชื่อมต่อสายไฟเพียง 5 เส้นเท่านั้น ฉันได้เตรียมการสอนโดยละเอียดเกี่ยวกับวิธีใช้เครื่องเข้ารหัสแบบหมุนแล้ว คุณสามารถแนบวิดีโอนี้ได้ที่นี่
ค่าใช้จ่ายของตัวเข้ารหัสแบบหมุนนี้ต่ำมาก มีค่าใช้จ่ายประมาณ 1.5 เหรียญ
สามารถดาวน์โหลดได้ที่นี่ ▶
ขั้นตอนที่ 4: การสร้างโครงการ
ตอนนี้มาเชื่อมต่อทุกส่วนเข้าด้วยกัน ก่อนสร้างโครงการนี้ หากคุณไม่เคยใช้เครื่องเข้ารหัสแบบโรตารี่มาก่อน เราขอแนะนำให้คุณดูบทช่วยสอนที่ฉันเตรียมไว้เกี่ยวกับเครื่องเข้ารหัสแบบหมุน มันจะช่วยให้คุณเข้าใจว่าโรตารีเอ็นโค้ดเดอร์ทำงานอย่างไร และคุณจะได้รับประสบการณ์บางอย่างกับมัน วิดีโอนี้แนบมาที่นี่
ฉันได้วางจอแสดงผลไว้บนเขียงหั่นขนมขนาดเล็กเช่นนี้ มาเชื่อมต่อจอภาพกันก่อน พินแรกของจอแสดงผลซึ่งถูกรีเซ็ตไปที่พินดิจิตอล 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 แห่ง เราใช้ไลบรารีสองไลบรารีสำหรับการแสดงผล และสองไลบรารีสำหรับเครื่องเข้ารหัสแบบหมุน
- Adafruit GFX:
- โนเกีย 5110:
- ไลบรารีตัวเข้ารหัส:
- ห้องสมุด 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 แล้ว เราสามารถเพิ่มคุณสมบัติต่างๆ ให้กับโปรเจ็กต์ของเราและทำให้ใช้งานได้ง่ายยิ่งขึ้น เมนูง่าย ๆ ที่เราสร้างขึ้นในวันนี้สามารถปรับปรุงได้ เราสามารถใช้อินเตอร์รัปต์แทนการตรวจสอบสถานะของปุ่มได้ตลอดเวลา ด้วยวิธีนี้ เราสามารถลดการใช้พลังงานของโครงการและทำให้โค้ดสะอาดขึ้น ฉันจะเตรียมวิดีโอเกี่ยวกับการขัดจังหวะในเร็วๆ นี้ โปรดคอยติดตาม ฉันชอบที่จะได้ยินความคิดเห็นของคุณเกี่ยวกับโครงการเมนูนี้ คุณคิดว่ามันมีประโยชน์หรือไม่และคุณวางแผนที่จะใช้เมนูในโครงการของคุณหรือไม่ กรุณาโพสต์ความคิดและความคิดของคุณด้านล่าง ขอบคุณ!
แนะนำ:
DIY 10Hz-50kHz Arduino Oscilloscope บนจอ LCD ขนาด 128x64: 3 ขั้นตอน
DIY 10Hz-50kHz Arduino Oscilloscope บนจอแสดงผล LCD ขนาด 128x64: โครงการนี้อธิบายวิธีสร้างออสซิลโลสโคปอย่างง่ายที่มีช่วงตั้งแต่ 10Hz ถึง 50Khz นี่เป็นช่วงที่กว้างมากเนื่องจากอุปกรณ์ไม่ได้ใช้ชิปแปลงสัญญาณดิจิทัลภายนอกเป็นแอนะล็อก แต่ใช้เฉพาะ Arduino
การอ่านข้อมูล Ultrasonic Sensor (HC-SR04) บนจอ LCD ขนาด 128 × 128 และการแสดงภาพโดยใช้ Matplotlib: 8 ขั้นตอน
การอ่านข้อมูล Ultrasonic Sensor (HC-SR04) บนจอ LCD ขนาด 128 × 128 และการแสดงภาพโดยใช้ Matplotlib: ในคำแนะนำนี้ เราจะใช้ MSP432 LaunchPad + BoosterPack เพื่อแสดงข้อมูลของเซ็นเซอร์อัลตราโซนิก (HC-SR04) บน 128 × 128 LCD และส่งข้อมูลไปยังพีซีตามลำดับและแสดงภาพโดยใช้ Matplotlib
แสดงการอ่านเซ็นเซอร์ Arduino แบบสดบน LCD Nokia 5110: 4 ขั้นตอน (พร้อมรูปภาพ)
แสดงการอ่านเซ็นเซอร์ Arduino แบบสดบน LCD ของ Nokia 5110: หากคุณเคยทำงานกับ Arduino คุณอาจต้องการให้แสดงการอ่านเซ็นเซอร์ การใช้จอภาพแบบอนุกรมนั้นใช้ได้อย่างสมบูรณ์ แต่การเป็น Arduino Badass ที่คุณจะกลายเป็นอย่างรวดเร็ว คงจะอยากให้มันแสดงการอ่านอะไรบางอย่างมอ
DIY เครื่องวัดความชื้นในดินด้วย Arduino และจอแสดงผล Nokia 5110: 6 ขั้นตอน (พร้อมรูปภาพ)
เครื่องวัดความชื้นในดิน DIY ด้วย Arduino และจอแสดงผล Nokia 5110: ในคำแนะนำนี้ เราจะมาดูวิธีสร้างเครื่องวัดความชื้นในดินที่มีประโยชน์มากด้วยจอแสดงผล LCD Nokia 5110 ขนาดใหญ่โดยใช้ Arduino วัดระดับความชื้นในดินของพืชจาก Arduino ของคุณได้อย่างง่ายดาย และสร้างอุปกรณ์ที่น่าสนใจ
แก้ไข Stuck Pixel บนจอ LCD: 5 ขั้นตอน (พร้อมรูปภาพ)
แก้ไข Stuck Pixel บนจอ LCD: หากคุณชอบคำสั่งนี้ คุณอาจจะชอบสิ่งอื่นๆ ในไซต์ของฉันที่นี่… โมฆะการรับประกัน UPDATE: คำแนะนำนี้อยู่ใน Engadget! http://www.engadget.com/2007/12/24/how-to-guide-details-fix-for-stuck-pixels/I am going to s