光立方程序(arduino光立方程序代码_arduino设计案例)

发布时间:2025-12-10 19:18:05 浏览次数:18

arduino光立方程序代码_arduino设计案例-光立方程序流程图

arduino光立方程序代码_arduino设计案例编译环境:win10,arduino1.8.10_光立方程序

编译环境:win10,arduino1.8.10
硬件支持:光立方组件,移位锁存器(20扩展)74HC595,arduino组件(主板)
打开arduino,点击工具栏选择开发板型号,本博文使用UNO R3,选择Arduino/Genuino Uno

开发基础(标准库基本函数):(只列出部分需要用到的)
1.数字I/O 14个接口

void PinMode(unsigned char pin,unsigned char mode)

希望我今天分享的这篇文章可以帮到您。

pin:要配置的引脚 mode:设置模式-INPUT/OUTPUT

void digitalWrite(unsigned char pin,unsigned char value)

pin:要配置的引脚 value:HIGH/LOW

int digitalRead(unsigned char pin)

pin:获取电压值的引脚 返回值:获取引脚电压情况HIGH/LOW

2.时间函数

void delay(unsigned long ms)

一个延时函数 ms表示延时时长,单位ms

3.串口函数

void begin(unsigned long baud)

设置串口通信波特率

int available(void)

判断串口是否收到数据

4.模拟I/O 6个接口

void analogReference(type)

配置模拟引脚的参考电压
type:DEFAULT 默认值,参考电压为5V
INTERNAL 低电压模式
EXTERNAL 扩展模式

void analogWrite(unsigned char pin ,int value)

读取引脚的模拟量电压值

void analogRead(unsigned char pin)

通过PWM方式在引脚上输出一个模拟量
pin: A0~A5 value: 0~255

5.高级I/O

下面放光立方源码:(和STM32流水灯原理一样,用数组表示亮灯序列。4 * 4 * 4的光立方模块,效果还行)

