สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
เพื่อน ๆ ที่รักยินดีต้อนรับสู่ Instructable อื่น! ในบทช่วยสอนนี้ เราจะมาดูหน้าจอ LCD ขนาดใหญ่กันก่อน และเราจะสร้างเครื่องตรวจสอบอุณหภูมิและความชื้นด้วยจอแสดงผลนี้
ฉันต้องการค้นหาจอแสดงผลที่คล้ายกับจอแสดงผลที่เครื่องพิมพ์ 3 มิติของฉันใช้อยู่เสมอ เพราะมันใหญ่และราคาไม่แพง ดังนั้นจึงมีประโยชน์มากสำหรับหลายโครงการ หลังจากมองไปรอบๆ ฉันพบว่าจอแสดงผลที่เครื่องพิมพ์ของฉันใช้คือจอแสดงผลนี้ จอแสดงผลขนาดใหญ่ 3.2” พร้อมไดรเวอร์ ST7920 และความละเอียด 128x64 พิกเซล เย็น! อย่างที่คุณเห็นว่ามันใหญ่กว่าจอแสดงผลส่วนใหญ่ที่เราเคยใช้ในโครงการของเรามาก ดังนั้นมันจะมีประโยชน์ในหลายโครงการในอนาคต มีค่าใช้จ่ายเพียงประมาณ $ 6!
ดาวน์โหลดได้ที่นี่ →
เสบียง
- จอ LCD ST7920 →
- Arduino Uno →
- เซ็นเซอร์ DHT22 →
- เขียงหั่นขนม →
- สายไฟ →
ขั้นตอนที่ 1: การเชื่อมต่อกับ Arduino
มาดูวิธีใช้งานกับ Arduino กัน วันนี้ฉันจะใช้ Arduino Uno แต่ใช้งานได้กับบอร์ด Arduino หลายตัว
จอแสดงผลใช้อินเทอร์เฟซ SPI เพื่อสื่อสารกับไมโครคอนโทรลเลอร์ เราจึงต้องเชื่อมต่อกับหมุด SPI ของฮาร์ดแวร์ของบอร์ด Arduino
อย่างที่คุณเห็น จอแสดงผลมีพินมากมายให้เชื่อมต่อ แต่ไม่ต้องกังวล เราไม่จำเป็นต้องเชื่อมต่อพินเหล่านี้ทั้งหมด เพียงแค่ 9 พินเท่านั้น และเพียง 4 พินเท่านั้นกับพินดิจิทัลของบอร์ด Arduino Uno
พินแรกที่ GND ไปที่ Arduino GND พินที่สองซึ่งเป็น Vcc ไปที่เอาต์พุต Arduino 5V พิน RS ไปที่พินดิจิทัล 10 พิน R/W ไปที่พินดิจิทัล 11 พิน E ไปที่พินดิจิทัล 13. พิน PSB ไปที่ GND พิน RST ไปที่พินดิจิทัล 8 BLA ไปที่เอาต์พุต 3.3V ของ Arduino และพิน BLK ไปที่ GND เพียงเท่านี้จอแสดงผลของเราก็พร้อมใช้งานแล้ว!
เราสามารถทำให้ชีวิตของเราง่ายขึ้นได้หากเราเดินสายพิน GND ทั้งหมดของจอแสดงผลเข้าด้วยกัน
ขั้นตอนที่ 2: ไลบรารีสำหรับ Display
ทีนี้มาดูซอฟต์แวร์ที่เราต้องใช้เพื่อขับเคลื่อนจอแสดงผลนี้กัน
ฉันจะใช้ไลบรารี u8g เพื่อขับเคลื่อนจอแสดงผลนี้ ก่อนอื่นมาติดตั้งไลบรารี่กันก่อน เราเปิด Arduino IDE และจากเมนูเราเลือก Sketch → Include Library → Manage Libraries และเราค้นหาไลบรารี U8G2 เราเลือกแล้วกดติดตั้ง! เพียงเท่านี้ ห้องสมุดของเราก็พร้อมใช้งาน
ตอนนี้ ไปที่ไฟล์ → ตัวอย่าง และจากตัวอย่างที่ให้มากับไลบรารี เรามาเรียกใช้ตัวอย่าง GraphicsText เราจำเป็นต้องเปลี่ยนแปลงภาพร่างเพียงครั้งเดียวก่อนที่จะอัปโหลดไปยังบอร์ด เนื่องจากไลบรารี U8G รองรับการแสดงผลจำนวนมาก เราจึงต้องเลือกตัวสร้างที่เหมาะสมสำหรับการแสดงผลของเรา ดังนั้นเราจึงค้นหาโค้ดสำหรับ "ST7920" และจากตัวสร้างที่มีอยู่ เราเลือกใช้ HW_SPI เรายกเลิกหมายเหตุบรรทัดนี้และเราพร้อมที่จะอัปโหลดภาพร่างไปยัง Arduino หลังจากนั้นไม่กี่วินาที ภาพสเก็ตช์ก็เริ่มทำงาน
หากคุณไม่เห็นสิ่งใดที่จอแสดงผล คุณต้องปรับความคมชัดของจอแสดงผลโดยใช้โพเทนชิออมิเตอร์ขนาดเล็กซึ่งอยู่ที่ด้านหลังของจอแสดงผล
ทีนี้มาดูร่างการสาธิตกันสักสองสามวินาที อย่างที่คุณเห็น ภาพร่างตัวอย่างนี้แสดงให้เห็นถึงความสามารถของไลบรารีและการแสดงผล เราสามารถบรรลุแอนิเมชั่นเจ๋ง ๆ ด้วยจอแสดงผลนี้ มันค่อนข้างจะมีความสามารถ นั่นเป็นเหตุผลที่มันถูกใช้ในเครื่องพิมพ์ 3 มิติจำนวนมาก
ขั้นตอนที่ 3: มาสร้างสถานีตรวจอากาศกันเถอะ
มาสร้างสิ่งที่มีประโยชน์กันเถอะ มาเชื่อมต่อเซ็นเซอร์อุณหภูมิและความชื้น DHT22 กับ Arduino เราต้องการพลังงานและสายสัญญาณเท่านั้นซึ่งฉันเชื่อมต่อกับพินดิจิทัล 7 เพื่อให้ง่ายขึ้น ฉันยังใช้เขียงหั่นขนมขนาดเล็ก คุณสามารถค้นหาแผนผังไดอะแกรมที่แนบมาที่นี่
อย่างที่คุณเห็นโปรเจ็กต์ทำงานได้ดีและแสดงอุณหภูมิและความชื้นแบบเรียลไทม์
ตอนนี้เรามาดูโค้ดของโครงการกัน ด้วยโค้ดเพียง 60 บรรทัด เราสามารถสร้างโครงการแบบนี้ได้! เจ๋งแค่ไหน! สิ่งที่เราต้องทำเพื่อใช้จอแสดงผลคือใช้ตัวสร้างนี้:
U8G2_ST7920_128X64_1_HW_SPI u8g2(U8G2_R0, /* CS=*/ 10, /* รีเซ็ต=*/8);
เริ่มต้นการแสดงผลในฟังก์ชันการตั้งค่า:
u8g2.begin(); u8g2.enableUTF8Print(); u8g2.setFont(u8g2_font_helvB10_tf); u8g2.setColorIndex(1);
จากนั้นสิ่งที่เราทำคือวาดเฟรมและสตริงสำหรับอุณหภูมิและความชื้น:
u8g2.drawFrame(0, 0, 128, 31);
u8g2.drawFrame(0, 33, 128, 31); u8g2.drawStr(15, 13, "อุณหภูมิ");
สุดท้ายที่เราต้องทำคืออ่านอุณหภูมิและความชื้นจากเซ็นเซอร์และแสดงค่าที่อ่านบนหน้าจอด้วย
เป็นโมฆะ readTemperature ()
{ float t = dht.readTemperature(); dtostrf(t, 3, 1, อุณหภูมิ); }
คุณจะพบรหัสของโครงการที่แนบมานี้เช่นเคย
ขั้นตอนที่ 4: ความคิดสุดท้าย
ในความคิดสุดท้าย ฉันคิดว่าจอแสดงผลนี้มีประโยชน์มากในโครงการที่เราต้องการจอแสดงผลขนาดใหญ่และเราไม่ต้องการสี มีราคาไม่แพงและใช้งานง่าย ฉันคิดว่าฉันจะใช้มันในบางโครงการในอนาคต
ฉันชอบที่จะทราบความคิดเห็นของคุณเกี่ยวกับการแสดงผลนี้ คุณคิดว่าแอปพลิเคชันประเภทใดที่พวกเขาจะได้รับประโยชน์จากจอแสดงผลแบบนี้ ขอบคุณสำหรับความคิดของคุณและสำหรับการอ่านคำแนะนำนี้ ฉันจะพบคุณในครั้งต่อไป!