回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【雕爷学编程】Arduino动手做(163)---大尺寸8x8LED方格屏模块3 中等

头像 驴友花雕 2023.07.16 30 1

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

 

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

 

01.jpg

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

  项目之十:继续前行,往右箭头

Arduino实验开源代码


 

代码
/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

 项目之十:继续前行,往右箭头

 接脚连线:

 MAX7219    UNO

 VCC →→→→→ 5V

 GND →→→→→ GND

 DIN →→→→→ D12(数据,数据接收引脚)

 CS  →→→→→ D11(负载,命令接收引脚)

 CLK →→→→→ D10(时钟,时钟引脚)

*/

#include <LedControl.h>

LedControl display = LedControl(12,10,11,1);

 

const uint64_t R_IMAGES[] = {  //往右箭頭

 0x0000000100000000,

 0x0000010301000000,

 0x0001030703010000,

 0x0103070f07030100,

 0x02060f1f0f060200,

 0x040c1f3f1f0c0400,

 0x08183f7f3f180800,

 0x08183f7f3f180800,

 0x10307fff7f301000,

 0x2060fefefe602000,

 0x40c0fcfcfcc04000,

 0x8080f8f8f8808000,

 0x0000f0f0f0000000,

 0x0000e0e0e0000000,

 0x0000c0c0c0000000,

 0x0000808080000000,

 0x0000000000000000

};

const int R_IMAGES_LEN = sizeof(R_IMAGES)/8;

void setup(){

 display.clearDisplay(0);  // 清除螢幕

 display.shutdown(0, false); // 關閉省電模式

 display.setIntensity(0, 10); // 設定亮度為 8 (介於0~15之間)

}

void displayImage(uint64_t image) {

 for (int i = 0; i < 8; i++) {

  byte row = (image >> i * 8) & 0xFF;

  for (int j = 0; j < 8; j++) {

   display.setLed(0, i, j, bitRead(row, j));

  }

 }

}

int i = 0;

void loop() {

  displayImage(R_IMAGES[i]);

 if (++i >= R_IMAGES_LEN ) {

  i = 0;

 }

 delay(100); 

}

Arduino实验场景图
 

WeChat_20210702061920.gif

骰子(tóu zi)。中国传统民间娱乐用来投掷的博具。早在战国时期就有。通常作为桌上游戏的小道具,最常见的骰子是六面骰,它是一颗正立方体,上面分别有一到六个孔(或数字),其相对两面之数字和必为七。中国的骰子习惯在一点和四点漆上红色。骰子是容易制作和取得的乱数产生器。骰子是许多娱乐必不可少的工具之一,比如打麻将、牌九等。这里说的骰子是指纯粹以骰子定输赢的赌博。一般用来赌大小。骰宝是由各闲家向庄家下注。每次下注前,庄家先把三颗骰子放在有盖的器皿内摇晃。当各闲家下注完毕,庄家便打开器皿并派彩。因为最常见的赌注是买骰子点数的大小(总点数为3至10称作小,11至18为大,围骰除外),故也常被称为买大小(Tai-Sai)。

骰子,俗称"色子",娱乐用具。最常见的骰子是正方体,上面刻有数字,其相对两面数字和必为七。中国的骰子习惯在一点和四点漆上红色。由于骰子的点数可以有许多不同的组合方式,而掷骰子时人们又无法预测点数,因此骰子也被称为博戏之祖。

