【Arduino】108种传感器系列实验(22)-MAX7219点阵模块-Arduino爱好者 - Powered by Discuz!

Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

[经验] 【Arduino】108种传感器系列实验(22)---MAX7219点阵模块

[复制链接]
 楼主| 发表于 2021-7-2 05:54 | 显示全部楼层
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  项目之九:动态显示“Hello World”
  实验开源程序

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  4.   项目之九:动态显示“Hello World”
  5.   接脚连线:
  6.   MAX7219       UNO
  7.   VCC  →→→→→ 5V
  8.   GND  →→→→→ GND
  9.   DIN  →→→→→ D12(数据,数据接收引脚)
  10.   CS   →→→→→ D11(负载,命令接收引脚)
  11.   CLK  →→→→→ D10(时钟,时钟引脚)
  12. */

  13. #include "LedControlMS.h"
  14. #define NBR_MTX 2
  15. LedControl lc=LedControl(12, 10, 11, NBR_MTX);

  16. String sentence= "Hello World";
  17. int letterCounter=0;
  18. // 显示更新之间的等待时间
  19. unsigned long delaytime=300;

  20. void setup() { // 初始化并设置初始值。 声明函数设置
  21.   // 显示模块在启动时处于省电模式
  22.   Serial.begin(9600); //将数据速率设置为每秒 9600 位,以便与计算机进行串行数据通信
  23.   Serial.println("Setup OK"); //将数据作为可读的文本打印到串行端口
  24.   Serial.println("");
  25.   Serial.println("Hello World!");
  26.   letterCounter=0;
  27.   
  28.   for (int i=0; i< NBR_MTX; i++){
  29.     lc.shutdown(i,false); //保持屏幕开启
  30.     lc.setIntensity(i,8); // 将亮度设置为中等值
  31.     lc.clearDisplay(i); // 清除每个字母后的显示
  32.   }
  33. }

  34. void loop() { //声明函数循环
  35.   char ch= sentence[letterCounter]; //定义字符串 ch
  36.   letterCounter++;
  37.   if (letterCounter>14) letterCounter=0; //设置循环
  38.   lc.displayChar(0, lc.getCharArrayPosition(ch)); //在屏幕上显示每个字符
  39.   delay(400);
  40.   lc.clearAll();
  41.   delay(300);
  42. }
复制代码


 楼主| 发表于 2021-7-2 05:57 | 显示全部楼层
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  项目之九:动态显示“Hello World”

  实验场景图

 楼主| 发表于 2021-7-2 06:26 | 显示全部楼层
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  项目之十:继续前行,往右箭头
  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  4.   项目之十:继续前行,往右箭头
  5.   接脚连线:
  6.   MAX7219       UNO
  7.   VCC  →→→→→ 5V
  8.   GND  →→→→→ GND
  9.   DIN  →→→→→ D12(数据,数据接收引脚)
  10.   CS   →→→→→ D11(负载,命令接收引脚)
  11.   CLK  →→→→→ D10(时钟,时钟引脚)
  12. */

  13. #include <LedControl.h>
  14. LedControl display = LedControl(12,10,11,1);

  15. const uint64_t R_IMAGES[] = {   //往右箭頭
  16.   0x0000000100000000,
  17.   0x0000010301000000,
  18.   0x0001030703010000,
  19.   0x0103070f07030100,
  20.   0x02060f1f0f060200,
  21.   0x040c1f3f1f0c0400,
  22.   0x08183f7f3f180800,
  23.   0x08183f7f3f180800,
  24.   0x10307fff7f301000,
  25.   0x2060fefefe602000,
  26.   0x40c0fcfcfcc04000,
  27.   0x8080f8f8f8808000,
  28.   0x0000f0f0f0000000,
  29.   0x0000e0e0e0000000,
  30.   0x0000c0c0c0000000,
  31.   0x0000808080000000,
  32.   0x0000000000000000
  33. };

  34. const int R_IMAGES_LEN = sizeof(R_IMAGES)/8;

  35. void setup(){
  36.   display.clearDisplay(0);    // 清除螢幕
  37.   display.shutdown(0, false);  // 關閉省電模式
  38.   display.setIntensity(0, 10); // 設定亮度為 8 (介於0~15之間)
  39. }

  40. void displayImage(uint64_t image) {
  41.   for (int i = 0; i < 8; i++) {
  42.     byte row = (image >> i * 8) & 0xFF;
  43.     for (int j = 0; j < 8; j++) {
  44.       display.setLed(0, i, j, bitRead(row, j));
  45.     }
  46.   }
  47. }

  48. int i = 0;

  49. void loop() {
  50.    displayImage(R_IMAGES[i]);
  51.   if (++i >= R_IMAGES_LEN ) {
  52.     i = 0;
  53.   }
  54.   delay(100);
  55. }
