8*8单色点阵控制

来自Microduino Wikipedia
Radiumray9@gmail.com讨论 | 贡献2014年10月29日 (三) 07:26的版本 设备
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
Language English

目的

本教程将教大家如何用processing来控制8乘8点阵。

设备

  • 其他硬件设备
    • USB数据连接线 一根
    • 面包板跳线 一盒
    • 面包板 一块
    • 8*8点阵LED 一个
    • 74HC595 2个

原理图

88LatticeSchematics.jpg

程序

见 ProcessingLattice

调试

步骤一:按着原理图搭建硬件环境,像这样:

88LatticeConnectionDiagram.jpg


步骤二:解释一下代码:

本例需要两端的代码,Processing端和Microduino端

Microduino:

使用firmata的StandardFirmata程序。

Processing:

//定义第一个串口。

 arduino = new Arduino(this, Arduino.list()[0], 57600);

//在setup()中定义输出引脚,和64个LED灯对象

 arduino.pinMode(latchPin, Arduino.OUTPUT);
 for (int i=0;i<8;i++) {
   for (int j = 0; j < 8; j ++ ) { // Initialize each led and output pin using a for loop.
     leds[i][j] = new LED((i+1)*60, (j+1)*60, 50, 50, j+1+(i*10));
     ledStates[i][j]=false;
   }
 }


//在draw()中判断64个LED中哪一行那一列的开启火熄灭

 background(255);
 for (int i=0; i<8;i++) {
   for (int j = 0; j < 8; j ++ ) { // Run each LED using a for loop.
     leds[i][j].display();
     if (leds[i][j].button) {//switch led on/off
       ledStates[i][j]=true;
     }
     else {
       ledStates[i][j]=false;
     }
   }
 }

//控制74hc595芯片进行处理,映射到8乘8点阵上。

 for (int i=0;i<8;i++) {
   arduino.digitalWrite(latchPin, 0);
   shiftOut(dataPin, clockPin, maskByteLines[0]); //mask(col)
   shiftOut(dataPin, clockPin, booleanArray2Byte(ledStates[i])); //row
   arduino.digitalWrite(latchPin, 1);
 }

函数说明:

mousePressed();//鼠标点击事件处理

booleanArray2Byte();//把boolean数组转化为byte值

shiftOut();//74hc595芯片的shiftOut二进制处理函数


步骤三:下载代码并编译通过。

步骤四:运行后,processing中会出现8乘8LED点阵,鼠标点击任何一个LED,看有什么反应。

结果

屏幕上显示的LED亮灭状态会和真实的8乘8点阵对应,像这样

88LatticeResult.jpg


视频