本文其实就是别人的复制品,但是别人的代码有一点小问题,我更改了过来。这个问题只存在我这里,也许它的8×8点阵型号和我的不同,今日写在这里,供我以后查看。
我的LED型号为:1588AS (共阴),如果你是共阳的,请将代码中的HIGH、LOW取反就行。
这个文章也在Ardiono中文社区发布了,链接为https://www.arduino.cn/thread-32256-1-1.html。
关于8×8 LED点阵的原理之类的我就不赘述了,完全可以参考原文:Arduino 8×8点阵怦然心动 (感谢原作者),只看如何接线:
这是我的实物图:(因为我的LED太大,所以用引线将16个阵脚引出来再接线的,当然你也可以用原文中说的两个面包板来做。)
接好后,插入Arduino,上传代码,可以试试用我做了修改的代码:
(注意:原文的问题仅仅只是3、4接口位置接反了,我将3、4位置接线时做个调换就行了,也可以在代码中修改 int C[] = {6,11,10,3,A3,4,8,9}; 为 int C[] = {6,11,10,4,A3,3,8,9}; ,我修改了代码,所以接线不变。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
int R[] = {2,7,A5,5,13,A4,12,A2}; //行 int C[] = {6,11,10,4,A3,3,8,9}; //列 (原文中3、4的位置是反的,我做了调换) unsigned char biglove[8][8] = //大“心型”的数据 { 0,0,0,0,0,0,0,0, 0,1,1,0,0,1,1,0, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 0,1,1,1,1,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, }; unsigned char smalllove[8][8] = //小“心型”的数据 { 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,1,0,0,1,0,0, 0,1,1,1,1,1,1,0, 0,1,1,1,1,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, }; void setup() { //循环定义行列PIN 为输出模式 for(int i = 0; i<8; i++) { pinMode(R[i],OUTPUT); pinMode(C[i],OUTPUT); } } void loop() { for(int i = 0 ; i < 100 ; i++ ) //循环显示100次 { Display(biglove); //显示大”心形“ } for(int i = 0 ; i < 50 ; i++ ) //循环显示50次 { Display(smalllove); //显示小“心形” } } void Display(unsigned char dat[8][8]) //显示函数 { for(int c = 0; c<8; c++) { digitalWrite(C[c],LOW);//选通第c列 //循环 for(int r = 0; r<8; r++) { digitalWrite(R[r],dat[r][c]); } delay(1); Clear(); //清空显示去除余晖 } } void Clear() //清空显示 { for(int i = 0; i<8; i++) { digitalWrite(R[i],LOW); digitalWrite(C[i],HIGH); } } |
可以看到,图案就是一组8×8数组,大家也可以制作自己的文字来展示,比如显示“祝大家节日快乐”,
就可以用以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
int R[] = {2,7,A5,5,13,A4,12,A2}; //行 int C[] = {6,11,10,4,A3,3,8,9}; //列 unsigned char zhu[8][8] = //祝 { 1,0,0,1,1,1,1,1, 0,1,0,1,0,0,0,1, 1,1,1,1,1,1,1,1, 0,1,1,0,1,0,1,0, 1,1,0,0,1,0,1,0, 0,1,0,0,1,0,1,0, 0,1,0,0,1,0,1,0, 0,1,0,1,0,0,1,1, }; unsigned char da[8][8] = //大 { 0,0,0,1,0,0,0,0, 0,0,0,1,0,0,0,0, 1,1,1,1,1,1,1,1, 0,0,0,1,0,0,0,0, 0,0,0,1,0,0,0,0, 0,0,1,0,1,0,0,0, 0,1,0,0,0,1,0,0, 1,0,0,0,0,0,1,1, }; unsigned char jia[8][8] = //家 { 0,0,0,1,0,0,0,0, 1,1,1,1,1,1,1,1, 1,0,1,1,1,1,0,1, 0,0,1,1,0,0,1,0, 1,1,1,1,1,1,0,0, 0,1,1,1,1,0,0,0, 1,1,0,1,0,1,0,0, 0,0,1,1,0,0,1,1, }; unsigned char jie[8][8] = //节 { 0,0,1,0,0,1,0,0, 0,1,1,1,1,1,1,0, 0,0,1,0,0,1,0,0, 0,0,0,0,0,0,0,0, 0,1,1,1,1,1,1,0, 0,0,0,1,0,0,1,0, 0,0,0,1,0,1,1,0, 0,0,0,1,0,0,0,0, }; unsigned char ri[8][8] = //日 { 0,0,0,0,0,0,0,0, 0,1,1,1,1,1,1,0, 0,1,0,0,0,0,1,0, 0,1,1,1,1,1,1,0, 0,1,0,0,0,0,1,0, 0,1,0,0,0,0,1,0, 0,1,1,1,1,1,1,0, 0,0,0,0,0,0,0,0, }; unsigned char kuai[8][8] = //快 { 0,1,0,0,1,0,0,0, 0,1,0,0,1,0,0,0, 1,1,0,1,1,1,1,0, 0,1,1,0,1,0,1,0, 0,1,1,1,1,1,1,1, 0,1,0,0,1,0,0,0, 0,1,0,1,0,1,0,0, 0,1,1,0,0,0,1,1, }; unsigned char le[8][8] = //乐 { 0,0,0,0,0,0,0,1, 0,1,1,1,1,1,1,0, 0,1,0,0,1,0,0,0, 0,1,1,1,1,1,1,1, 0,0,0,0,1,0,0,0, 0,0,1,0,1,0,1,0, 0,1,0,0,1,0,0,1, 0,0,0,1,1,0,0,0, }; unsigned char ximie[8][8] = //全部熄灭 { 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,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, 0,0,0,0,0,0,0,0, }; unsigned char biglove[8][8] = //大“心型”的数据 { 0,0,0,0,0,0,0,0, 0,1,1,0,0,1,1,0, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 0,1,1,1,1,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, }; unsigned char smalllove[8][8] = //小“心型”的数据 { 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,1,0,0,1,0,0, 0,1,1,1,1,1,1,0, 0,1,1,1,1,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, }; void setup() { //循环定义行列PIN 为输出模式 for(int i = 0; i<8; i++) { pinMode(R[i],OUTPUT); pinMode(C[i],OUTPUT); } } void loop() { BlessYou(); } void Display(unsigned char dat[8][8]) //显示函数 { for(int c = 0; c<8; c++) { digitalWrite(C[c],LOW);//选通第c列 //循环 for(int r = 0; r<8; r++) { digitalWrite(R[r],dat[r][c]); } delay(1); Clear(); //清空显示去除余晖 } } void Clear() //清空显示 { for(int i = 0; i<8; i++) { digitalWrite(R[i],LOW); digitalWrite(C[i],HIGH); } } void BlessYou() { for(int i = 0 ; i < 50 ; i++) //循环显示50次 { Display(zhu); //显示 祝 } for(int i = 0 ; i < 50 ; i++) //循环显示50次 { Display(da); //显示 大 } for(int i = 0 ; i < 50 ; i++) //循环显示50次 { Display(jia); //显示 家 } for(int i = 0 ; i < 50 ; i++) //循环显示50次 { Display(jie); //显示 节 } for(int i = 0 ; i < 50 ; i++) //循环显示50次 { Display(ri); //显示 日 } for(int i = 0 ; i < 50 ; i++) //循环显示50次 { Display(kuai); //显示 快 } for(int i = 0 ; i < 50 ; i++) //循环显示50次 { Display(le); //显示 乐 } for(int i = 0 ; i < 30 ; i++) //循环显示30次 { Display(biglove); //显示 大心 } for(int i = 0 ; i < 30 ; i++) //循环显示30次 { Display(smalllove); //显示 小心 } for(int i = 0 ; i < 30 ; i++) //循环显示30次 { Display(biglove); //显示 大心 } for(int i = 0 ; i < 30 ; i++) //循环显示30次 { Display(smalllove); //显示 小心 } for(int i = 0 ; i < 200 ; i++) //循环显示200次 { Display(ximie); //显示 熄灭200次 } } |
for循环语句都没有++
多谢提醒,我往博客插入代码时可能板式调整错误了,丢了不少运算符号。感谢指正!
你的代码怎么总是报错?
不知道你是什么错,我这边没有问题。
求大神指导一下!
你好,我也做了这个实验,用的是1088as,接线是用的公接母方式,代码用的是你的,但是图案和汉字都没有,只有几行时亮时灭,剩下的一直亮。
挺急的!
你好,是1588as吗?是的话,如果出现了几行一直亮,请着重检查接线是否正确,请按照文中连线接线。出现这种问题基本上都是因为接线出错了。如果没有接错,再请检查代码。一般都会解决问题,祝好。
我也遇到和你一样的问题,请问你最后解决了吗
你好 请问24脚的点阵屏怎么连线 程序里的数字顺序要怎么变
你好,我不清楚24脚的点阵。我刚才查到可能它是双色的,我不是很清楚。但是我在网上找到了它的引脚图,兴许对你会有帮助。
我还有一些问题能加你QQ了解一下吗 我的QQ是1056979007
你好 请问24脚的点阵屏怎么连线
您好,请问头文件是什么?
你好,这里没有使用头文件,也没有使用库。LED阵列灯只是一个一个的灯,控制每一个灯的HIGH和LOW就可以了。
问题以解决了,但是我的点阵屏心形的亮灭是反着的改34没有用,高低已经改过来了,我就把程序的0,1都改了一遍才出现GIF上的效果。
能顺便问一下您的联系方式么
不错!说明你的是共阳LED点阵,我用的是共阴LED点阵,所以会亮灭反过来,我也在文章开头说了。很高兴能帮到你,可以给我发邮件到tahoroom@163.com,或者直接在这里留言也行,我都会看到的