您的位置:首页 > 其它

树莓派_字母板的使用

2013-06-23 14:48 183 查看
一、实验目的

熟悉字母板

二、实验内容

用LED矩阵实现一个字母板,由RPi程序显示不同的字母和符号。PS:又采购了一批小字母板,每个人可以有一个,找 你们的TA去拿

三、主要仪器设备

1. RPI
2. 移动电源
3. Win7 PC机一台
4. 面包板
5. 面包线、杜邦线
6. 字母板

四、操作方法和实验步骤

1.安装wiringPi库
使用git工具下载wiringPi



查询当前目录下的wiringPi,并进入该目录,使用build命令安装





验证,已安装!



2.电路设计




实际上电路是按顺序接的:





电路接线



电路接线

3.实验代码
输出设计为:





程序中各写操作对应:
列的0值表示亮,1值表示暗。
行的0值表示暗,1值表示亮。
欲控制某行某列点亮,必须该行值为1和该列值为0。
以下是全暗的例子:
digitalWrite(0, 0); 行8
digitalWrite(1, 1); 列5
digitalWrite(2, 1); 列3
digitalWrite(3, 0); 行5
digitalWrite(4, 1); 列8
digitalWrite(5, 0); 行7
digitalWrite(6, 1); 列2
digitalWrite(7, 1); 列1
digitalWrite(8, 0); 行6
digitalWrite(9, 0); 行3
digitalWrite(10, 1); 列4
digitalWrite(11, 0); 行1
digitalWrite(12, 1); 列6
digitalWrite(13, 1); C7
digitalWrite(14, 0); 行2
digitalWrite(15, 0); 行4

#include <stdio.h>
#include <wiringPi.h>
#include <stdlib.h>

int main(int argc,char * argv[]){
struct timeval t_start,t_end;
int pin, flag, i;
long percent, time, cost_time;

wiringPiSetup ();//³õʼ»¯Ð´¿Ú
for (pin = 0 ; pin < 16; ++pin) {
pinMode (pin, OUTPUT) ;
}
while(1)//Ñ­»·Êä³ö
{
i=0;
while(i < 250) //Ñ­»·Êä³öM
{
if(i % 5 == 0) //Êä³öµÚÒ»ÁÐ
{
digitalWrite(0, 0);
digitalWrite(1, 1);
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(14, 1);
digitalWrite(15, 1);
}
if(i % 5 == 1) //Êä³öµÚ¶þÁÐ
{
digitalWrite(0, 0);
digitalWrite(1, 1);
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(14, 1);
digitalWrite(15, 0);
}
if(i % 5 == 2)
{
digitalWrite(0, 0);
digitalWrite(1, 1);
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(14, 1);
digitalWrite(15, 1);
}
if(i % 5 == 3)
{
digitalWrite(0, 0);
digitalWrite(1, 0);
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(14, 1);
digitalWrite(15, 0);
}
if(i % 5 == 4)
{
digitalWrite(0, 0);
digitalWrite(1, 1);
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 0);
digitalWrite(13, 1);
digitalWrite(14, 1);
digitalWrite(15, 1);
}
i++;
delay(3);
}
//È«°µ£¬Çø·ÖÁ½¸ö×Öĸ
digitalWrite(0, 0);
digitalWrite(1, 1);
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(14, 0);
digitalWrite(15, 0);
delay(100);

i = 0;
while(i < 250){
if(i % 5 == 0) //Êä³öµÚÒ»ÁÐ
{
digitalWrite(0, 0);
digitalWrite(1, 1);
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);
digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(14, 1);
digitalWrite(15, 0);
}
if(i % 5 == 1) //Êä³öµÚ¶þÁÐ
{
digitalWrite(0, 0);
digitalWrite(1, 1);
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(14, 1);
digitalWrite(15, 0);
}
if(i % 5 == 2)
{
digitalWrite(0, 0);
digitalWrite(1, 1);
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(14, 1);
digitalWrite(15, 1);
}
if(i % 5 == 3)
{
digitalWrite(0, 0);
digitalWrite(1, 0);
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(14, 1);
digitalWrite(15, 0);
}
if(i % 5 == 4)
{
digitalWrite(0, 0);
digitalWrite(1, 1);
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 0);
digitalWrite(13, 1);
digitalWrite(14, 1);
digitalWrite(15, 0);
}
i++;
delay(3);
}
}
return 0;
}
4.实验结果
复制代码至树莓派,ls查看



编译代码



运行后效果如下



实际上屏幕一直在M和J来回跳动,MJ即满绩。。。。

具体效果请看下面一段视频:
http://v.youku.com/v_show/id_XNTc0MzYyOTE2.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: