亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

无需驱动程序和库即可控制 8x8 LED 矩阵

组件和用品

Arduino Nano R3
× 1
LED 点阵显示,红色
× 1
通孔电阻,330 ohm
× 1

关于这个项目

本视频是关于如何在不使用任何驱动芯片如MAX7219和相应库的情况下控制1088AS共阴极8x8 LED矩阵的教程。

我很快将创建控制相同矩阵的第二个教程,但这次使用 MAX7219 并比较结果。

完整的教程可以在这里找到:

如果您喜欢此内容并希望支持我创建类似视频,请访问我的 Patreon 网页

https://www.patreon.com/MariosIdeas

或者

https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7PD67JWZ9S3EJ&source=url

代码

  • 测试 8x8 LED 矩阵的所有 64 个 LED
  • 在 8x8 LED 矩阵上显示猫图像(多路复用)
  • 在 8x8 LED 矩阵上滚动文本(多路复用)
测试 8x8 LED 矩阵的所有 64 个 LEDArduino
// Mario's Ideas// 通过一个一个点亮它们来测试 8x8 LED 矩阵中的所有 64 个 LED// Raws #define R1 2#define R2 3#define R3 4#define R4 5#define R5 6#define R6 7#define R7 8#define R8 9//Columns#define C1 10#define C2 11#define C3 12#define C4 13#define C5 A0#define C6 A1#define C7 A2#define C8 A3void setup() { pinMode( R1,输出); pinMode(R2,输出); pinMode(R3,输出); pinMode(R4,输出); pinMode(R5,输出); pinMode(R6,输出); pinMode(R7,输出); pinMode(R8,输出); pinMode(C1,输出); pinMode(C2,输出); pinMode(C3,输出); pinMode(C4,输出); pinMode(C5,输出); pinMode(C6,输出); pinMode(C7,输出); pinMode(C8, OUTPUT);// 在草图开始时关闭所有 LED digitalWrite(R1,HIGH);数字写入(R2,高);数字写入(R3,高);数字写入(R4,高);数字写入(R5,高);数字写入(R6,高);数字写入(R7,高);数字写入(R8,高);数字写入(C1,低);数字写入(C2,低);数字写入(C3,低);数字写入(C4,低);数字写入(C5,低);数字写入(C6,低);数字写入(C7,低); digitalWrite(C8,LOW);}void SelectRow(int row){ if (row==1) digitalWrite(R1,LOW);否则数字写入(R1,高); if (row==2) digitalWrite(R2,LOW);否则数字写入(R2,高); if (row==3) digitalWrite(R3,LOW);否则 digitalWrite(R3,HIGH); if (row==4) digitalWrite(R4,LOW);否则数字写入(R4,高); if (row==5) digitalWrite(R5,LOW);否则数字写入(R5,高); if (row==6) digitalWrite(R6,LOW);否则数字写入(R6,高); if (row==7) digitalWrite(R7,LOW);否则数字写入(R7,高); if (row==8) digitalWrite(R8,LOW); else digitalWrite(R8,HIGH);}void SelectColumn(int column){ if (column==1) digitalWrite(C1,HIGH);否则数字写入(C1,低); if (column==2) digitalWrite(C2,HIGH);否则数字写入(C2,低); if (column==3) digitalWrite(C3,HIGH);否则数字写入(C3,低); if (column==4) digitalWrite(C4,HIGH);否则数字写入(C4,低); if (column==5) digitalWrite(C5,HIGH);否则数字写入(C5,低); if (column==6) digitalWrite(C6,HIGH);否则数字写入(C6,低); if (column==7) digitalWrite(C7,HIGH);否则数字写入(C7,低); if (column==8) digitalWrite(C8,HIGH); else digitalWrite(C8,LOW);}void loop() { for (int i=1;i<9;i++) { for (int j=1;j<9;j++){ SelectRow(i);选择列(j);延迟(100); } }}
在 8x8 LED 矩阵上显示猫图像(多路复用)Arduino
// Mario 的想法// 在 8x8 LED 矩阵上显示猫图像(多路复用)// Raws #define R1 2#define R2 3#define R3 4#define R4 5#define R5 6#define R6 7#define R7 8 #define R8 9//Columns#define C1 10#define C2 11#define C3 12#define C4 13#define C5 A0#define C6 A1#define C7 A2#define C8 A3int pause=300; int Cat [8] [8] ={ {1,0,0,0,1,0,0,0}, {1,1,1,1,1,0,0,0}, {1,0 ,1,0,1,0,0,0}, {0,1,1,1,0,0,0,1}, {0,0,1,0,0,0,0,1}, {0,1,1,1,1,0,0,1}, {0,1,1,1,1,1,0,1}, {1,0,1,1,1,1,1 ,0}, };void setup() { pinMode(R1, OUTPUT); pinMode(R2,输出); pinMode(R3,输出); pinMode(R4,输出); pinMode(R5,输出); pinMode(R6,输出); pinMode(R7,输出); pinMode(R8,输出); pinMode(C1,输出); pinMode(C2,输出); pinMode(C3,输出); pinMode(C4,输出); pinMode(C5,输出); pinMode(C6,输出); pinMode(C7,输出); pinMode(C8,输出);数字写入(R1,高);数字写入(R2,高);数字写入(R3,高);数字写入(R4,高);数字写入(R5,高);数字写入(R6,高);数字写入(R7,高);数字写入(R8,高);数字写入(C1,低);数字写入(C2,低);数字写入(C3,低);数字写入(C4,低);数字写入(C5,低);数字写入(C6,低);数字写入(C7,低); digitalWrite(C8,LOW);}void SelectRow(int row){ if (row==1) digitalWrite(R1,LOW);否则数字写入(R1,高); if (row==2) digitalWrite(R2,LOW);否则数字写入(R2,高); if (row==3) digitalWrite(R3,LOW);否则 digitalWrite(R3,HIGH); if (row==4) digitalWrite(R4,LOW);否则数字写入(R4,高); if (row==5) digitalWrite(R5,LOW);否则数字写入(R5,高); if (row==6) digitalWrite(R6,LOW);否则数字写入(R6,高); if (row==7) digitalWrite(R7,LOW);否则数字写入(R7,高); if (row==8) digitalWrite(R8,LOW); else digitalWrite(R8,HIGH);}void Set_LED_in_Active_Row(int column, int state){ if (column==1) digitalWrite(C1,state); if (column==2) digitalWrite(C2,state); if (column==3) digitalWrite(C3,state); if (column==4) digitalWrite(C4,state); if (column==5) digitalWrite(C5,state); if (column==6) digitalWrite(C6,state); if (column==7) digitalWrite(C7,state); if (column==8) digitalWrite(C8,state); }void loop() { for (int j=0;j<8;j++){ SelectRow(j+1); for (int i=0;i<8;i++){ Set_LED_in_Active_Row(i+1 ,Cat[j][i]); } 延迟(2+暂停); }if(pause!=0 and pause>100)pause=pause-100;if(pause!=0 and pause<=100)pause=pause-10;}
在 8x8 LED 矩阵上滚动文本(多路复用)Arduino
// Mario's Ideas// 在 8x8 LED 矩阵上滚动文本(多路复用)// Raws #define R1 2#define R2 3#define R3 4#define R4 5#define R5 6#define R6 7#define R7 8# define R8 9//Columns#define C1 10#define C2 11#define C3 12#define C4 13#define C5 A0#define C6 A1#define C7 A2#define C8 A3int position=0; int Marios_ideas [8] [54] ={ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 ,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0}, {0,1,0,0,0,1,0,0,1,1,0,0,1,1,1 ,0,0,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1 ,1,0,0,1,1,0,0,0,1,1,0,0,0,0}, {0,1,1,0,1,1,0,1,0,0 ,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,1,0 ,0,1,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0}, {0,1,0,1,0 ,1,0,1,0,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0 ,0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0}, {0,1,0,0,0,1,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,1,0,0 ,1,1,0,0,0,0,1,0,1,0,0,1,0,1,1,1,0,1,1,1,1,0,0,1,1 ,0,0,0,0}, {0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,1 ,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,0 ,1,0,0,0,0,1,0,0,0}, {0,1,0,0,0,1,0,1,0,0,1,0,1,0,0 ,1,0,1,0,0,1,1,0,0,1,0,0, 1,0,0,0,1,0,1,1,1,0,0,1,0 ,0,0,1,0,0,1,0,1,0,0,1,0,0,0}, {0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0 ,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0} };void setup() { pinMode(R1,输出); pinMode(R2,输出); pinMode(R3,输出); pinMode(R4,输出); pinMode(R5,输出); pinMode(R6,输出); pinMode(R7,输出); pinMode(R8,输出); pinMode(C1,输出); pinMode(C2,输出); pinMode(C3,输出); pinMode(C4,输出); pinMode(C5,输出); pinMode(C6,输出); pinMode(C7,输出); pinMode(C8,输出);数字写入(R1,高);数字写入(R2,高);数字写入(R3,高);数字写入(R4,高);数字写入(R5,高);数字写入(R6,高);数字写入(R7,高);数字写入(R8,高);数字写入(C1,低);数字写入(C2,低);数字写入(C3,低);数字写入(C4,低);数字写入(C5,低);数字写入(C6,低);数字写入(C7,低); digitalWrite(C8,LOW);}void SelectRow(int row){ if (row==1) digitalWrite(R1,LOW);否则数字写入(R1,高); if (row==2) digitalWrite(R2,LOW);否则数字写入(R2,高); if (row==3) digitalWrite(R3,LOW);否则 digitalWrite(R3,HIGH); if (row==4) digitalWrite(R4,LOW);否则数字写入(R4,高); if (row==5) digitalWrite(R5,LOW);否则数字写入(R5,高); if (row==6) digitalWrite(R6,LOW);否则数字写入(R6,高); if (row==7) digitalWrite(R7,LOW);否则数字写入(R7,高); if (row==8) digitalWrite(R8,LOW); else digitalWrite(R8,HIGH);}void Set_LED_in_Active_Row(int column, int state){ if (column==1) digitalWrite(C1,state); if (column==2) digitalWrite(C2,state); if (column==3) digitalWrite(C3,state); if (column==4) digitalWrite(C4,state); if (column==5) digitalWrite(C5,state); if (column==6) digitalWrite(C6,state); if (column==7) digitalWrite(C7,state); if (column==8) digitalWrite(C8,state); }void loop() { for (int x=0; x<5;x++){ for (int j=0;j<8;j++){ SelectRow(j+1); for (int i=0;i<8;i++){ Set_LED_in_Active_Row(i+1,Marios_ideas[j][(i+position)-abs((i+position)/54)*54]); } 延迟(2); } } 位置=位置+1;}

定制零件和外壳

示意图


制造工艺

  1. 发光二极管(LED)
  2. Maxim 的紧凑型 LED 驱动器提供高效率和低 EMI
  3. 棺材舞曲
  4. Arduino Pong Game on 24x16 Matrix with MAX7219
  5. LED Matrix + Motion Sensor Door Display [Arduino Holiday]
  6. 8x LED 声音照明
  7. Arduino Quadruped
  8. 热胶 LED 矩阵灯
  9. 使用 Bolt 和 Arduino 控制 LED 亮度
  10. 无需驱动程序和库即可控制 8x8 LED 矩阵
  11. 单 LED 矩阵 Arduino 翻转时钟
  12. 使用 Arduino Uno 控制 LED 矩阵