Arduino光立方代码 焊接教程 原理图
通俗易懂的硬件焊接教程:
原理图
Arduino参考程序代码:
- int latchPin = 13; //74HC595的ST_CP(管脚12)
- int clockPin = 12; //74HC595的SH_CP(管脚11)
- int dataPin = 11; //74HC595的DS(管脚14)
- int CUBESIZE = 8;
- int PlanePin[] = {2, 3, 4, 5, 6, 7, 8, 9};
- void setup()
- {
- pinMode(latchPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- for(int i = 0; i < 8; i++)
- {
- pinMode(PlanePin[i],OUTPUT);
- }
- }
- void loop()
- {
- //花样1
- EnablePlane(1);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//第一层全亮
- delay(200);
- EnablePlane(2);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//第二层全亮
- delay(200);
- EnablePlane(4);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//第三层全亮
- delay(200);
- EnablePlane(8);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//第四层全亮
- delay(200);
- EnablePlane(16);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//第五层全亮
- delay(200);
- EnablePlane(32);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//第六层全亮
- delay(200);
- EnablePlane(64);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//第七层全亮
- delay(200);
- EnablePlane(128);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//第八层全亮
- delay(200);
- //花样2
- EnablePlane(255);
- EnableLed(0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01);//第1列全亮
- delay(200);
- EnablePlane(255);
- EnableLed(0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02);//第2列全亮
- delay(200);
- EnablePlane(255);
- EnableLed(0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04);//第3列全亮
- delay(200);
- EnablePlane(255);
- EnableLed(0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08);//第4列全亮
- delay(200);
- EnablePlane(255);
- EnableLed(0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10);//第5列全亮
- delay(200);
- EnablePlane(255);
- EnableLed(0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20);//第6列全亮
- delay(200);
- EnablePlane(255);
- EnableLed(0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40);//第7列全亮
- delay(200);
- EnablePlane(255);
- EnableLed(0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80);//第8列全亮
- delay(200);
- //花样3
- EnablePlane(0xC0);
- EnableLed(0,0,0,0,0,0,0x03,0x03);//2阶立方体
- delay(200);
- EnablePlane(0xE0);
- EnableLed(0,0,0,0,0,0x07,0x07,0x07);//3阶立方体
- delay(200);
- EnablePlane(0xF0);
- EnableLed(0,0,0,0,0x0F,0x0F,0x0F,0x0F);//4阶立方体
- delay(200);
- EnablePlane(0xF8);
- EnableLed(0,0,0,0x1F,0x1F,0x1F,0x1F,0x1F);//5阶立方体
- delay(200);
- EnablePlane(0xFC);
- EnableLed(0,0,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F);//6阶立方体
- delay(200);
- EnablePlane(0xFE);
- EnableLed(0,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F);//7阶立方体
- delay(200);
- EnablePlane(0xFF);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//8阶立方体
- delay(200);
- //花样4
- EnablePlane(0xC0);
- EnableLed(0xC0,0xC0,0,0,0,0,0,0);//2阶立方体
- delay(200);
- EnablePlane(0xE0);
- EnableLed(0xE0,0xE0,0xE0,0,0,0,0,0);//3阶立方体
- delay(200);
- EnablePlane(0xF0);
- EnableLed(0xF0,0xF0,0xF0,0xF0,0,0,0,0);//4阶立方体
- delay(200);
- EnablePlane(0xF8);
- EnableLed(0xF8,0xF8,0xF8,0xF8,0xF8,0,0,0);//5阶立方体
- delay(200);
- EnablePlane(0xFC);
- EnableLed(0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0,0);//6阶立方体
- delay(200);
- EnablePlane(0xFE);
- EnableLed(0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0);//7阶立方体
- delay(200);
- EnablePlane(0xFF);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//8阶立方体
- delay(200);
- //花样5
- EnablePlane(0x18);
- EnableLed(0,0,0,0x18,0x18,0,0,0);//2阶立方体
- delay(200);
- EnablePlane(0x3C);
- EnableLed(0,0,0x3C,0x3C,0x3C,0x3C,0,0);//4阶立方体
- delay(200);
- EnablePlane(0x7E);
- EnableLed(0,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0);//6阶立方体
- delay(200);
- EnablePlane(0xFF);
- EnableLed(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);//8阶立方体
- delay(200);
- //花样6
- EnablePlane(0x7E);
- EnableLed(0,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0);//6阶立方体
- delay(200);
- EnablePlane(0x3C);
- EnableLed(0,0,0x3C,0x3C,0x3C,0x3C,0,0);//4阶立方体
- delay(200);
- EnablePlane(0x18);
- EnableLed(0,0,0,0x18,0x18,0,0,0);//2阶立方体
- delay(200);
- EnablePlane(0);
- EnableLed(0,0,0,0,0,0,0,0);//全灭
- delay(200);
- //花样7
- EnablePlane(0x81);
- EnableLed(0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0xFF);
- delay(200);
- //花样8
- EnablePlane(0xFF);
- EnableLed(0x81,0,0,0,0,0,0,0x81);
- delay(200);
- }
- void EnablePlane(byte a) //a为1个字节,8位的变量,想使能那层LED,对应的哪位为1
- {
- for(int j = 0; j < CUBESIZE; j++)
- {
- if((0x1 << j) & a)
- digitalWrite(PlanePin[j],HIGH);
- else
- digitalWrite(PlanePin[j],LOW);
- }
- }
- void EnableLed(unsigned int a, unsigned int b,unsigned int c,unsigned int d,unsigned int e,unsigned int f,unsigned int g,unsigned int h)
- {
- digitalWrite(latchPin,LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
- shiftOut(dataPin, clockPin, MSBFIRST, a); //U8 74HC595
- shiftOut(dataPin, clockPin, MSBFIRST, b); //U7
- shiftOut(dataPin, clockPin, MSBFIRST, c); //U6
- shiftOut(dataPin, clockPin, MSBFIRST, d); //U5
- shiftOut(dataPin, clockPin, MSBFIRST, e); //U4
- shiftOut(dataPin, clockPin, MSBFIRST, f); //U3
- shiftOut(dataPin, clockPin, MSBFIRST, g); //U2
- shiftOut(dataPin, clockPin, MSBFIRST, h); //U1
- digitalWrite(latchPin, HIGH); //串行输入数据输出到并口
- }
复制代码
资料下载:
光立方资料.zip
(6.4 MB, 下载次数: 246)
|