วิธีเชื่อมต่อจอแสดงผล OLED I2C กับ ARDUINO

Pin
Send
Share
Send

บทนำ: แนะนำการแสดงผล OLED I2C 128 * 64/128 * 32

สวัสดี! ในฐานะมือสมัครเล่นผู้ที่ชื่นชอบเครื่องใช้ไฟฟ้าฉันมั่นใจว่าสิ่งที่เราทำคือของเล่นอิเล็กทรอนิกส์ผลิตภัณฑ์โฮมเมดหรือโครงการขนาดใหญ่ทั้งหมดมาจากความอยากรู้อยากเห็นและความเกียจคร้าน ความอยากรู้อยากเห็นพยายามที่จะเข้าใจและเข้าใจถึงความยิ่งใหญ่ที่ไม่รู้จักที่จะเข้าใจวิธีการทำงานที่นั่นสิ่งที่มันทำอย่างไรมันเคลื่อนไหวอย่างไร และความเกียจคร้านประดิษฐ์เพื่อที่จะเกิดขึ้นกับสิ่งนี้เพื่อไม่ให้ลุกขึ้นไม่พอดีไม่ยกไม่สกปรกหรืออะไรที่สำคัญ
เนื่องจากการดูข้อมูลนั้นดีกว่าการทำความเข้าใจสิ่งที่กำลังจะเกิดขึ้นบนอุปกรณ์ของเราหรือเกิดขึ้นแล้วหรือกำลังเกิดขึ้นเราจะต้องการได้รับข้อมูลที่มีประโยชน์มากจากไมโครคอนโทรลเลอร์เซ็นเซอร์หรืออุปกรณ์อื่น ๆ ของเรา และฉันต้องการรับข้อความใด ๆ เช่นคำถามคำเตือนการเตือนอีโมติคอนเครื่องหมายดอกจันหัวใจและอื่น ๆ
สำหรับผู้ที่มีความปรารถนาคล้ายกันนี่คือคำแนะนำโดยย่อเกี่ยวกับการเชื่อมต่อและตรวจสอบจอแสดงผล OLED ขนาดเล็กและราคาไม่แพง
ต่อไปเราจะพูดถึงหนึ่งในวงกว้างสำหรับรุ่นแฮมเรดิโอของจอแสดงผล OLED ที่ควบคุมโดยชิป SSD1306 ด้วยขนาดหน้าจอ 0.96 นิ้วและความละเอียด 128 * 64 หรือ 128 * 32 พิกเซล จอแสดงผลเหล่านี้เหมาะสำหรับการออกแบบวิทยุสมัครเล่นขนาดเล็กและผลิตภัณฑ์โฮมเมด

ขั้นตอนที่ 1: แนวคิดหลัก


เราจะเชื่อมต่อกับ Arduino UNO / NANO ด้วยและเพื่อเขียนโปรแกรมตามลำดับเราจะเชื่อมต่อผ่าน Arduino
  • OLED เป็นไดโอดเปล่งแสงอินทรีย์คืออุปกรณ์กึ่งตัวนำที่ทำจากสารประกอบอินทรีย์ซึ่งเริ่มเปล่งแสงเมื่อกระแสไฟฟ้าไหลผ่าน
  • ARDUINO เป็นแพลตฟอร์มสำหรับการฝึกอบรมและการสร้างระบบอัตโนมัติและระบบหุ่นยนต์
  • ArduinoIDE เป็นสภาพแวดล้อมการพัฒนา นี่เป็นเครื่องมือเขียนโปรแกรม Arduino ฟรี
  • I2C - วงจรรวมระหว่างสายการสื่อสารระหว่างไมโคร
  • ร่างมันเป็นรหัสมันเป็นโปรแกรม - คำศัพท์ Arduino

ทำตามคำแนะนำเพื่อทำความเข้าใจวิธีการเชื่อมต่อและกำหนดค่าจอแสดงผล OLED กับ Arduino อย่างถูกต้องและวิธีแสดงข้อความของคุณเองบนหน้าจอ
เราทำทุกอย่างในขั้นตอน

ขั้นตอนที่ 2: อุปกรณ์เสริม