相传,骰子的发明人是三国时期的文学家曹植,最初用做占卜的工具,后来才演变成后宫嫔妃的游戏,掷骰子点数赌酒或赌丝绸香袋等物。当时骰子的点穴上涂的是黑色,在唐代才增加描红。但在山东青州战国齐墓出土骰子已经证明骰子不是曹植发明的。骰子,作为中国博戏中六博之一,被视作中国博具之祖,在春秋战国末期已较为流行。但是真正中国本土国产骰子14面和18面,秦皇陵出土的骰子为中国正宗本土骰子,上刻汉字,秦汉以来的多面骰子随着文化交流,到后来点数一说传入中国,接着中西结合,才有了现今我们常见的骰子。传说唐玄宗与杨贵妃在后宫掷骰游乐,眼看要输了,只有出现4点方能解救败局,此时尚有一个仍在旋转之中,唐玄宗心中焦急,便连喊“四!四!”,尘埃落定后果然是四。唐玄宗一高兴,就让高力士宣告天下,骰子上可以描红,红色通常是不能乱用的。自清代开始,骰子的娱乐方式被基本决定下来,一般采用3枚骰子和下骰盅。最简单的骰盅可用木碗或瓦钵替代,下面垫上一块底板,扔骰时用骰盅盖上,庄家和玩家均不知道骰子的点数。这种方法带有神秘感,便于庄家营造气氛,以使玩家聚台下注。在赌场,则有制作精美、与盅相配的骰盅赌具,名称叫做骰宝。为防荷官疏乎摇骰或作弊,一代赌神叶汉发明了电动骰宝,迄今仍在澳门赌场使用。

博状元(厦门玩法) 6个骰子博饼的玩法是厦门的特色:在郑成功屯兵厦门时,为排解战士中秋佳节思乡之苦,发明了一种博饼游戏,称中秋会饼。中秋会饼每会63块饼,取民间流传的赌具骰子6个,以一秀、二举、三红、四进、对堂、状元为不同等第,依次为序让参加者投掷玩耍。中秋博饼活泼有趣,雅俗共赏,郑成功批准从农历八月十三至十八日,前后六夜,军中按单双日轮流赏月博饼。中秋会饼博状元的习俗流传至今,三百多年来在厦门代代相传,成为有趣的一种民俗活动。博饼活动倾注了人们期待美好生活的愿望,人们博得尽兴,玩得开心。当骰子在大瓷碗里落下,发出叮叮当当的清脆响声时,人们欢歌笑语,其乐融融。骰子摇一摇中骰子博饼的玩法很简单,包括一秀、二举、四进、三红、对堂、状元等称呼。它以一个骰子的四点为尊,一个出现一个四点称一秀,两个四点称二举,三个为三红,四个为四进,顺子为对堂,五个以上为状元。


18.jpg19.jpg

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

  项目之十一:制作一个随机电子骰子

Arduino实验开源代码


 

代码
/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

 项目之十一:制作一个随机电子骰子

 接脚连线:按钮开关接D3

 MAX7219    UNO

 VCC →→→→→ 5V

 GND →→→→→ GND

 DIN →→→→→ D12(数据,数据接收引脚)

 CS  →→→→→ D11(负载,命令接收引脚)

 CLK →→→→→ D10(时钟,时钟引脚)

*/

#include "LedControl.h"

LedControl lc=LedControl(12,10,11,1);

unsigned long delaytime=50;

int ButtonPin=3;

int Current=1;

void setup() { 

lc.shutdown(0,false); //MAX72XX 在启动时处于省电模式,必须叫醒

lc.setIntensity(0,8); //将亮度设置为中等值

lc.clearDisplay(0); //并清除显示

randomSeed(analogRead(0));

pinMode(ButtonPin, INPUT);

}