复制代码


 楼主| 发表于 2021-7-2 06:28 | 显示全部楼层
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  项目之十:继续前行,往右箭头

  实验场景图

 楼主| 发表于 2021-7-2 07:46 | 显示全部楼层
18.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  项目之十一:制作一个随机电子骰子

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  4.   项目之十一:制作一个随机电子骰子
  5.   接脚连线:按钮开关接D3
  6.   MAX7219       UNO
  7.   VCC  →→→→→ 5V
  8.   GND  →→→→→ GND
  9.   DIN  →→→→→ D12(数据,数据接收引脚)
  10.   CS   →→→→→ D11(负载,命令接收引脚)
  11.   CLK  →→→→→ D10(时钟,时钟引脚)
  12. */

  13. #include "LedControl.h"
  14. LedControl lc=LedControl(12,10,11,1);

  15. unsigned long delaytime=50;
  16. int ButtonPin=3;
  17. int Current=1;

  18. void setup() {
  19. lc.shutdown(0,false); //MAX72XX 在启动时处于省电模式,必须叫醒
  20. lc.setIntensity(0,8); //将亮度设置为中等值
  21. lc.clearDisplay(0); //并清除显示

  22. randomSeed(analogRead(0));
  23. pinMode(ButtonPin, INPUT);
  24. }

  25. void showNum(int x) {
  26. //这里是字符的数据
  27. byte one[8]={
  28. B00000000,
  29. B00000000,
  30. B00000000,
  31. B00111000,
  32. B00111000,
  33. B00000000,
  34. B00000000,
  35. B00000000};

  36. byte two[8]={
  37. B00000000,
  38. B00000110,
  39. B00000110,
  40. B00000000,
  41. B00000000,
  42. B01100000,
  43. B01100000,
  44. B00000000};

  45. byte three[8]={
  46. B00000000,
  47. B00111000,
  48. B00111000,
  49. B00000000,
  50. B01100110,
  51. B01100110,
  52. B01100110,
  53. B00000000};

  54. byte four[8]={
  55. B00000000,
  56. B01100110,
  57. B01100110,
  58. B00000000,
  59. B00000000,
  60. B01100110,
  61. B01100110,
  62. B00000000};

  63. byte five[8]={
  64. B00000000,
  65. B01100110,
  66. B01100110,
  67. B00011000,
  68. B00011000,
  69. B01100110,
  70. B01100110,
  71. B00000000};

  72. byte six[8]={
  73. B01100110,
  74. B01100110,
  75. B00000000,
  76. B01100110,
  77. B01100110,
  78. B00000000,
  79. B01100110,
  80. B01100110};

  81. switch (x) {
  82. case 1:
  83. lc.setRow(0,0,one[0]);
  84. lc.setRow(0,1,one[1]);
  85. lc.setRow(0,2,one[2]);
  86. lc.setRow(0,3,one[3]);
  87. lc.setRow(0,4,one[4]);
  88. lc.setRow(0,5,one[5]);
  89. lc.setRow(0,6,one[6]);
  90. lc.setRow(0,7,one[7]);
  91. break;

  92. case 2:
  93. lc.setRow(0,0,two[0]);
  94. lc.setRow(0,1,two[1]);
  95. lc.setRow(0,2,two[2]);
  96. lc.setRow(0,3,two[3]);
  97. lc.setRow(0,4,two[4]);
  98. lc.setRow(0,5,two[5]);
  99. lc.setRow(0,6,two[6]);
  100. lc.setRow(0,7,two[7]);
  101. break;

  102. case 3:
  103. lc.setRow(0,0,three[0]);
  104. lc.setRow(0,1,three[1]);
  105. lc.setRow(0,2,three[2]);
  106. lc.setRow(0,3,three[3]);
  107. lc.setRow(0,4,three[4]);
  108. lc.setRow(0,5,three[5]);
  109. lc.setRow(0,6,three[6]);
  110. lc.setRow(0,7,three[7]);
  111. break;

  112. case 4:
  113. lc.setRow(0,0,four[0]);
  114. lc.setRow(0,1,four[1]);
  115. lc.setRow(0,2,four[2]);
  116. lc.setRow(0,3,four[3]);
  117. lc.setRow(0,4,four[4]);
  118. lc.setRow(0,5,four[5]);
  119. lc.setRow(0,6,four[6]);
  120. lc.setRow(0,7,four[7]);
  121. break;
  122. case 5:
  123. lc.setRow(0,0,five[0]);
  124. lc.setRow(0,1,five[1]);
  125. lc.setRow(0,2,five[2]);
  126. lc.setRow(0,3,five[3]);
  127. lc.setRow(0,4,five[4]);
  128. lc.setRow(0,5,five[5]);
  129. lc.setRow(0,6,five[6]);
  130. lc.setRow(0,7,five[7]);
  131. break;

  132. case 6:
  133. lc.setRow(0,0,six[0]);
  134. lc.setRow(0,1,six[1]);
  135. lc.setRow(0,2,six[2]);
  136. lc.setRow(0,3,six[3]);
  137. lc.setRow(0,4,six[4]);
  138. lc.setRow(0,5,six[5]);
  139. lc.setRow(0,6,six[6]);
  140. lc.setRow(0,7,six[7]);
  141. break;
  142. }
  143. }

  144. void loop() {
  145. int Next;
  146. boolean MarkStart=false; //标记是否按键抬起

  147. if (digitalRead(ButtonPin)==LOW) {
  148. showNum(Current);
  149. do {
  150. Next=random(1,7);
  151. }

  152. while (Current==Next); //因为如果两次出现相同的数字,看起来
  153. //会觉得没有变,所以这里要保证生成不同
  154. Current=Next;
  155. delay(delaytime);
  156. MarkStart=true;
  157. }

  158. if ((MarkStart==true) && (digitalRead(ButtonPin)==HIGH)){ //按键抬起,生成实际显示的结果
  159. MarkStart=false;
  160. showNum(random(1,7));
  161. }
  162. }
复制代码


 楼主| 发表于 2021-7-2 11:21 | 显示全部楼层
本帖最后由 eagler8 于 2021-7-2 11:29 编辑

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  项目之十一:制作一个随机电子骰子

  实验场景图  

发表于 2021-8-8 19:07 | 显示全部楼层
请问这个库是不是不能支持esp32?
 楼主| 发表于 2021-8-8 19:45 | 显示全部楼层
yuwenting 发表于 2021-8-8 19:07
请问这个库是不是不能支持esp32?

支持ESP32,会有另外的库
发表于 2021-8-8 20:36 | 显示全部楼层
eagler8 发表于 2021-8-8 19:45
支持ESP32,会有另外的库

请问在哪找到这个库呢,是不是程序又要做修改才行呢
发表于 2021-8-8 20:37 | 显示全部楼层
eagler8 发表于 2021-8-8 19:45
支持ESP32,会有另外的库

请问在哪找到这个库呢,是不是程序又要做修改才行呢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|好玩手机游戏盒子|196体育|Arduino爱好者

GMT+8, 2023-9-30 00:35 , Processed in 0.085215 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表