เราต้องการเพียงสี่สิ่ง:
  • 1. จอแสดงผล OLED เองคือ 0.96” (สามารถซื้อได้ใน Aliexpress หรือ Ebay - ยาว แต่ราคาถูก!)
  • 2. Arduino UNO / Nano (ในตำแหน่งเดียวกับจอแสดงผล)
  • 3. การเชื่อมต่อสายไฟ (ibid.)
  • 4. คอมพิวเตอร์หรือแล็ปท็อปที่ติดตั้ง ArduinoIDE

โดยทั่วไปการซื้อชิ้นส่วนสำหรับโครงการต่าง ๆ ใน Aliexpress และ Ebay เป็นสิ่งที่ยอดเยี่ยมมากในขณะที่คุณกำลังทำโครงการหนึ่งชิ้นส่วนสำหรับโครงการอื่นกำลังมาถึงแล้ว สิ่งสำคัญคืออย่าลืมสั่งซื้อ

ขั้นตอนที่ 3: เชื่อมต่อจอแสดงผล


จอแสดงผลถูกควบคุมโดยชิป SSD1306 ซึ่งรองรับโปรโตคอลการสื่อสารห้าโปรโตคอลและหนึ่งในนั้นคือ I2C ข้อมูลในโพรโทคอลนี้ส่งผ่านสายไฟเพียงสองเส้นและยิ่งใช้สายน้อยกว่าก็ยิ่งดีดังนั้นมันจึงเหมาะกับเรามาก แต่! มีโมดูลที่มีโปรโตคอล SPI และแม้กระทั่งการสลับโปรโตคอลดังนั้นโปรดระมัดระวังเมื่อซื้อโมดูลนี้

ข้อสรุปที่ใช้:
จอแสดงผล OLED - SCL / SCK (นาฬิกา) และ SDA (ข้อมูล), กำลัง "Plus" (VCC) และกำลังไฟ "Minus" (GND)

ข้อสรุปที่ใช้:
Arduino UNO - SCL / SCK บน A5 และ SSD บน A4, กำลังไฟ "Plus" (+ 5V) และกำลังไฟ "Minus" (GND)
เชื่อมต่อจอแสดงผลกับ Arduino:
  • Vcc - 5V
  • GND - GND
  • 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:
//github.com/adafruit/Adafruit-GFX-Library
//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 ในเท็กซ์เอดิเตอร์และค้นหาบรรทัด:
// # define SSD1306_128_64 #define SSD1306_128_32 // #define SSD1306_96_16

ยกเลิกหมายเหตุบรรทัด:
#define SSD1306_128_64

มันควรจะเป็นแบบนี้:
#define SSD1306_128_64 // # define SSD1306_128_32 // #define SSD1306_96_16

หากข้อผิดพลาดเป็นอีกครั้งมีความจำเป็นต้องตรวจสอบการเชื่อมต่อที่ถูกต้อง
หลังจากการดาวน์โหลดเสร็จสมบูรณ์คุณจะเห็นภาพเคลื่อนไหวทดสอบบนหน้าจอซึ่งหมายความว่าคุณได้กำหนดค่าจอแสดงผล OLED ของคุณเรียบร้อยแล้ว

เมื่อคุณเพลิดเพลินกับภาพเคลื่อนไหวนี้คุณสามารถไปยังขั้นตอนถัดไปได้

ขั้นตอนที่ 7: เขียนข้อความของคุณเอง


หากต้องการเขียนข้อความของคุณเองก่อนอื่นให้สร้างร่างใหม่ในสภาพแวดล้อมการเขียนโปรแกรม ArduinoIDE
ในส่วนหัวเราเชื่อมต่อ 4 ไลบรารี:
#include #include #include #include 

จากนั้นเราเขียนโปรโตคอลรีเซ็ต:
#define 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 ();

ในตอนท้ายอย่าลืมที่จะเขียน display.displayเพื่อให้ภาพปรากฏบนหน้าจอมิฉะนั้นคุณจะได้รับเป็นโมฆะ
หากคุณทำทุกอย่างถูกต้องจะมีข้อความปรากฏบนจอแสดงผล

นี่คือ CODE Starting_with_Arduino_OLED.ino ของโปรแกรมของเรา:
code.zip 946 b (ดาวน์โหลด: 1366)

Pin
Send
Share
Send