ชื่อ Iconic " Nokia 5110 " นั้นน่าจะซื้อความทรงจำเกี่ยวกับโทรศัพท์มือถือ Nokia ที่แข็งแกร่งซึ่งเป็นที่นิยมอย่างมากในช่วงทศวรรษที่ 90 รุ่น 5110 มาพร้อมกับจอแสดงผลแบบกราฟิกซึ่งเพียงพอที่จะทำหน้าที่เป็นหน้าจอแสดงผลสำหรับมือถือในตอนนั้น หน้าจอนี้สามารถแสดงทุกอย่างตั้งแต่ตัวอักษรและตัวเลขไปจนถึงกราฟิกขนาดเล็กที่จำเป็นสำหรับโทรศัพท์มือถือ เมื่อโลกหมุนรอบเทคโนโลยีใหม่โดยมีหน้าจอสัมผัสมันวาวโผล่เข้ามาและจอแสดงผลนี้ไม่ได้ใช้งานอีกต่อไป แต่หวังว่าจะสามารถใช้ในแอปพลิเคชั่นอิเล็กทรอนิกส์ที่ต้องแสดงกราฟิกขนาดเล็กและหลีกเลี่ยงการใช้จ่ายเงินบนหน้าจอ LCD ขนาดใหญ่ ดังนั้นในบทช่วยสอนนี้เราจะเรียนรู้วิธีการเชื่อมต่อจอ LCD กราฟิก Nokia 5110 กับ Arduinoและทำให้มันทำงานได้
LCD เหล่านี้มีพิกเซลขาวดำขนาด 84 × 48 อาจดูซ้ำซากจำเจ แต่ยังสามารถใช้เพื่อแสดงกราฟิกที่เหมาะสมสำหรับโครงการของคุณและสามารถใช้กับไมโครคอนโทรลเลอร์อย่าง Arduino ได้อย่างง่ายดาย มาเริ่มกันเลย…. !
วัสดุที่ต้องการ:
- Arduino Board (ทุกรุ่น)
- จอแสดงผล Nokia 5110
- การเชื่อมต่อสายไฟ
โมดูลการแสดงผลกราฟิก Nokia 5110:
มีสองประเภทของกราฟิก LCD เหล่านี้ในตลาด แผ่นหนึ่งมีแผ่นประสานทั้งด้านบนและด้านล่างของจอแสดงผลและอีกแผ่นหนึ่งมีแผ่นบัดกรีที่ด้านล่างของจอแสดงผลเท่านั้น อันที่เราใช้เป็นของประเภท 2 ซึ่งมีแผ่นอิเล็กโทรดอยู่ใต้จอแสดงผลเท่านั้น ทั้งสองโมดูลทำงานเหมือนกันและด้วยเหตุนี้การเชื่อมต่อจึงเหมือนกันสำหรับทั้งสองอย่าง ดังนั้นไม่ว่าจะเป็นโมดูลใดคุณสามารถทำตามบทช่วยสอนได้
ตามที่กล่าวไว้ก่อนหน้านี้Nokia 5110 Graphical LCDมี 84 พิกเซลในแนวนอนและ 48 พิกเซลในแนวตั้ง ขนาดจอแสดงผลรวมคือ 1.72 'x 1.72' โมดูลมีพินอินพุต 6 พินซึ่งเราสามารถเชื่อมต่อกับไมโครคอนโทรลเลอร์ผ่านการสื่อสาร SPI อินเทอร์เฟซ IC ที่สื่อสารระหว่างจอแสดงผลและ Arduino คือไอซีคอนโทรลเลอร์การแสดงผล Philips PCD8544 ซึ่งสามารถดูข้อมูลได้ที่นี่ อย่างไรก็ตามหากคุณใช้ Arduino เพื่อสื่อสารกับ IC นี้เราไม่จำเป็นต้องกังวลเกี่ยวกับแผ่นข้อมูลเนื่องจากมีไลบรารีที่พร้อมให้ดาวน์โหลดและใช้งาน โมดูลที่เราใช้อยู่ที่นี่แสดงอยู่ด้านล่าง
แผนภูมิวงจรรวม:
แผนภาพวงจรที่สมบูรณ์สำหรับการเชื่อมต่อ Nokia5110 Graphical LCD กับ Arduinoมีดังต่อไปนี้
โมดูลจอแสดงผลมี 8 ขาที่ใช้ในการตั้งค่าการสื่อสาร SPI กับ Arduino โมดูลนี้ใช้พลังงานจากพิน 3.3V ของบอร์ด Arduino โปรดทราบว่าโมดูลเหล่านี้ทำงานบนลอจิก 3.3V ดังนั้นจึงไม่จ่าย 5V ให้กับขา Vcc ของจอแสดงผล ฉันต่อสาย Pin ของจอแสดงผลกับ Arduino โดยตรงแม้ว่า LCD จะทำงานบนลอจิก 3.3V และ Arduino บนลอจิก 5V เพราะฉันพบว่า LCD ทำงานอย่างถูกต้อง คุณสามารถใช้ตัวแบ่งแรงดันเพื่อแปลง 5V เป็น 3.3V ได้หากจำเป็น แต่สำหรับฉันมันใช้งานได้โดยไม่ต้องแปลงลอจิกเท่านั้น การเชื่อมต่อนั้นค่อนข้างง่ายและตรงไปตรงมา เมื่อคุณเชื่อมต่อเสร็จสิ้นการตั้งค่าของคุณจะมีลักษณะดังนี้ที่แสดงด้านล่าง
โปรแกรม Arduino และการทำงาน:
ทำตามขั้นตอนด้านล่างเพื่อโปรแกรม Arduino ของคุณสำหรับโนเกีย 5110 จอแสดงผล ขั้นตอนสมมติว่าคุณได้ติดตั้ง Arduino IDE แล้วและคุ้นเคยกับการใช้งาน
ขั้นตอนที่ 1:เปิด Arduino IDE บนคอมพิวเตอร์ของคุณและเลือกบอร์ดที่เหมาะสมภายใต้เมนูเครื่องมือหลังจากเชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณ
ขั้นตอนที่ 2:คลิกที่นี่เพื่อดาวน์โหลด Nokia 5110 Display Library by Adafruit library จาก GitHub repository
ขั้นตอนที่ 3:เมื่อดาวน์โหลดไฟล์ Zip แล้วให้เลือก Sketch -> Include Library -> Add. ZIP library และเรียกดูตำแหน่งที่ดาวน์โหลด ZIP
หมายเหตุ: คุณจะต้องดาวน์โหลดแกนกราฟิก Adafruit GFX ซึ่งจะทำวงกลมข้อความสี่เหลี่ยม ฯลฯ ทั้งหมดคุณสามารถดาวน์โหลดได้จาก https://github.com/adafruit/Adafruit-GFX-Library และติดตั้งในลักษณะเดียวกัน.
ขั้นตอนที่ 4:เปิดโปรแกรมตัวอย่างโดยเลือก ไฟล์ -> ตัวอย่าง -> Adafruit PCD Nokia 5110 LCD Library -> pcdtest แล้วคลิกที่ปุ่มอัปโหลด
ขั้นตอนที่ 5:เมื่ออัปโหลดโปรแกรมแล้วให้กดปุ่มรีเซ็ตบน Arduino และคุณจะเห็นโปรแกรมตัวอย่างที่แสดงภาพเคลื่อนไหวทั้งหมดดังที่แสดงในวิดีโอที่ให้ไว้ในตอนท้ายของบทช่วยสอนนี้
คุณสามารถอ่านโปรแกรมตัวอย่างเพื่อทำความเข้าใจฟังก์ชั่นในตัวต่างๆที่สามารถใช้ในการออกแบบกราฟิกต่างๆบนจอ LCD แต่ขอให้เราไปหนึ่งก้าวและพยายามแสดงโลโก้ CircuitDigest บนหน้าจอ
ตอนนี้เปิดภาพที่ต้องการใน สี และปรับขนาดภาพขนาดภาพสูงสุดที่เราสามารถใช้สำหรับการแสดงผลของเราคือ 84 × 48
หลังจากปรับขนาดภาพแล้วให้บันทึกภาพเป็นบิตแมป (ขาวดำ) โดยใช้ตัวเลือก บันทึกเป็น ในโปรแกรมระบายสี ในการแสดงภาพเป็นบิตแมปบนหน้าจอ LCD ของเราเราจำเป็นต้องมีซอฟต์แวร์ที่สามารถแปลงภาพบิตแมปเป็นรหัสได้ คุณสามารถดาวน์โหลดซอฟต์แวร์ได้โดยคลิกที่นี่ เมื่อดาวน์โหลดคลายซิปไฟล์แล้วคลิกที่ “ BitmapEncoder” เพื่อเปิดแอปพลิเคชัน เปิดภาพบิตแมปที่เราเพิ่งบันทึกโดยใช้ซอฟต์แวร์นี้เพื่อรับอาร์เรย์ของค่าที่เข้ารหัส คุณสามารถคัดลอกค่าเหล่านี้ได้โดยตรงและวางลงในอาร์เรย์ Arduino ของคุณ ค่าที่แสดงโดยซอฟต์แวร์สำหรับโลโก้ของเราแสดงอยู่ด้านล่าง
ดังที่คุณเห็นอาร์เรย์เริ่มต้นด้วยค่า 48 48 นี่คือขนาดของรูปภาพของเรา เราไม่ควรเพิ่มสิ่งนี้ในอาร์เรย์ของเรา ดังนั้นให้ลบสองค่าแรกและใช้ส่วนที่เหลือเป็นค่าอาร์เรย์ในโปรแกรม อาร์เรย์จะมีลักษณะดังนี้โปรแกรมที่สมบูรณ์จะได้รับในตอนท้ายของหน้านี้สำหรับการอ้างอิงของคุณ
โลโก้ PROGMEM ที่ไม่ได้ลงนามแบบคงที่ = {B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001111, B11111000, B00000000, B00000000, B00000000, B00000000, B00001111, B11111111, B00000000, B00000000, B00000000, B00000000, B00001111, B11111000, B00000000, B00000000, B00000000, B00000000, B00001111, B11111111, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001111, B11111111, B00000000, B00000000, B0000, B000011, 11000 B11111111, B11000000, B00000000, B00000000, B00001110, B00111110, B00111111, B11110000, B00000000, B00000000, B00111110, B00111110, B10000000, B01111100, B00000000, B00000000, B00111110, B00111111, B11110000, B00000000, B00000000, B00111110, B00111110, B10000000, B01111100, B00000000, B00000000, B01111100, B01111100, B0000110000, B000000 B00001111, B00000000, B00000001, B11111000, B11111111, B00111111, B10000111, B10000000, B00000011, B11111000, B11111111, B11111111, B11000011, B11000000, B00000111, B11110001, B11100111, B1111000, B00000011, B11111000, B11111111, B11111111, B11000011, B11000000, B00000111, B11110001, B111001111, B1111000 B01100000, B00000000, B00000011, B11100000, B00001001, B11111100, B00000000, B00000000, B00000111,B11100000, B00011001, B11111110, B00000000, B00000000, B00000111, B11000000, B00000001, B11111111, B10000000, B00011111, B11111111, B11000111, B11100011, B11111111, B11111000, B11000000, B00000001, B11111111, B10000000, B00011111, B11111111, B11000111, B11100011, B11111111, B11111000, B00111111, B111111000 B11111111, B11111111, B11111100, B00111111, B11111111, B00011111, B11111111, B11111111, B11111100, B00111111, B11111110, B00111111, B00111111, B11111111, B11111110, B01111111, B11111110, B00111110, B00000000, B01111111, B11111100, B01111111, B11111100, B01111100, B11000000, B00000000, B00000000, B01111111, B11111100, B01111110, B10000000, B00000000, B00000000, B00000000, B00000000, B11111110, B00111111, B11111111, B11111110, B00000000, B1111110, B11111111, B11111111, B111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111 B11111110, B01111111, B11111111, B11111111, B11111111, B11111111, B11111110, B01111111, B11111111,B11000111, B11111111, B11111111, B11111110, B00111111, B11111111, B10000011, B11111110, B00000000, B00000000, B00111111, B11111111, B10110011, B11111000, B00000000, B00000000, B00111111, B000011000, B000011, B00001111, B000011000 B10000001, B11111111, B11111100, B00000000, B00011111, B11111000, B00000111, B11111111, B11111000, B00000000, B00000111, B11111110, B1111111, B11111111, B11111000, B00000000, B00000001, B11111111, B0000000, B00000000, B00000111, B11111110, B00011111, B11111111, B11111000, B00000000, B00000001, B111111000 B11111111, B11110000, B00000111, B11111000, B00001111, B11111111, B11000000, B00000000, B00000011, B11111100, B00100111, B11111111, B00000000, B00000000, B00000011, B11111111, B11000000, B00000000, B00000011, B11111100, B00100111, B11111111, B00000000, B00000000, B00000011, B11111111, B00110111, B11000000, B00000000, B00000011, B11111100, B00100111, B11111111, B00000000, B00000000, B00000011, B11111111, B00110111, B111100001, B00000000 B10000000, B00000000, B11111111, B11001111, B10000000, B11111111, B00000000, B00000000, B01111111,B11111111, B10110001, B11111110, B00000000, B00000000, B00011111, B11111111, B10110111, B11111100, B00000000, B00000000, B00001111, B11111111, B10000111, B11110000, B00000000, B00000000, B00001111, B00001111, B000011, B00000000 B11111111, B00000000, B00000000, B00000000, B00000000, B00001111, B11110000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000};
ตอนนี้เพื่อแสดงบิตแมปนี้เราต้องใช้โค้ดบรรทัดต่อไปนี้ ที่ข้อมูลก่อนหน้านี้บนหน้าจอจะถูกลบและเขียนภาพบิตแมปใหม่
display.clearDisplay (); display.drawBitmap (20, 0, โลโก้, 48, 48, 1); display.display ();
บรรทัด display.drawBitmap (20, 0, โลโก้, 48, 48, 1); แสดงตำแหน่งขนาดและสีของภาพบิตแมป ไวยากรณ์สามารถกำหนดเป็น.
display.drawBitmap (X_Position, Y_Position, ชื่อ Array, ความยาวของภาพ, ความกว้างของภาพ);
ความยาวและความกว้างของภาพได้จากสององค์ประกอบแรกของอาร์เรย์ตามลำดับตามที่บอกไว้ก่อนหน้านี้ เมื่อรหัสนี้ถูกเรียกใช้เราจะได้รับบิตแมปที่แสดงบนหน้าจอ LCD ของเราดังที่แสดงด้านล่าง
คุณยังสามารถแสดงข้อความง่ายๆดังที่แสดงด้านล่าง:
หวังว่าคุณเข้าใจกวดวิชาและมีคุณNokia 5110 จอแอลซีดีอกับ Arduino ด้วยการแสดงกราฟิกในแขนเสื้อของคุณคุณสามารถสร้างโปรเจ็กต์มากมายที่ต้องการรายละเอียดกราฟิกเล็กน้อย การทำงานที่สมบูรณ์สามารถพบได้ในวิดีโอด้านล่าง หากคุณประสบปัญหาใด ๆ ในการทำให้สิ่งนี้ใช้งานได้คุณสามารถใช้ฟอรัมเพื่อโพสต์ปัญหาของคุณหรือส่วนความคิดเห็นด้านล่าง