一、实验目的
熟悉使用树莓派开发小产品
二、实验内容
在RPi的Linux上做一个轮盘游戏机,具有两个按钮,一个负责启动,一个负责停止。具有某个或多个输出设备,如LED、LED矩阵、双位7段数码管、LCD、蜂鸣器、舵机等,可任选其中一个或多个的组合。按下启动按钮,输出设备上 就出现各种变化,如流水灯、递增递减的数字、舵机的旋转等,按下停止按钮,输出设备就固定在当时的状态上。程序 运行的过程,会在shell输出数据。程序必须用C/C++语言写。实验报告要画出电路图(Frizting),说明使用的库,附连线的照片,拍实际的视频上传到优酷并在报告中给出URL,要附源码。
三、主要仪器设备
1. RPI
2. 移动电源
3. Win7 PC机一台
4. 面包板
5. 面包线、杜邦线
6. 段数码管
7. 限流电阻
8. 按钮
四、操作方法和实验步骤
1.安装wiringPi库
使用git工具下载wiringPi
查询当前目录下的wiringPi,并进入该目录,使用build命令安装
验证,已安装!
2.电路设计
引脚文件
电路设计图
树莓派接线
3.实验代码
#include <stdio.h> #include <stdlib.h> #include <wiringPi.h>
int main() { // turn表示要写哪个数字,ifstart表示是否进入start状态 int pin, turn = 1, ifstart = 0; int roll[6][8] = { {0,1,1,1,1,1,1,1}, {1,0,1,1,1,1,1,1}, {1,1,0,1,1,1,1,1}, {1,1,1,0,1,1,1,1}, {1,1,1,1,0,1,1,1}, {1,1,1,1,1,0,1,1}, }; int num[10][8] = { {0,0,0,0,0,0,1,1}, {1,0,0,1,1,1,1,1}, {0,0,1,0,0,1,0,1}, {0,0,0,0,1,1,0,1}, {1,0,0,1,1,0,0,1}, {0,1,0,0,1,0,0,1}, {0,1,0,0,0,0,0,1}, {0,0,0,1,1,1,1,1}, {0,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,1} };
wiringPisetup();
// 0-7为8位数码管的对应引脚 for (pin = 0 ; pin < 8 ; ++pin) pinMode (pin, OUTPUT) ;
// 8,9分别为(1,0)或(0,1),控制写两个数字中的一个 pinMode(8, OUTPUT); pinMode(9, OUTPUT);
pinMode(10, INPUT); //开始按钮 pinMode(11, INPUT); //暂停按钮
int i,j; i = 0; j = 0;
//t0与t1产生时间差,产生视觉暂停 unsigned int t0 = 0, t1 = 0;
do{ turn = 1 - turn; t1 = millis(); if (ifstart == 0 && numalRead(10)) { ifstart = 1; t0 = millis(); printf("Start!\n"); } else if (ifstart == 1 && numalRead(11)) { ifstart = 0; printf("Stop!\n"); }
if (ifstart == 1 && t1 - t0 >= 25) { t0 = t1; i++; j++; i %= 6; j %= 10; printf("%d\n", j); }
for (pin = 0; pin < 8; pin++) { if (turn) numalWrite(pin, num[j][pin]); else numalWrite(pin, roll[i][pin]); }
numalWrite(8, turn); numalWrite(9, 1 - turn); delay(10); }while(1);
return 0; } |
4.url链接