void showNum(int x) {

//这里是字符的数据

byte one[8]={

B00000000,

B00000000,

B00000000,

B00111000,

B00111000,

B00000000,

B00000000,

B00000000};

byte two[8]={

B00000000,

B00000110,

B00000110,

B00000000,

B00000000,

B01100000,

B01100000,

B00000000};

byte three[8]={

B00000000,

B00111000,

B00111000,

B00000000,

B01100110,

B01100110,

B01100110,

B00000000};

byte four[8]={

B00000000,

B01100110,

B01100110,

B00000000,

B00000000,

B01100110,

B01100110,

B00000000};

byte five[8]={

B00000000,

B01100110,

B01100110,

B00011000,

B00011000,

B01100110,

B01100110,

B00000000};

byte six[8]={

B01100110,

B01100110,

B00000000,

B01100110,

B01100110,

B00000000,

B01100110,

B01100110};

switch (x) {

case 1:

lc.setRow(0,0,one[0]);

lc.setRow(0,1,one[1]);

lc.setRow(0,2,one[2]);

lc.setRow(0,3,one[3]);

lc.setRow(0,4,one[4]);

lc.setRow(0,5,one[5]);

lc.setRow(0,6,one[6]);

lc.setRow(0,7,one[7]);

break;

case 2:

lc.setRow(0,0,two[0]);

lc.setRow(0,1,two[1]);

lc.setRow(0,2,two[2]);

lc.setRow(0,3,two[3]);

lc.setRow(0,4,two[4]);

lc.setRow(0,5,two[5]);

lc.setRow(0,6,two[6]);

lc.setRow(0,7,two[7]);

break;

case 3:

lc.setRow(0,0,three[0]);

lc.setRow(0,1,three[1]);

lc.setRow(0,2,three[2]);

lc.setRow(0,3,three[3]);

lc.setRow(0,4,three[4]);

lc.setRow(0,5,three[5]);

lc.setRow(0,6,three[6]);

lc.setRow(0,7,three[7]);

break;

case 4:

lc.setRow(0,0,four[0]);

lc.setRow(0,1,four[1]);

lc.setRow(0,2,four[2]);

lc.setRow(0,3,four[3]);

lc.setRow(0,4,four[4]);

lc.setRow(0,5,four[5]);

lc.setRow(0,6,four[6]);

lc.setRow(0,7,four[7]);

break;

case 5:

lc.setRow(0,0,five[0]);

lc.setRow(0,1,five[1]);

lc.setRow(0,2,five[2]);

lc.setRow(0,3,five[3]);

lc.setRow(0,4,five[4]);

lc.setRow(0,5,five[5]);

lc.setRow(0,6,five[6]);

lc.setRow(0,7,five[7]);

break;

case 6:

lc.setRow(0,0,six[0]);

lc.setRow(0,1,six[1]);

lc.setRow(0,2,six[2]);

lc.setRow(0,3,six[3]);

lc.setRow(0,4,six[4]);

lc.setRow(0,5,six[5]);

lc.setRow(0,6,six[6]);

lc.setRow(0,7,six[7]);

break;

}

}

void loop() {

int Next;

boolean MarkStart=false; //标记是否按键抬起

if (digitalRead(ButtonPin)==LOW) {

showNum(Current);

do {

Next=random(1,7);

}

while (Current==Next); //因为如果两次出现相同的数字,看起来

//会觉得没有变,所以这里要保证生成不同

Current=Next;

delay(delaytime);

MarkStart=true;

}

if ((MarkStart==true) && (digitalRead(ButtonPin)==HIGH)){ //按键抬起,生成实际显示的结果

MarkStart=false;

showNum(random(1,7));

}

}

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
 项目之十一:制作一个随机电子骰子

 

 实验场景图   https://imagemc.dfrobot.com.cn/data/attachment/forum/202107/02/111335tru9juraqwiquf2z.gif
 

第二部分:实验开源仿真编程(Linkboy V4.52)-----国产自主知识产权软件平台
官网:http://www.linkboy.com.cn/
下载地址:http://www.linkboy.com.cn/software.html
 

20.jpg
21.jpg
22.jpg

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

实验开源仿真编程(Linkboy V4.52)

项目十二:取模显示简单图形


23.jpg24.jpg

Arduino实验场景图
 

25.jpg

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

实验开源仿真编程(Linkboy V4.52)

项目十三:动态的自由落体


26.jpg

6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

实验开源仿真编程(Linkboy V4.52)

项目十三:动态的自由落体

程序仿真运行动图  

https://imagemc.dfrobot.com.cn/data/attachment/forum/202107/02/144639we3fquyfde3flh00.gif


WeChat_20210702142926.gif

Arduino实验场景图

 

WeChat_20210702142918.gif

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

实验开源仿真编程(Linkboy V4.52)

项目十四:零星的闪烁小亮点


27.jpg

6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
实验开源仿真编程(Linkboy V4.52)
项目十四:零星的闪烁小亮点

程序仿真运行动图
 

WeChat_20210702163527.gif

6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

实验开源仿真编程(Linkboy V4.52)

项目十四:零星的闪烁小亮点

Arduino实验场景图


WeChat_20210702163520.gif

评论

user-avatar
  • 9mm

    9mm2023.08.13

    666

    0
    icon 他的勋章
      展开更多