สวัสดี! ในฐานะผู้ชื่นชอบอุปกรณ์อิเล็กทรอนิกส์มือสมัครเล่น ฉันแน่ใจว่าทุกสิ่งที่เราทำ ไม่ว่าจะเป็นของเล่นอิเล็กทรอนิกส์ ผลิตภัณฑ์โฮมเมด หรือโครงการขนาดใหญ่ ล้วนเกิดจากความอยากรู้อยากเห็นและความเกียจคร้าน ความอยากรู้อยากเห็นมุ่งมั่นที่จะเข้าใจและเข้าใจสิ่งกว้างใหญ่ที่ไม่รู้จัก เพื่อดูว่ามันทำงานอย่างไร ทำอะไร และเคลื่อนไหวอย่างไร และความเกียจคร้านก็เกิดเรื่องขึ้นไม่ลุกไม่เข้าใกล้ไม่ยกไม่เลอะเทอะหรือสำคัญอย่างอื่น
เนื่องจากการดูข้อมูลดีกว่าการรู้ว่าจะเกิดอะไรขึ้นในอุปกรณ์ของเรา หรือเกิดขึ้นแล้ว หรือกำลังเกิดขึ้น เราจึงต้องการรับข้อมูลที่เป็นประโยชน์ที่สุดนี้จากไมโครคอนโทรลเลอร์ เซ็นเซอร์ หรืออุปกรณ์อื่นๆ ของเราอย่างแน่นอน และไม่ว่าในกรณีใด ฉันต้องการรับข้อความใด ๆ เช่น คำถาม คำเตือน คำเตือน อีโมติคอน ดาว หัวใจ เป็นต้น
สำหรับผู้ที่มีความต้องการคล้ายกัน ต่อไปนี้เป็นคำแนะนำสั้นๆ สำหรับการเชื่อมต่อและทดสอบจอแสดงผล OLED ขนาดเล็กและราคาไม่แพง
ต่อไปเราจะพูดถึงหนึ่งในจอแสดงผล OLED รุ่นหนึ่งที่มีจำหน่ายกันอย่างแพร่หลายสำหรับนักวิทยุสมัครเล่นซึ่งควบคุมโดยชิป SSD1306 โดยมีขนาดหน้าจอ 0.96 นิ้วและความละเอียด 128 * 64 หรือ 128 * 32 พิกเซล จอแสดงผลเหล่านี้เหมาะอย่างยิ่งสำหรับการออกแบบวิทยุสมัครเล่นขนาดเล็กและโครงการโฮมเมด
ขั้นตอนที่ 1: แนวคิดพื้นฐาน
เราจะเชื่อมต่อกับ Arduino UNO / NANO และเราจะตั้งโปรแกรมผ่าน Arduino ด้วย
- OLED เป็นไดโอดเปล่งแสงอินทรีย์ กล่าวคือ อุปกรณ์เซมิคอนดักเตอร์ที่ทำจากสารประกอบอินทรีย์ที่จะเริ่มเปล่งแสงเมื่อมีกระแสไฟฟ้าไหลผ่าน
- ARDUINO เป็นแพลตฟอร์มสำหรับการฝึกอบรมและการสร้างระบบอัตโนมัติและหุ่นยนต์
- ArduinoIDE - สภาพแวดล้อมการพัฒนา นี่คือโปรแกรมเขียนโปรแกรม Arduino ฟรี
- I2C - วงจรรวมระหว่างสายการสื่อสารระหว่างชิป
- Sketch หรือที่รู้จักในชื่อโค้ด หรือที่รู้จักกันในชื่อโปรแกรม - คำศัพท์เฉพาะของ Arduino
ทำตามคำแนะนำเพื่อทำความเข้าใจวิธีเชื่อมต่อและกำหนดค่าจอแสดงผล OLED กับ Arduino อย่างถูกต้อง และวิธีแสดงข้อความที่กำหนดเองบนจอแสดงผล
เราทำทุกอย่างทีละขั้นตอน
ขั้นตอนที่ 2: อุปกรณ์เสริม
เราต้องการเพียงสี่สิ่งเท่านั้น:
- 1. ตัวจอแสดงผล OLED นั้นมีขนาด 0.96” (คุณสามารถซื้อได้ใน Aliexpress หรือ Ebay มันยาว แต่ราคาถูก!)
- 2. Arduino UNO / Nano (ที่เดียวกับจอแสดงผล)
- 3. การเชื่อมต่อสายไฟ (ibid.)
- 4. คอมพิวเตอร์หรือแล็ปท็อปที่ติดตั้ง ArduinoIDE
โดยทั่วไปแล้ว การซื้อชิ้นส่วนสำหรับโครงการต่างๆ ใน Aliexpress และ Ebay เป็นสิ่งที่ดีมาก ในขณะที่คุณกำลังทำงานในโครงการหนึ่ง ชิ้นส่วนสำหรับอีกโครงการหนึ่งกำลังมาถึงแล้ว สิ่งสำคัญคืออย่าลืมสั่งซื้อ
ขั้นตอนที่ 3: การเชื่อมต่อจอแสดงผล
จอแสดงผลควบคุมโดยชิป SSD1306 ซึ่งรองรับโปรโตคอลการสื่อสาร 5 โปรโตคอล หนึ่งในนั้นคือ I2C ข้อมูลที่ใช้โปรโตคอลนี้จะถูกส่งผ่านสายเพียงสองสายและยิ่งมีสายน้อยกว่าในกรณีนี้ก็ยิ่งดีเท่านั้น ดังนั้นจึงค่อนข้างเหมาะกับเราแต่! มีโมดูลหลายโมดูลที่มีโปรโตคอล SPI และถึงแม้จะมีการสลับโปรโตคอล ดังนั้นควรระมัดระวังเมื่อซื้อโมดูลนี้
พินที่ใช้:
จอแสดงผล OLED - SCL/SCK (นาฬิกา) และ SDA (ข้อมูล), กำลัง "บวก" (VCC) และกำลัง "ลบ" (GND)
พินที่ใช้:
Arduino UNO - SCL/SCK บน A5 และ SSD บน A4, กำลังไฟ "บวก" (+5V) และพลังงาน "ลบ" (GND)
การเชื่อมต่อจอแสดงผลกับ Arduino:
- วีซีซี - 5V
- จีเอ็นดี - จีเอ็นดี
- SDA-A4
- SCL-A5
ขั้นตอนที่ 4: เครื่องสแกน I2C
อุปกรณ์แต่ละตัวบนบัส I2C มีที่อยู่เลขฐานสิบหกซึ่งไม่สามารถเปลี่ยนแปลงได้เป็นแบบมีสาย ผู้ผลิตที่รับผิดชอบทุกรายจะต้องระบุไว้ที่ใดที่หนึ่งในกรณีหรือตามคำแนะนำ มีโมดูลที่มีสวิตช์และจัมเปอร์ที่สามารถใช้เพื่อเปลี่ยนที่อยู่ได้ แต่... หากอุปกรณ์มีราคาถูกจนน่าอับอาย ผู้ผลิตก็อาจไม่ต้องกังวลกับรายละเอียดเล็กๆ น้อยๆ ดังกล่าว ดังนั้นคุณจะต้อง กำหนดมันเอง
โดยรวมแล้วสามารถใช้ที่อยู่ได้มากถึง 127 ที่อยู่บนบัส - 119 สำหรับอุปกรณ์และที่อยู่บริการ 8 แห่ง การสื่อสารดำเนินการตามที่อยู่เหล่านี้ มีตัวหลักหรือที่รู้จักว่าอาจารย์และมีทาสหรือที่รู้จักในชื่อทาส - อาจารย์ถาม ทาสตอบ ทุกอย่างเรียบง่าย
เนื่องจากจอแสดงผล OLED ของเราใช้โปรโตคอลการสื่อสาร I2C และอาจไม่ได้ระบุที่อยู่ เราจึงพยายามค้นหาที่อยู่นี้ด้วยตนเอง
คุณสามารถทำได้โดยการอัปโหลดภาพร่างสั้นๆ ไปยังบอร์ด Arduino ของคุณโดยที่มี OLED เชื่อมต่ออยู่ แต่!
อย่าเพิ่งรีบอัพโหลดภาพร่างไปยัง Arduino ทันที! ก่อนอื่นมาดาวน์โหลด "ไดรเวอร์" ก่อนเช่น มาเชื่อมต่อไลบรารีกัน และในการดำเนินการนี้ เราจะไปที่ "ขั้นตอนที่ 5" ทันที จากนั้นกลับมาและดำเนินการต่อ
ขั้นตอนที่ 4: ดำเนินการต่อ:
ดาวน์โหลด CODE Finder_I2C_Hex_Address.ino อัปโหลดไปยัง Arduino
เปิด "Port Monitor" ตั้งค่าความเร็วเป็น 9600 และหากทุกอย่างเชื่อมต่ออย่างถูกต้อง โปรแกรมจะแสดงที่อยู่อุปกรณ์ ในกรณีของฉัน OLED พร้อมที่อยู่ 0x3F
ขั้นตอนที่ 5: ดาวน์โหลดและเชื่อมต่อไลบรารี
เพื่อให้ทุกอย่างทำงานได้อย่างถูกต้องและคุณไม่จำเป็นต้องสร้างวงล้อขึ้นมาใหม่ คุณต้องเชื่อมต่อไลบรารีสองสามตัวเข้ากับสภาพแวดล้อม ArduinoIDE ได้แก่ ADAFRUIT GFX และ ADAFRUIT SSD1306 ซึ่งจำเป็นสำหรับ Arduino เพื่อให้สามารถสื่อสารได้อย่างอิสระ ด้วยจอแสดงผลแบบ OLED
คุณสามารถรวมไลบรารีเหล่านี้ได้โดยทำตามขั้นตอนเหล่านี้
- 1. ใน ArduinoIDE ไปที่เมนู Sketch
- 2. เลือก “รวมไลบรารี”
- 3.เลือก “จัดการห้องสมุด”
- 4. ค้นหา ADAFRUIT GFX และติดตั้ง
- 5. ค้นหา ADAFRUIT SSD1306 และติดตั้ง
ด้วยไลบรารีเวอร์ชันล่าสุด จอแสดงผลของฉันทำงานคดแน่นอน นี่อาจเป็นเพราะความโค้งของมือ แต่หลังจากที่ฉันติดตั้งเวอร์ชันแรกของไลบรารีเหล่านี้ ทุกอย่างเริ่มดูราบรื่นและสวยงาม ด้วยเหตุผลบางประการ บรรทัดของพุชกินอยู่ในใจ:
...และประสบการณ์ บุตรแห่งความผิดพลาดอันยากลำบาก
และอัจฉริยะ เพื่อนของความขัดแย้ง
อีกวิธีหนึ่งในการติดตั้งไลบรารีคือการค้นหา ดาวน์โหลด และติดตั้งไลบรารีเหล่านี้ด้วยตนเอง
สำหรับตัวอย่าง Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
เหล่านี้เป็นไลบรารี Adafruit เดียวกัน แต่สามารถค้นหาไลบรารีที่คล้ายกันในเครื่องมือค้นหาได้อย่างง่ายดาย ตามคำขอของ OLED I2C ผู้สนใจจำนวนมากเขียนห้องสมุด “เพื่อตนเอง” แล้วโพสต์บนเว็บ ห้องสมุดที่จะใช้นั้นขึ้นอยู่กับคุณ
เพื่อให้จอแสดงผลแสดงตัวอักษรรัสเซียได้ จำเป็นต้องมีห้องสมุดพิเศษด้วย แต่นี่เป็นหัวข้อแยกต่างหากสำหรับบทความแยกต่างหาก
หลังจากติดตั้งไลบรารีแล้ว คุณสามารถกลับไปที่ขั้นตอนที่ 4 และค้นหาที่อยู่เลขฐานสิบหกของจอแสดงผลของคุณได้ในที่สุด
ขั้นตอนที่ 6: การทดสอบการแสดงผล
หากต้องการตรวจสอบว่าทุกอย่างทำงานได้ตามที่คาดไว้หรือไม่ ให้รันตัวอย่างการทดสอบจาก ArduinoIDE
สำหรับสิ่งนี้:
ไปที่ ไฟล์ > ตัวอย่าง > SSD 1306 > เลือก 128x64 i2c
หากคุณได้รับ "ข้อผิดพลาด" ให้ลองเลือก SSD 1306 > 128x32 i2c
หาก "ข้อผิดพลาด" เกิดขึ้นอีกครั้ง ให้ลองเปลี่ยนที่อยู่ I2C ในบรรทัด 61 ของโค้ดสาธิต และแทนที่ด้วยที่อยู่ของจอแสดงผลที่คุณกำหนดไว้ในขั้นตอนที่ #4
หากเกิดข้อผิดพลาดอีกครั้ง คุณสามารถลองแก้ไขไฟล์ Adafruit_SSD1306.h ได้ ซึ่งอยู่ในโฟลเดอร์ไลบรารี Arduino
เปิดไฟล์ Adafruit_SSD1306.h ในโปรแกรมแก้ไขข้อความและค้นหาบรรทัด:
//#กำหนด SSD1306_128_64
#กำหนด SSD1306_128_32
// #define SSD1306_96_16
ยกเลิกการแสดงความคิดเห็นบรรทัด:
#กำหนด SSD1306_128_64.
มันควรมีลักษณะเช่นนี้:
#กำหนด SSD1306_128_64
//#กำหนด SSD1306_128_32
// #define SSD1306_96_16
หากเกิดข้อผิดพลาดอีกครั้ง คุณต้องตรวจสอบการเชื่อมต่อที่ถูกต้อง
เมื่อการดาวน์โหลดเสร็จสิ้น คุณจะเห็นภาพเคลื่อนไหวทดสอบบนหน้าจอ ซึ่งหมายความว่าคุณได้ตั้งค่าจอแสดงผล OLED เรียบร้อยแล้ว
เมื่อคุณเพลิดเพลินกับแอนิเมชั่นนี้อย่างทั่วถึงแล้ว คุณสามารถไปยังขั้นตอนถัดไปได้
ขั้นตอนที่ 7: เขียนข้อความของคุณเอง
หากต้องการเขียนข้อความของคุณเอง ขั้นแรกให้สร้างสเก็ตช์ใหม่ในสภาพแวดล้อมการเขียนโปรแกรม ArduinoIDE
ในส่วนหัวเรามี 4 ไลบรารี:
#รวม <SPI.h>
#รวม <Wire.h>
#รวม <Adafruit_GFX.h>
#รวม <Adafruit_SSD1306.h>
จากนั้นเราเขียนโปรโตคอลการรีเซ็ต:
#กำหนด OLED_RESET 4
จอแสดงผล Adafruit_SSD1306(OLED_RESET);
ใน VOID SETUP เราระบุที่อยู่เลขฐานสิบหกของจอแสดงผล 0x3C ซึ่งเราได้เรียนรู้ใน "ขั้นตอนที่ 4"
จากนั้นเราเริ่มต้นการแสดงผลและล้างข้อมูล:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
ต่อไป ใน VOID LOOP เราเขียนโค้ดหลัก นั่นคือข้อความของเราที่เราต้องการแสดงบนจอแสดงผล
เมื่อต้องการทำเช่นนี้ เราจะอธิบายขนาดข้อความ สีข้อความ ตำแหน่งเคอร์เซอร์ และสุดท้ายคือแสดงข้อความโดยใช้คำสั่ง println:
display.setTextSize(2);
display.setTextColor(สีขาว);
display.setCursor(0,0);
display.println("ทำได้ดีมาก!");
display.display();
ในตอนท้ายอย่าลืมเขียน จอแสดงผล.จอแสดงผลเพื่อให้ภาพนั้นปรากฏบนหน้าจอ มิฉะนั้น จะเกิดความว่างเปล่า
หากคุณทำทุกอย่างถูกต้อง ข้อความจะปรากฏขึ้นบนจอแสดงผล
นี่คือรหัส Starting_with_Arduino_OLED.ino ของโปรแกรมของเรา:
รหัส.zip
[946 ข] (ดาวน์โหลด: 4908)