นักวิทยุสมัครเล่นทุกคน หลังจากทำงาน DIY ง่าย ๆ เสร็จแล้ว ก็มาถึงเป้าหมายในการสร้างสิ่งที่ยิ่งใหญ่โดยใช้เซ็นเซอร์และปุ่มต่างๆ ท้ายที่สุดแล้ว การแสดงข้อมูลบนจอแสดงผลมีความน่าสนใจมากกว่าบนจอภาพพอร์ต แต่แล้วคำถามก็เกิดขึ้น: เลือกจออะไรดี? และโดยทั่วไปต้องเชื่อมต่ออย่างไรต้องเชื่อมต่ออย่างไร คำตอบสำหรับคำถามเหล่านี้จะกล่าวถึงในบทความนี้
LCD 1602
ในบรรดาตัวเลือกต่างๆ ของจอภาพ ฉันอยากจะแยกแยะจอแสดงผล LCD1602 ที่อิงจากตัวควบคุม HD4478 มีจอแสดงผลสองสี: ตัวอักษรสีขาวบนพื้นหลังสีน้ำเงิน ตัวอักษรสีดำบนพื้นหลังสีเหลือง การเชื่อมต่อ LCD 1602 กับ Arduino จะไม่ทำให้เกิดปัญหาใดๆ เช่นกัน เนื่องจากมีไลบรารีในตัว และคุณไม่จำเป็นต้องดาวน์โหลดอะไรเพิ่มเติม จอแสดงผลแตกต่างกันไม่เพียง แต่ในด้านราคา แต่ยังรวมถึงขนาดด้วย นักวิทยุสมัครเล่นมักใช้ 16x 2 คือ 2 บรรทัด 16 ตัวอักษร แต่ก็มีขนาด 20 x 4 ซึ่งมี 4 บรรทัด 20 ตัวอักษร ขนาดและสีไม่มีส่วนใดๆ ในการเชื่อมต่อจอแสดงผล LCD 1602 กับ Arduno แต่เชื่อมต่อในลักษณะเดียวกัน มุมมองภาพ 35 องศา เวลาตอบสนองการแสดงผล 250 ms สามารถทำงานที่อุณหภูมิตั้งแต่ -20 ถึง 70 องศาเซลเซียส เมื่อทำงานจะใช้ 4 mA สำหรับหน้าจอและ 120 mA สำหรับแบ็คไลท์
ใช้ที่ไหน
จอแสดงผลนี้ไม่เพียงได้รับความนิยมในหมู่นักวิทยุสมัครเล่นเท่านั้น แต่ยังรวมถึงผู้ผลิตรายใหญ่ด้วย ตัวอย่างเช่น เครื่องพิมพ์ เครื่องชงกาแฟก็ใช้ LCD1602 เช่นกัน นี่เป็นเพราะราคาต่ำจอแสดงผลนี้มีราคา 200-300 รูเบิลในเว็บไซต์จีน มันคุ้มค่าที่จะซื้อที่นั่น เพราะในร้านค้าของเรา มาร์จิ้นสำหรับจอแสดงผลนี้สูงมาก
เชื่อมต่อกับ Arduino
การเชื่อมต่อ LCD 1602 กับ Arduino Nano และ Uno ก็ไม่ต่างกัน คุณสามารถทำงานกับจอแสดงผลได้สองโหมด: 4 บิตและ 8 เมื่อทำงานกับจอแสดงผล 8 บิต จะใช้ทั้งบิตที่ต่ำกว่าและสูงกว่า และสำหรับบิตที่ต่ำกว่า 4 บิต เฉพาะบิตล่างเท่านั้น ไม่มีจุดเฉพาะในการทำงานกับ 8 บิตเนื่องจากจะเพิ่มผู้ติดต่ออีก 4 รายเพื่อเชื่อมต่อซึ่งไม่แนะนำเพราะความเร็วจะไม่สูงขึ้นขีด จำกัด การอัปเดตการแสดงผลคือ 10 ครั้งต่อวินาที โดยทั่วไป มีการใช้สายไฟจำนวนมากในการเชื่อมต่อ LCD 1602 กับ Arduino ซึ่งทำให้เกิดความไม่สะดวก แต่มีเกราะพิเศษ แต่จะเพิ่มเติมในภายหลัง ภาพถ่ายแสดงการเชื่อมต่อของจอแสดงผลกับ Arduino Uno:
ตัวอย่างโค้ด:
รวม //เพิ่มไลบรารีที่จำเป็น LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) การตั้งค่าเป็นโมฆะ () { lcd.begin (16, 2); // ตั้งค่าขนาดหน้าจอ lcd.setCursor(0, 0); // ตั้งเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดที่ 1 lcd.print("สวัสดีชาวโลก!"); // แสดงข้อความ LCD setCursor(0, 1); // ตั้งเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดที่ 2 lcd.print("fb.ru"); // ข้อความเอาต์พุต } void loop(){ }
โค้ดใช้ทำอะไร ? ประการแรก มีการเชื่อมต่อไลบรารีสำหรับการทำงานกับจอแสดงผล ดังที่ได้กล่าวไว้ข้างต้น ไลบรารีนี้รวมอยู่ใน Arduino IDE แล้ว และคุณไม่จำเป็นต้องดาวน์โหลดและติดตั้งเพิ่มเติม ถัดไป ผู้ติดต่อที่เชื่อมต่อกับพินถูกกำหนด: RS, E, DB4, DB5, DB6, DB7 ตามลำดับ จากนั้นกำหนดขนาดหน้าจอ เนื่องจากเรากำลังทำงานกับเวอร์ชันที่มีอักขระ 16 ตัวและ 2 บรรทัด เราจึงเขียนค่าดังกล่าว เราตั้งเคอร์เซอร์ไว้ที่จุดเริ่มต้นของบรรทัดแรกและแสดงข้อความแรกของเรา สวัสดีชาวโลก ถัดไป วางเคอร์เซอร์บนบรรทัดที่สอง และแสดงชื่อของไซต์ นั่นคือทั้งหมด! กำลังพิจารณาเชื่อมต่อ LCD 1602 กับ Arduino Uno
I2C คืออะไรและทำไมจึงจำเป็น
ตามที่กล่าวไว้ข้างต้น การเชื่อมต่อจอแสดงผลต้องใช้หมุดจำนวนมาก ตัวอย่างเช่น เมื่อทำงานกับเซ็นเซอร์หลายตัวและหน้าสัมผัส LCD 1602 จอ LCD อาจไม่เพียงพอ บ่อยครั้งที่นักวิทยุสมัครเล่นใช้รุ่น Uno หรือ Nano ซึ่งมีการติดต่อไม่มากนัก จากนั้นผู้คนก็มาพร้อมกับโล่พิเศษ ตัวอย่างเช่น I2C ช่วยให้คุณสามารถเชื่อมต่อจอแสดงผลได้เพียง 4 พิน น้อยกว่านี้สองเท่า โมดูล I2C จำหน่ายแยกกัน โดยที่คุณต้องบัดกรีด้วยตัวเอง และบัดกรีเรียบร้อยแล้วจอ LCD 1602.
การเชื่อมต่อกับโมดูล I2C
การเชื่อมต่อ LCD 1602 กับ Arduino Nano ด้วย I2C ใช้พื้นที่เพียงเล็กน้อย มีเพียง 4 ขาเท่านั้น: กราวด์ กำลังไฟฟ้า และเอาต์พุตข้อมูล 2 รายการ เราเชื่อมต่อพลังงานและกราวด์กับ 5V และ GND บน Arduino ตามลำดับ ผู้ติดต่อสองรายที่เหลือ: SCL และ SDA เชื่อมต่อกับพินอะนาล็อก ในภาพ คุณสามารถดูตัวอย่างการเชื่อมต่อ LCD 1602 กับ Arduino ด้วยโมดูล I2C:
รหัสโปรแกรม
หากจำเป็นต้องใช้เพียงหนึ่งไลบรารีเพื่อทำงานกับจอแสดงผลโดยไม่มีโมดูล ก็จำเป็นต้องใช้สองไลบรารีเพื่อทำงานกับโมดูล หนึ่งในนั้นอยู่ใน Arduino IDE - Wire แล้ว ไลบรารีอื่น LiquidCrystal I2C จะต้องดาวน์โหลดและติดตั้งแยกต่างหาก ในการติดตั้งไลบรารี่ใน Arduino จะต้องอัปโหลดเนื้อหาของไฟล์เก็บถาวรที่ดาวน์โหลดไปยังโฟลเดอร์รูทของไลบรารี ตัวอย่างโค้ดที่ใช้ I2C:
รวม รวม LiquidCrystal_I2C lcd(0x27, 16, 2); // ตั้งค่าการแสดงผลเป็นโมฆะ () { lcd.init (); lcd.backlight();// เปิดไฟหน้าจอ lcd.print("FB.ru"); lcd.setCursor(8, 1); lcd.print("LCD 1602"); } void loop() {// ตั้งค่าเคอร์เซอร์เป็นบรรทัดที่สองและอักขระ null lcd.setCursor(0, 1); // พิมพ์จำนวนวินาทีตั้งแต่ Arduino เริ่ม lcd.print(millis()/1000); }
อย่างที่คุณเห็น รหัสเกือบจะเหมือนกัน
ฉันจะเพิ่มสัญลักษณ์ของตัวเองได้อย่างไร
ปัญหาของจอพวกนี้คือไม่มีรองรับ Cyrillic และสัญลักษณ์ ตัวอย่างเช่น คุณต้องโหลดอักขระบางตัวลงในจอแสดงผลเพื่อให้สามารถสะท้อนได้ ในการดำเนินการนี้ จอแสดงผลจะให้คุณสร้างตัวละครได้มากถึง 7 ตัว นำเสนอตาราง:
0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 ถ้า 0 - ไม่มีอะไรเลย ถ้า 1 - เป็นพื้นที่แรเงา ในตัวอย่างข้างต้น คุณจะเห็นการสร้างอักขระ "ยิ้มยิ้ม" การใช้โปรแกรมตัวอย่างใน Arduino จะมีลักษณะดังนี้:
include include // รวมไลบรารีที่จำเป็น // สัญลักษณ์รอยยิ้ม bitmask byte smile[8]={ B00010, B00001, B11001, B00001, B11001, B00001, B00010, }; LiquidCrystal LCD (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) การตั้งค่าเป็นโมฆะ () { lcd.begin (16, 2); // ตั้งค่าขนาดหน้าจอ lcd.createChar(1, ยิ้ม); // สร้างอักขระหมายเลข 1 lcd.setCursor(0, 0); // ตั้งค่าเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดที่ 1 lcd.print("\1"); // แสดงสไมลี่ (อักขระที่ 1) - "\1" } void loop(){ }
อย่างที่คุณเห็น ถูกสร้างขึ้นบิตมาสก์เหมือนกับตาราง เมื่อสร้างแล้ว ก็สามารถส่งออกเป็นตัวแปรไปยังจอแสดงผลได้ โปรดจำไว้ว่าสามารถเก็บไว้ในหน่วยความจำได้เพียง 7 ตัวอักษรเท่านั้น โดยหลักการแล้วสิ่งนี้ก็เพียงพอแล้ว ตัวอย่างเช่น หากคุณต้องการแสดงสัญลักษณ์ดีกรี
ปัญหาการแสดงผลอาจไม่ทำงาน
มีบางครั้งที่หน้าจอไม่ทำงาน ตัวอย่างเช่น เปิดขึ้นแต่ไม่แสดงอักขระ หรือเปิดไม่ติดเลย ขั้นแรก ดูว่าคุณเชื่อมต่อผู้ติดต่ออย่างถูกต้องหรือไม่ หากคุณเคยเชื่อมต่อ LCD 1202 กับ Arduino โดยไม่ต้องใช้ I2C แสดงว่าสายไฟพันกันได้ง่ายมากๆ ซึ่งอาจทำให้จอแสดงผลทำงานผิดพลาดได้ คุณควรตรวจสอบให้แน่ใจด้วยว่าคอนทราสต์ของจอแสดงผลเพิ่มขึ้น เนื่องจากคอนทราสต์ขั้นต่ำจะไม่ปรากฏให้เห็นไม่ว่า LCD 1602 เปิดอยู่หรือไม่ก็ตาม หากวิธีนี้ไม่ได้ผล ปัญหาอาจอยู่ที่การบัดกรีของหน้าสัมผัส ซึ่งก็คือเมื่อใช้โมดูล I2C นอกจากนี้ สาเหตุทั่วไปที่ทำให้จอแสดงผลไม่ทำงานคือการตั้งค่าที่อยู่ I2C ที่ไม่ถูกต้อง ความจริงก็คือมีผู้ผลิตหลายรายและพวกเขาสามารถตั้งค่าที่อยู่อื่นได้ คุณต้องแก้ไขที่นี่:
LiquidCrystal_I2C จอแอลซีดี(0x27, 16, 2);
ในวงเล็บ คุณจะเห็นค่าสองค่าคือ 0x27 และ 16, 2 (16, 2 คือขนาดที่แสดง และ 0x27 เป็นเพียงที่อยู่ I2C) แทนที่จะใส่ค่าเหล่านี้ คุณสามารถลองใส่ 0x37 หรือ 0x3F อีกเหตุผลหนึ่งก็คือ LCD 1602 ที่ผิดพลาด เมื่อพิจารณาว่าเกือบทุกอย่างสำหรับ Arduino นั้นผลิตในประเทศจีน คุณจึงไม่สามารถแน่ใจได้ 100% ว่าสินค้าที่ซื้อมาสินค้าไม่มีตำหนิ
LCD 1602 ข้อดีและข้อเสีย
มาดูข้อดีข้อเสียของ LCD 1602 กันดีกว่า
ข้อดี
- ราคา. โมดูลนี้สามารถซื้อได้ในราคาที่ไม่แพงมากในร้านค้าจีน ราคา 200-300 รูเบิล บางครั้งก็ขายพร้อมกับโมดูล I2C
- เชื่อมต่อง่าย อาจไม่มีใครเชื่อมต่อ LCD 1602 โดยไม่มี I2C ในปัจจุบัน และด้วยโมดูลนี้ การเชื่อมต่อใช้เพียง 4 พิน จะไม่มี "ใย" ของสายไฟ
- การเขียนโปรแกรม. ขอบคุณไลบรารีสำเร็จรูป การทำงานกับโมดูลนี้เป็นเรื่องง่าย ฟังก์ชันทั้งหมดได้รับการลงทะเบียนแล้ว และถ้าคุณต้องการเพิ่มตัวละครของคุณ ก็ใช้เวลาเพียงไม่กี่นาที
ข้อเสีย
ในช่วงเวลาที่นักวิทยุสมัครเล่นหลายพันคนใช้งาน ไม่มีการระบุข้อเสียใหญ่ๆ มีเพียงบางกรณีในการซื้อการแต่งงาน เนื่องจากตัวเลือกการแสดงผลภาษาจีนส่วนใหญ่จะใช้
บทความนี้กล่าวถึงวิธีเชื่อมต่อจอแสดงผล LCD 1602 กับ Arduino และยังนำเสนอโปรแกรมตัวอย่างสำหรับการทำงานกับจอแสดงผลนี้ มันเป็นหนึ่งในสิ่งที่ดีที่สุดในหมวดหมู่นี้จริง ๆ ไม่ใช่แค่นักวิทยุสมัครเล่นหลายพันคนเลือกมันสำหรับโครงการของพวกเขา!