#include <arduino.h>const unsigned char imageTab[] PROGMEM = {B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0000, B0000, B1000, B0000, B0000, B0000, 10 , B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0000, B0000, B0100, B0000, B0000, B0000, 10 , B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0000, B0000, B0010, B0000, B0000, B0000, 10 , B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0000, B0000, 10 , B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0000, 10 , B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0000, B0000, 10 , B0000, B0000, B0010, B0000, B0000, B1000, B0010, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 10 , B0000, B0000, B0110, B0000, B0000, B0100, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 10 , B0000, B0100, B0100, B0000, B0000, B0100, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 10 , B0000, B0100, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B0000, B0000, B0010, 10 , B0000, B0000, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B0100, B0000, B0010, 10 , B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B0110, B0000, B0010, 10 , B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0110, B0010, B0010, 10 , B0000, B0000, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0000, B0010, B0010, B0010, 10 , B0000, B0000, B1000, B0000, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0010, B0000, B0000, B0010, B0010, 10 , B0000, B0000, B1000, B0010, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0010, 10 , B0000, B0000, B1000, B0110, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0000, 10 , B0000, B0000, B1000, B1110, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 10 , B0000, B1000, B1000, B1110, B0000, B0000, B0100, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 10 , B0000, B1000, B1000, B1100, B0000, B1000, B0100, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 10 , B0000, B1000, B1000, B1000, B0000, B1100, B0100, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 10 , B0000, B1000, B1000, B0000, B0000, B1100, B0100, B0100, B0000, B0000, B0000, B0000, B0001, B0000, B0000, B0000, 10 , B0000, B1000, B0000, B0000, B0000, B1100, B0100, B0100, B0000, B0000, B0000, B0100, B0001, B0000, B0000, B0000, 10 , B0000, B0000, B0000, B0000, B0000, B1100, B0100, B0100, B0000, B0000, B0000, B0100, B0001, B0000, B0000, B0100, 10 , B0000, B0000, B0000, B0000, B0000, B0100, B0100, B0100, B0000, B0000, B0000, B0100, B0001, B0000, B0000, B0110, 10 , B0000, B0000, B0000, B0000, B0000, B0000, B0100, B0100, B0000, B0000, B0000, B0100, B0001, B0000, B0000, B0111, 10 , B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B0100, B0001, B0000, B0001, B0111, 10 , B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0100, B0001, B0001, B0001, B0111, 10 , B0000, B0000, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B0000, B0000, B0000, B0011, B0001, B0001, B0011, 10 , B0000, B0000, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B0000, B0000, B0000, B0111, B0001, B0001, B0001, 10 , B0000, B0000, B0000, B0000, B0000, B0100, B0000, B0000, B0100, B0000, B0000, B0000, B0111, B0001, B0001, B0000, 10 , B0000, B0000, B0000, B0000, B0100, B0100, B0000, B0000, B0100, B0000, B0000, B0000, B0111, B0001, B0000, B0000, 10 , B0000, B0000, B0000, B1000, B0100, B0100, B0100, B0000, B0100, B0000, B0000, B0000, B0111, B0000, B0000, B0000, 10 , B0000, B0000, B0000, B1000, B0100, B0100, B0100, B0100, B0100, B0000, B0000, B0000, B0110, B0000, B0000, B0000, 10 , B0000, B0000, B0000, B1100, B0100, B0100, B0100, B0100, B0100, B0000, B0000, B0000, B0100, B0000, B0000, B0000, 10 , B0000, B0000, B0000, B1100, B0100, B0100, B0100, B1100, B0000, B0000, B0000, B0000, B0000, B0001, B0000, B0000, 10 , B0000, B0000, B0000, B1100, B0000, B0100, B0100, B1100, B0000, B0000, B0000, B1000, B0000, B0001, B0000, B0000, 10 , B0000, B0000, B0000, B1100, B0000, B0000, B0100, B1100, B0000, B0000, B0000, B1000, B0000, B0001, B0000, B1000, 10 , B0000, B0000, B0000, B1100, B0000, B0000, B0000, B1100, B0000, B0000, B0000, B1000, B0000, B0001, B1000, B1000, 10 , B0000, B0000, B0000, B1100, B0000, B0000, B0000, B1000, B0000, B0000, B0000, B1000, B0000, B1001, B1000, B1000, 10 , B0000, B0000, B0000, B1000, B0000, B0000, B0000, B1000, B0000, B0000, B0000, B1000, B0000, B1101, B1000, B1000, 10 , B0000, B0000, B0001, B0000, B0000, B0000, B0000, B1000, B0000, B0000, B0000, B1000, B0000, B1111, B1000, B1000, 10 , B0000, B0000, B0001, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1000, B0000, B1111, B1001, B1000, 10 , B0000, B0000, B0001, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0001, B0000, B0000, B1111, B1001, B1000, 10 , B0100, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B1111, B1001, B0000, 10 , B0100, B0000, B0011, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B1111, B0001, B0000, 10 , B0100, B0000, B0111, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B1111, B0000, 10 , B0100, B0100, B0111, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0111, B0000, 10 , B0100, B0100, B0111, B0000, B0100, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B1001, B0000, 10 , B0100, B0100, B0111, B0000, B0100, B0000, B0001, B0000, B0100, B0000, B0001, B0000, B0000, B0000, B1000, B0000, 10 , B0100, B0100, B0111, B0000, B0100, B0000, B0001, B0000, B0100, B0000, B0000, B0000, B0100, B0000, B1000, B0000, 10 , B0100, B0100, B0111, B0000, B0100, B0000, B0001, B0000, B0100, B0000, B0000, B0000, B1100, B0000, B1000, B0000, 10 , B0100, B0100, B0110, B0000, B0100, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B1100, B1000, B1000, B0000, 10 , B0100, B0100, B0100, B0001, B0100, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B1100, B1000, B1000, B1000, 10 , B0100, B0100, B0000, B0001, B0100, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B1100, B1000, B1000, B1100, 10 , B0100, B0000, B0000, B0001, B0100, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B1100, B1000, B1000, B1110, 10 , B0000, B0000, B0000, B0001, B0100, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B1100, B1000, B1000, B1111, 10 , B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0000, B0100, B0000, B0000, B0001, B1100, B1000, B1000, B1111, 10 , B0000, B0000, B0100, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B1100, B1000, B1000, B1111, 10 , B0000, B0000, B0100, B0011, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B1000, B1000, B1000, B1111, 10 , B0000, B0000, B0100, B0111, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B1000, B1000, B1111, 10 , B0000, B0100, B0100, B0111, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0001, B0000, B1000, B1111, 10 , B0100, B0100, B0100, B0111, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0001, B0000, B0000, B1111, 10 , B0100, B0100, B0100, B0111, B0100, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0001, B0000, B0000, B0111, 10 , B0100, B0100, B0100, B0111, B0100, B0000, B0000, B0001, B0100, B0000, B0000, B0001, B0001, B0000, B0000, B0011, 10 , B0100, B0100, B0100, B0111, B0100, B0000, B0000, B0001, B0100, B0000, B0000, B0001, B0101, B0000, B0000, B0001, 10 , B0100, B0100, B0100, B0111, B0100, B0000, B0000, B0001, B0100, B0000, B0000, B0001, B0111, B0000, B0000, B0000, 10 , B0100, B0100, B0100, B0111, B0100, B0000, B0000, B0001, B0100, B0000, B0010, B0000, B0111, B0001, B0000, B0000, 10 , B0100, B0100, B0100, B0111, B0100, B0000, B0000, B0000, B0100, B0000, B0010, B0000, B0111, B0001, B0001, B0000, 10 , B0100, B0100, B0100, B0110, B0100, B0000, B0000, B0000, B0100, B0000, B0011, B0000, B0111, B0001, B0001, B0000, 10 , B0100, B0100, B0100, B0100, B0100, B0000, B0000, B0000, B0100, B0000, B0111, B0000, B0111, B0001, B0001, B0001, 10 , B0100, B0100, B0100, B0000, B0100, B0000, B0000, B0000, B0100, B0000, B0111, B0100, B0111, B0001, B0001, B0001, 10 , B0100, B0100, B0000, B0000, B0100, B0000, B0000, B0000, B0100, B0000, B0111, B0100, B0111, B0001, B0001, B0101, 10 , B0100, B0000, B0000, B0000, B0100, B0000, B0000, B0000, B0100, B0000, B0111, B0100, B0111, B0001, B0001, B0111, 10 , B0000, B0100, B0000, B0000, B0100, B0000, B0000, B0000, B0100, B0000, B0111, B0101, B0111, B0001, B0001, B0111, 10 , B0000, B0100, B0000, B0000, B0000, B0000, B0000, B0001, B0100, B0000, B0111, B0101, B0111, B0001, B0001, B0111, 10 , B0000, B0100, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0111, B0101, B0111, B0001, B0001, B0111, 10 , B0000, B0100, B0000, B0011, B0000, B0000, B0000, B0001, B0000, B0000, B0111, B0101, B0011, B0001, B0001, B0111, 10 , B0000, B0100, B0000, B0111, B0000, B0000, B0000, B0001, B0000, B0000, B0111, B0101, B0001, B0001, B0001, B0111, 10 , B0000, B0100, B0100, B0111, B0000, B0000, B0000, B0001, B0000, B0000, B0111, B0101, B0000, B0001, B0001, B0111, 10 , B0100, B0100, B0100, B0111, B0000, B0000, B0000, B0001, B0000, B0000, B0111, B0101, B0001, B0000, B0001, B0111, 10 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };unsigned int HC595_Temp = 0;unsigned int HC595_SCLK=8;  //SH_CP of 74HC595 unsigned int HC595_LCLK=9;  //ST_CP of 74HC595 unsigned int HC595_Data=3;  //DS of 74HC595 unsigned int HC595_EN = 2;  unsigned int LED_Pin16= 4;unsigned int LED_Pin17= 5;unsigned int LED_Pin18= 6;unsigned int LED_Pin19= 7;unsigned int LEDPin[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};unsigned int PlanePin[4] = {4, 5, 6, 7};//该部分代码可以不用关心,它已经帮我们实现了功能void LightCube_Init()  //光立方引脚初始化{pinMode( HC595_LCLK, OUTPUT );pinMode( HC595_SCLK, OUTPUT );pinMode( HC595_Data, OUTPUT );pinMode( HC595_EN, OUTPUT );pinMode( LED_Pin16, OUTPUT );pinMode( LED_Pin17, OUTPUT );pinMode( LED_Pin18, OUTPUT );pinMode( LED_Pin19, OUTPUT );digitalWrite(LED_Pin16,LOW);digitalWrite(LED_Pin17,LOW);digitalWrite(LED_Pin18,LOW);digitalWrite(LED_Pin19,LOW);}void HC595_WriteData(void)  //74HC595写数据{ //   digitalWrite(HC595_LCLK, LOW);    //   digitalWrite(HC595_EN, HIGH); shiftOut(HC595_Data, HC595_SCLK, LSBFIRST, HC595_Temp);  shiftOut(HC595_Data, HC595_SCLK, LSBFIRST, (HC595_Temp >> 8));digitalWrite(HC595_LCLK, LOW);    digitalWrite(HC595_LCLK, HIGH);digitalWrite(HC595_EN, LOW);  }void LightCube_SelfCheckMode(void)  //自检模式{unsigned char i = 0;unsigned char j = 0;//自检模式for(i = 0; i < 4; i++){digitalWrite( PlanePin[i], HIGH);}for(i = 0; i < 4; i++){digitalWrite( PlanePin[i], LOW);for(j = 0; j < 16; j++){HC595_Temp = (1 << j);HC595_WriteData();delay(200);}digitalWrite( PlanePin[i], HIGH);}for(i = 0; i < 4; i++){digitalWrite( PlanePin[i], LOW);}for(j = 0; j < 16; j++){HC595_Temp = (1 << j);HC595_WriteData();delay(200);}for(i = 0; i < 2; i++){HC595_Temp = 0xFFFF;HC595_WriteData();delay(500);HC595_Temp = 0x0000;HC595_WriteData();delay(500);}}//value  LED位置      charge  LED状态void LEDStatus_GetData( int value,int charge){if(value >= 16) return;if(charge != LOW && charge != HIGH) return;if(charge == LOW) {switch (value){case 0:  HC595_Temp &=~_BV(15); break;case 1:  HC595_Temp &=~_BV(14); break;case 2:  HC595_Temp &=~_BV(13); break;case 3:  HC595_Temp &=~_BV(12); break;case 4:  HC595_Temp &=~_BV(11); break;case 5:  HC595_Temp &=~_BV(10); break;case 6:  HC595_Temp &=~_BV(9); break;case 7:  HC595_Temp &=~_BV(8); break;case 8:  HC595_Temp &=~_BV(7); break;case 9:  HC595_Temp &=~_BV(6); break;case 10: HC595_Temp &=~_BV(5); break;case 11: HC595_Temp &=~_BV(4); break;case 12: HC595_Temp &=~_BV(3); break;case 13: HC595_Temp &=~_BV(2); break;case 14: HC595_Temp &=~_BV(1); break;case 15: HC595_Temp &=~_BV(0); break; default:break;  }}else{switch (value){case 0:  HC595_Temp |=_BV(15); break;case 1:  HC595_Temp |=_BV(14); break;case 2:  HC595_Temp |=_BV(13); break;case 3:  HC595_Temp |=_BV(12); break;case 4:  HC595_Temp |=_BV(11); break;case 5:  HC595_Temp |=_BV(10); break;case 6:  HC595_Temp |=_BV(9); break;case 7:  HC595_Temp |=_BV(8); break;case 8:  HC595_Temp |=_BV(7); break;case 9:  HC595_Temp |=_BV(6); break;case 10: HC595_Temp |=_BV(5); break;case 11: HC595_Temp |=_BV(4); break;case 12: HC595_Temp |=_BV(3); break;case 13: HC595_Temp |=_BV(2); break;case 14: HC595_Temp |=_BV(1); break;case 15: HC595_Temp |=_BV(0); break;  default:break;    }   }}#define ICStation_delay_MAX 10000  // 特效时间设置#define CUBESIZE 4#define PLANESIZE CUBESIZE*CUBESIZE#define PLANETIME 2222 #define TIMECONST 20unsigned int ICStation_delay =ICStation_delay_MAX;unsigned int PatternIdx =0;unsigned int PatternMax = sizeof(imageTab);void LightCube_FreeMode(void) //自由模式{ int i = 0, j = 0;byte PatternBuf[16]; int PatternIdx;byte DisplayTime; unsigned long EndTime;int plane; int patbufidx; unsigned char ShiftTemp = 0;PatternIdx = 0;do {memcpy_P( PatternBuf, imageTab+PatternIdx, 16 );  //拷贝第一帧数据PatternIdx += PLANESIZE;  //索引偏移16DisplayTime = pgm_read_byte_near( imageTab + PatternIdx++ );  //读取延时时间EndTime = millis() + ((unsigned long) DisplayTime) * TIMECONST;while ( millis() < EndTime )   //对一帧数据进行处理{patbufidx = 0; for (plane=0; plane < 4; plane++) {for (i = 0; i < 4; i++)  //四层共阴极全部给1{digitalWrite( PlanePin[i], HIGH );}for(j = 0; j < 16; j++){LEDStatus_GetData(LEDPin[j], LOW);}HC595_WriteData();for(j = 0; j < 4; j++){for(i = 0; i < 4; i++){if((PatternBuf[patbufidx] >> i) & B0001){LEDStatus_GetData(LEDPin[4 * (j % 4) + i], HIGH);}}patbufidx++;}HC595_WriteData();digitalWrite( PlanePin[plane], LOW );delayMicroseconds( PLANETIME );} }} while (DisplayTime > 0);  }int AnalogVal = 0;int AnalogMapVal = 0;int ShiftVal = 0;void setup() {// put your setup code here, to run once:pinMode(0, OUTPUT);digitalWrite(0, HIGH);Serial.begin(9600);analogReference(DEFAULT);  //选择默认5V作为参考电压LightCube_Init();}void loop() {LightCube_FreeMode();}
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477