树莓派实验七: 轮盘游戏机

一、实验目的

       熟悉使用树莓派开发小产品

 

二、实验内容

       在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链接


   http://v.youku.com/v_show/id_XNTcxMjU2MjAw.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值