8*8单色点阵控制
Pkj(讨论 | 贡献)2014年6月11日 (三) 03:33的版本 (Created page with "{| style="width: 800px;" |- | ==目的== 本教程将教大家如何用processing来控制8乘8点阵。 ==设备== *'''Microduino-Core''' *'''Microduino-FT232R''' ...")
目的本教程将教大家如何用processing来控制8乘8点阵。 设备
原理图程序见 ProcessingLattice 调试步骤一:按着原理图搭建硬件环境,像这样:
本例需要两端的代码,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; } }
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点阵对应,像这样
视频 |