โครงการ TUTORIALS | หลักสูตร ชุด
Arduino 8 × 8 LED Matrix
ในโครงการนี้เราจะเรียนรู้เกี่ยวกับการแสดงผล LED Matrix และสองโครงการที่แตกต่างกันเมื่อ Arduino 8 × 8 LED Matrix Interface โครงการแรกจะเป็นอินเทอร์เฟซที่เรียบง่ายระหว่าง Arduino และ 8X8 LED Matrix เพื่อแสดงข้อมูล (แม้จะมีการเลื่อนข้อมูลและรูปภาพ) โครงการที่สองจะเป็นโครงการขั้นสูงที่ควบคุม LED Matrix 8x8 โดยใช้อุปกรณ์แอนดรอยด์
LED matrix เป็น LED สองมิติที่สามารถใช้แสดงสัญลักษณ์ตัวอักษรหรือแม้แต่ภาพ ขึ้นอยู่กับการวางแนวของ LEDs ในเมทริกซ์สามารถมีได้สองแบบของ LED matrices พวกเขาเป็น Anode แถวสามัญและ Cathode แถวสามัญ
โครงการ 1: อินเทอร์เฟซ Matrix แบบ LED Arduino แบบง่าย
แผนภูมิวงจรรวม
องค์ประกอบที่จำเป็น
- บอร์ด Arduino Uno
- LED Matrix - 8 x 8 LED จุดเมทริกซ์
- IC1 - MAX 7219
- R1 - 10 KΩ
- C1 - 0.1 μF
- C2 - 10 μF
คำอธิบายคอมโพเนนต์
Arduino Uno
โครงการนี้ตั้งอยู่บนกระดานไมโครคอนโทรลเลอร์ Arduino Uno จาก 14 ขาเข้าและขาออกแบบดิจิทัลที่มีอยู่บน Arduino Uno เราต้องมีเพียง 3 หมุดที่จะใช้งานโครงการนี้
หนึ่งพินให้สัญญาณนาฬิกากับ IC ไดรเวอร์จอแสดงผล LED (MAX 7219) ในขณะที่ขาอื่นใช้เพื่อส่งข้อมูลอนุกรมไปยัง IC เพื่อแสดงบนเมตริกซ์ LEDหมุดที่สอดคล้องกันจะต้องได้รับการกล่าวถึงอย่างเหมาะสมในโปรแกรม
LED Matrix
มีการใช้จอแสดงผล LED LED 8 x 8 ในโครงการนี้เพื่อแสดงข้อมูล เมทริกซ์ LED มีให้เลือกหลายแบบเช่นเดียวสีสองสีหลายสีหรือ RGB LED matrix
นอกจากนี้ยังมีในมิติต่างๆเช่น 5 x 7, 8 x 8, 16 x 16, 32 x 32 เป็นต้นทั้งนี้ขึ้นอยู่กับการจัดเรียง LED ในเมทริกซ์ LED matrix สามารถเป็นได้ทั้งแบบขั้วบวกทั่วไปหรือแคโทดแถวทั่วไป
ในกรณีที่มีขั้วบวกชนิดแอ็ตทริบิวเรย์ทั่วไป LED เมทริกซ์ให้ป้อนแหล่งกระแสไฟฟ้า (แรงดันสูงหรือบวก) ไปที่แถว AD และอ่างรับกระแสไฟฟ้า (แรงดันต่ำหรือขั้วลบหรือพื้น) ให้กับคอลัมน์ 1-4
ในกรณีที่มีประเภทของแคโทดแบบแถว ๆ LED แหล่งกำเนิดกระแส (แรงดันสูงหรือบวก) จะถูกกำหนดให้กับคอลัมน์ 1-4 และมีอ่างรับกระแสไฟฟ้า (แรงดันต่ำหรือขั้วลบหรือพื้น) ให้กับแถว AD
เมทริกซ์ LED ที่ใช้ในโครงการนี้เป็นชนิดแคโทดแถวที่พบโดยทั่วไป LED เมทริกซ์ ในขณะที่กำลังพัฒนาโครงการต้องรู้จักชนิดของเมทริกซ์ LED และต้องเขียนโปรแกรมให้สอดคล้องกัน
IC MAX 7219
เมทริกซ์ LED สามารถขับเคลื่อนได้สองวิธี มีการขนาน (แถวหรือคอลัมน์จะถูกส่งไปพร้อมกับข้อมูลแบบขนาน) และแบบอนุกรม (ซึ่งข้อมูลจะถูกส่งเป็นชุดและ IC จะใช้ในการแปลงข้อมูลอนุกรมนี้เป็นข้อมูลแบบขนาน)
MAX 7219 เป็นไดร์เวอร์แสดงแคโทดทั่วไปที่มีอินพุตแบบอนาล็อกและเอาต์พุตแบบขนาน ใช้สำหรับเชื่อมต่อไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์กับ 64 LEDs แต่ละตัว (8 x 8 LED เมทริกซ์ตัวอย่างเช่นมี 64 LEDs), 7 ส่วน LED แสดงผลได้ถึง 8 หลักหรือแสดงกราฟแท่ง
เมทริกซ์ LED 8 x 8 เชื่อมต่อกับ MAX 7219 ตามที่แสดงในแผนภาพวงจรและรับข้อมูลจากบอร์ด Arduino ไปยัง MAX 7219
บันทึก:
มีโมดูลเมทริกซ์ LED MAX 7219 และ 8 x 8 สายที่พร้อมใช้งานในท้องตลาดสามารถใช้เพื่อความสะดวก
การทำงาน
จุดประสงค์ของโครงการคือการเชื่อมต่อบอร์ด Arduino Uno กับเมทริกซ์ LED 8 x 8 เพื่อแสดงข้อมูล
แม้ว่าจะใช้เมทริกซ์ LED ขนาด 8 x 8 x MAX 7219 IC ที่สอดคล้องกันในโครงการนี้เมทริกซ์ LED หลายตัวสามารถเชื่อมต่อเป็นชุดได้สำหรับการเลื่อนแบบยาว เชื่อมต่ออุปกรณ์ต่างๆตามที่แสดงในแผนภาพวงจร การทำงานของระบบมีดังนี้
3 จาก 14 ขาเข้า / ขาออกดิจิตอลที่มีให้ใช้ในการควบคุม IC MAX 7219 ไดรเวอร์จอแสดงผล 3 หมุดบน MAX7219 IC คือนาฬิกาข้อมูลและโหลด (หรือ cs ในกรณีของ MAX 7221 IC)สามารถใช้ความถี่นาฬิกาได้สูงสุด 10MHz DIN (Data in) ยอมรับข้อมูลอนุกรมจากไมโครคอนโทรลเลอร์หรือบอร์ด Arduino
มีความยาว 16 บิตโดยที่ 8 บิตแรก (D0 - D7) ใช้สำหรับขับเคลื่อนคอลัมน์ (SEG AG และ DP ของ MAX 7219 IC) ของ LED matrix และ 8 บิตถัดไป (D8 - D15) สำหรับการขับ DIG 0-7 จาก MAX 7219 IC) แถวของเมทริกซ์ LED
พินโหลด (หรือ CS หรือชิปเลือกพินในกรณีของ Max 7221 IC) จะยึดข้อมูลอินพุตแบบอนุกรมบนขอบที่เพิ่มขึ้น
ขาที่สำคัญอื่น ๆ ของ MAX 7219 คือ ISET ซึ่งจะกำหนดค่าสูงสุดในปัจจุบันให้กับกลุ่มเพื่อขับเคลื่อนไดรฟ์ทั้งหมดเชื่อมต่อผ่านตัวต้านทาน (R1) ซึ่งเรียกว่า RSET ตัวเก็บประจุจะกรองเสียงรบกวนในแหล่งจ่ายไฟ
เมื่อข้อมูลอนุกรมในถูกส่งโดยใช้ Arduino (ผ่านโปรแกรม) ข้อมูลอนุกรมจะถูกแปลงเป็นส่วนและตัวเลขเพื่อขับเคลื่อนคอลัมน์และแถวของเมตริกซ์ LED ตามข้อมูลที่ส่งไฟ LED ที่สัมพันธ์กันบนเมทริกซ์จะสว่างขึ้นและแสดงข้อความ
โปรแกรมที่เขียนขึ้นที่นี่ใช้สำหรับการเลื่อนหน้าจอข้อความ อาจดูข้อมูลการเลื่อนยาวบนเมตริกซ์ LED ขนาด 8 x 8 อันอาจเป็นเรื่องยาก ดังนั้นการฝึกอบรม LED หลายสามารถล่ามโซ่เพื่อสร้างเมทริกซ์ยาว
หมายเลข ของ MAX 7219 ICs มีค่าเท่ากับเลขที่ การฝึกซ้อม LED 8 x 8เพื่อขยายการแสดงผลไปยังเมทริกซ์ LED หลายตัวขาข้อมูล OUT (DOUT) ของ MAX 7219 แรกต้องเชื่อมต่อกับขาข้อมูล IN (DIN) ของ MAX 7219 IC ที่สอง ขั้นตอนนี้ต้องดำเนินการต่อเนื่องสำหรับการฝึกซ้อม LED หลาย ๆ
(การวางตำแหน่งของ LED Matrix ในห่วงโซ่เป็นสิ่งสำคัญเมทริกซ์ LED ตัวแรกจะต้องอยู่ทางด้านขวาของห่วงโซ่)
รหัส
#include <LedControl.h> | |
int DIN = 13; | |
int CS = 12; | |
int CLK = 11; | |
ไบต์ E [8] = {0x3C, 0x20,0x20,0x3C, 0x20,0x20,0x20,0x3C}; | |
ไบต์ L [8] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3E}; | |
ไบต์ C [8] = {0x1C, 0x20,0x20,0x20,0x20,0x20,0x20,0x1C}; | |
ไบต์ T [8] = {0x7C, 0x10,0x10,0x10,0x10,0x10,0x10,0x10}; | |
ไบต์ R [8] = {0x38,0x24,0x24,0x28,0x30,0x28,0x24,0x24}; | |
ไบต์ O [8] = {0x1C, 0x22,0x22,0x22,0x22,0x22,0x22,0x1C}; | |
ไบต์ N [8] = {0x42,0x62,0x52,0x52,0x4A, 0x46,0x46,0x42}; | |
ไบต์ I [8] = {0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x38}; | |
ไบต์ S [8] = {0x1C, 0x20,0x20,0x10,0x08,0x04,0x04,0x38}; | |
ไบต์ H [8] = {0x22,0x22,0x22,0x3E, 0x22,0x22,0x22,0x22}; | |
ไบต์ U [8] = {0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1C,}; | |
ไบต์ B [8] = {0x38,0x24,0x24,0x38,0x38,0x24,0x24,0x38}; | |
ไบต์รอยยิ้ม [8] = {0x3C, 0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C}; | |
ไบต์ที่เป็นกลาง [8] = {0x3C, 0x42,0xA5,0x81,0xBD, 0x81,0x42,0x3C}; | |
ไบต์ขมวดคิ้ว [8] = {0x3C, 0x42,0xA5,0x81,0x99,0xA5,0x42,0x3C}; | |
LedControl lc = LedControl (DIN, CLK, CS, 1); | |
การตั้งค่าเป็นโมฆะ () { | |
lc.shutdown (0 เท็จ); | |
lc.setIntensity (0,5); | |
lc.clearDisplay (0); | |
} | |
void loop () | |
{ | |
printByte (ยิ้ม); | |
ล่าช้า (1000) | |
printByte (กลาง); | |
ล่าช้า (1000) | |
printByte (ขมวดคิ้ว); | |
ล่าช้า (1000) | |
printByte (E); | |
ล่าช้า (1000) | |
printByte (L); | |
ล่าช้า (1000) | |
printByte (E); | |
ล่าช้า (1000) | |
printByte (C); | |
ล่าช้า (1000) | |
printByte (T); | |
ล่าช้า (1000) | |
printByte (R); | |
ล่าช้า (1000) | |
printByte (O); | |
ล่าช้า (1000) | |
printByte (N); | |
ล่าช้า (1000) | |
printByte (ฉัน); | |
ล่าช้า (1000) | |
printByte (C); | |
ล่าช้า (1000) | |
printByte (S); | |
ล่าช้า (1000) | |
lc.clearDisplay (0); | |
ล่าช้า (1000) | |
printByte (H); | |
ล่าช้า (1000) | |
printByte (U); | |
ล่าช้า (1000) | |
printByte (B); | |
ล่าช้า (1000) | |
lc.clearDisplay (0); | |
ล่าช้า (1000) | |
} | |
void printByte (อักขระไบต์ []) | |
{ | |
int i = 0; | |
สำหรับ (i = 0; i <8; i ++) | |
{ | |
lc.setRow (0, i, ตัวละคร [ผม]); | |
} | |
} |
บันทึก
- โปรแกรมใช้ไลบรารีที่เรียกว่า LedControl ไลบรารีนี้ต้องเพิ่มลงใน Arduino IDE และไฟล์ส่วนหัว LedControl.h ต้องถูกรวมไว้ในโปรแกรม
- การใช้ไฟล์ไลบรารีนี้คือการเปิดใช้งาน MAX 7219 IC ที่จะรวมเข้าด้วยกันและยังให้ข้อความเลื่อนห้องสมุดสามารถดาวน์โหลดได้จากลิงค์นี้
โครงการ 2: Arduino 8X8 LED Matrix Interface กับ Android Phone
วงจรที่สองในชุด Arduino 8 × 8 LED Matrix Interface จะขึ้นอยู่กับ Bluetooth Communication และ Android Phone ในโครงการนี้เรามีอินเตอร์เฟส Arduino พร้อมกับโทรศัพท์ Android ที่ใช้ Bluetooth Communication และ LED Matrix 8x8 ที่เชื่อมต่อกับ Arduino ผ่าน MAX7219 จะถูกควบคุมโดยแอพพลิเคชั่นเฉพาะบน Android Phone
เราได้เห็นในโครงการก่อนหน้านี้ว่ามีการเชื่อมต่อ LED Matrix 8 × 8 และ MAX7219 IC แล้ว ดังนั้นฉันจะข้ามส่วนของการเชื่อมต่อและดำเนินการกับวิธี MAX7219 IC เชื่อมต่อกับ Arduino
แต่ฉันไม่ได้พูดถึง Pin Diagram ของเมทริกซ์ LED 8 × 8 ในวงจรก่อน รูปภาพต่อไปนี้จะแสดงขาออกจาก LED Matrix 8x8
ในขณะที่คุณสังเกตเห็น LED Matrix 8x8 ประกอบด้วยหมุด 16 ตัว: 8 แถวและ 8 คอลัมน์ โดยปกติแถวจะเชื่อมโยงกับ Anodes ของ LEDs และ Columns จะสัมพันธ์กับ Cathodes ของ LEDs
แผนภูมิวงจรรวม
องค์ประกอบที่จำเป็น
- Arduino UNO
- บอร์ด IC MAX7219
- 8 × 8 LED Matrix
- โมดูล Bluetooth-HC-05
- ติดตั้ง Android Phone กับ App แล้ว
การออกแบบวงจร
เนื่องจากการสื่อสารระหว่าง Arduino และ MAX7219 ใช้โปรโตคอล SPI Communication Protocol เราจำเป็นต้องใช้หมุดสามขาจาก Arduino (Data, Clock และ Chip Select) หมุด CS, CLK และ DIN ของบอร์ด IC MAX7219 เชื่อมต่อกับหมุด 10, 11 และ 12 ของ Arduino
ขณะที่เราใช้การเชื่อมต่อบลูทู ธ ระหว่าง Arduino กับ Android อุปกรณ์ RX และ TX ของ HC-05 Bluetooth Module จะเชื่อมต่อกับขา TX และ RX ของ Arduino (Pins 1 และ 0)
การควบคุม LED Matrix 8 × 8 ผ่าน Android App
แอปที่ทุ่มเทสำหรับอุปกรณ์ที่ใช้ระบบ Android ได้รับการออกแบบมาสำหรับโครงการนี้ เค้าโครงของแอปพลิเคชันที่ติดตั้งไว้ในโทรศัพท์มือถือจะแสดงในรูปต่อไปนี้
แอปพลิเคชันมี 8 × 8 สี่เหลี่ยม (แต่ละอันสอดคล้องกับหนึ่ง LED บน 8X8 LED Matrix) ปุ่มรีเซ็ตและปุ่มยกเลิกการเชื่อมต่อ การแตะที่สี่เหลี่ยมเฉพาะจะเปิดไฟ LED เฉพาะใน LED Matrix 8x8
สีของสี่เหลี่ยมจะเปลี่ยนเป็นสีแดงเป็นสัญญาณว่า LED เปิดอยู่ การแตะที่สี่เหลี่ยมอีกครั้งจะปิด LED ที่เกี่ยวข้องและสีของสี่เหลี่ยมจะเปลี่ยนกลับเป็นสีเทา
ปุ่มรีเซ็ตจะอยู่ที่ด้านล่างโดยใช้การตั้งค่า LED Matrix 8x8 ซึ่งหมายความว่าไฟ LED ทั้งหมดจะถูกปิด ปุ่มปลดการเชื่อมต่อจะถูกตัดการเชื่อมต่อจาก Bluetooth
หมายเหตุ : แอปจะใช้คุณสมบัติ Bluetooth ของโทรศัพท์ ดังนั้นต้องได้รับสิทธิ์ที่จำเป็น นอกจากนี้โมดูล Bluetooth HC-05 ต้องจับคู่กับอุปกรณ์ (โทรศัพท์)
ดาวน์โหลดแอนดรอยด์แอพ
รหัส
# include < LedControl.h > | |
int DIN = 12 ; | |
int CS = 10 ; | |
int CLK = 11 ; | |
int row = 0 ; | |
int col = 0 ; | |
int temp = 0 ; | |
ข้อมูลint = 0 ; | |
LedControl lc = LedControl (DIN, CLK, CS, 1 ); | |
การตั้งค่าเป็นโมฆะ () | |
{ | |
LC ปิด ( 0 , เท็จ ); | |
LC setIntensity ( 0 , 5 ); | |
LC clearDisplay ( 0 ); | |
อนุกรม เริ่มต้น ( 9600 ); | |
} | |
void loop () | |
{ | |
ถ้า (Serial. available ()> 0 ) | |
{ | |
ข้อมูล = Serial อ่าน (); / /จะส่งกลับค่า ascii ถ้าเราส่งข้อมูลในโทรศัพท์ | |
ถ้า (ข้อมูล < 96 ) | |
{ | |
if (temp == 0 ) | |
{ | |
แถว = ข้อมูล - 48 ; | |
temp = 1 ; | |
} | |
อื่น | |
col = data- 48 ; | |
} | |
else if (data == ' n ' ) | |
{ | |
LC setLed ( 0 , แถว, col, true ); | |
อนุกรม println ( ' n ' ); | |
อนุกรม println (แถว); | |
อนุกรม println (col); | |
temp = 0 ; | |
} | |
else if (data == ' f ' ) | |
{ | |
LC setLed ( 0 , แถว, col, false ); | |
อนุกรม println ( ' f ' ); | |
อนุกรม println (แถว); | |
อนุกรม println (col); | |
temp = 0 ; | |
} | |
else if (data == ' r ' ) | |
LC clearDisplay ( 0 ); | |
} | |
} | |
การประยุกต์ใช้งาน
- Arduino based 8 x 8 จอแสดงผล LED เมทริกซ์ใช้ไมโครคอนโทรลเลอร์เพียง 3 ขาเท่านั้นดังนั้นจึงสามารถใช้ในการใช้งานที่แสดงข้อมูลเป็นส่วนหนึ่งของระบบที่หมุดอื่น ๆ ของไมโครคอนโทรลเลอร์สามารถใช้สำหรับอุปกรณ์ต่อพ่วงอื่น ๆ ได้
- LED Matrix เป็นรูปแบบพื้นฐานของอุปกรณ์แสดงผลที่ใช้สำหรับแสดงข้อมูลในสถานที่สาธารณะเช่นสถานีรถประจำทางหรือสถานีรถไฟ
- การฝึกซ้อมหลาย LED สามารถรวมกันเพื่อสร้างหน้าจอขนาดใหญ่และสามารถใช้เพื่อแสดงภาพที่มีสีได้หลายสี
ฉันทำมัน
<3
เราได้ให้ทุกอย่างในเว็บไซต์ - โค้ดลิงก์สำหรับแอป