树莓派-轮盘游戏机设计

  浙大嵌入式课程实验。

  在实验板 的 Linux 上做一个轮盘游戏机,具有两个按钮,一个负责启动,一 个负责停止。具有某个或 多个输出设备,如 LED 柱状显示器、 双位 7 段数码管(不要求输出数字)、LCD或舵机 等,可任选其中一个或多个的 组合。按下启动按钮,输出设备上就出现各种变化,如流水灯、舵机的旋转等;按下停止按 钮,输出设备就固定在当时 的状态上。程序运行的过程,会在 shell 输出数据。程序必须用 C/C++语言写。

  布线方案如下:

  在面包板上连线,完成外部电路:

  wiringPi是一个成熟的树莓派平台的GPIO控制库函数,我们可以通过安装wiringPi来控制树莓派的GPIO:

  进入目录build

查看是否安装成功

wiringPi的接口映射:

本次试验用到的LG3641BH数码管的引脚:

共阳数码管管脚定义:

数码管焊板图:

测试程序:

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

#define DIGIT1 8
#define DIGIT2 12
#define DIGIT3 13
#define DIGIT4 9
#define BTN0 10
#define BTN1 11

#define true 1
char digit[10][8] =  //The increasing number
    {
        {0,1,0,1,0,0,0,0}, //0
        {1,1,0,1,1,1,0,1}, //1
        {0,0,0,1,0,1,0,0}, //2
        {0,0,0,1,0,1,0,1}, //3
        {1,0,0,1,1,0,0,1}, //4
        {0,0,0,1,0,0,1,1}, //5
        {0,0,0,1,1,0,1,0}, //6
        {1,1,0,1,0,1,0,1}, //7
        {0,0,0,1,0,0,0,0}, //8
        {0,0,0,1,0,0,0,1}  //9
    };
char loop[10][8] =   //the loop-running bar in the left windows
    {
        {1,1,1,1,0,1,1,1},//chip1
        {1,1,1,1,0,1,1,1},//chip2
        {1,1,1,1,0,1,1,1},//chip3
        {1,1,1,1,1,1,0,1},//chip3
        {1,1,0,1,1,1,1,1},//chip3
        {0,1,1,1,1,1,1,1},//chip3
        {0,1,1,1,1,1,1,1},//chip2
        {0,1,1,1,1,1,1,1},//chip1
        {1,1,1,1,1,1,1,0},//chip1
        {1,1,1,1,1,0,1,1},//chip1
    };

void main()
{
    int pin;
    int m = 0, n = 0;
    int flag = 1;
    int chip = 0;
    int run = 0;
    unsigned int time0 = 0, time1 = 0;

    if (wiringPiSetup () == -1) //test the install status of wiringPi
    {
        exit (1) ;
    }

    for (pin = 0 ; pin < 8 ; ++pin)
    {
        pinMode (pin, OUTPUT) ;
        digitalWrite(pin, HIGH);
   }

    pinMode(DIGIT1, OUTPUT);
    pinMode(DIGIT2, OUTPUT);
    pinMode(DIGIT3, OUTPUT);
    pinMode(DIGIT4, OUTPUT);
    pinMode(BTN0, INPUT); //The start button
    pinMode(BTN1, INPUT); //The stop button

    while (true)
    {
        time1 = millis();

        if (digitalRead(BTN0) && run == 0)
        {
            puts("Start!");
            run = 1;    //change the running state
            m = 0;
            n = 0;
            chip = 0;
            time0 = millis();
        }
        else if (digitalRead(BTN1) && run == 1)
        {
            puts("Stop!");
            run = 0;
       // chip = m =n = 0;
        }

        if (time1 - time0 >= 50 && run == 1)
        {
            time0 = time1;
//            printf("%d\n", n);
            m = ++m % 10;
            n = ++n % 10;
        chip = ++chip % 10;
        printf("%d\n", n);
        }

        for (pin = 0; pin < 8; pin++)
        {
            digitalWrite(pin, 1-flag ? digit[n][pin] : loop[m][pin]);
        }
        switch(chip){
        case 7:
        case 8:
        case 9:
        case 0:digitalWrite(DIGIT4, flag);
                //digitalWrite(DIGIT3, 0);
                //digitalWrite(DIGIT4, 0);
               break;
        case 6:
        case 1:digitalWrite(DIGIT3, flag);
               //digitalWrite(DIGIT2, 0);
               //digitalWrite(DIGIT4, 0);
               break;
        case 3:
        case 4:
        case 5:
        case 2:digitalWrite(DIGIT2, flag);
               //digitalWrite(DIGIT2, 0);
               //digitalWrite(DIGIT3, 0);
               break;
        default:break;
        }
      //chip = (chip + 1)%10;
        //digitalWrite(DIGIT4, flag);
        digitalWrite(DIGIT1, (flag = 1 - flag));
       delay(30);
       digitalWrite(DIGIT1,0);
       digitalWrite(DIGIT2,0);
       digitalWrite(DIGIT3,0);
       digitalWrite(DIGIT4,0);
        //delay(30);
    }

}

程序运行,在窗口中循环输出数字0-9,两个按钮分别控制开始和暂停,四个数码管左边三个设计成为跑马灯,右边一个循环显示数字0-9。

优酷视频链接地址:

http://v.youku.com/v_show/id_XMTI1NDE3MDczMg==.html

时间: 2024-07-28 19:57:58

树莓派-轮盘游戏机设计的相关文章

点阵游戏机设计报告

京信杯电子设计报告                  题目:A题点阵游戏机                                                队员名单:   2014年12月             目录 1.设计任务………………………………………………..3 1.1基本要求………………………………………………………….........3 1.2发挥部分……………………………………………………………….3 1.3说明    …………………………………………………………

Acadia Lab 6 轮盘游戏机

WRTnode 肯定不是亲生的... 果断转投Acadia —.— 不是国军不给力,奈何共军有高达 为啥不转树莓派?因为选做实验肯定有很多人用树莓派做...我抢不过他们,只能挑点冷门的蹭分_(:з」 ∠)_ 问板子的 EX 并没有问到 VNC 密码,另一个基友告诉我是 linario(快回来绝对不打你) 于是发现死活连不上板子(网上搜来的都是什么鬼...还要我用OTG线连板子,真是坑惨爹了) 只好 microUSB 先连串口重置了用户密码,再进去鼓捣了一番 VNC 通了之后就可以使用大杀器 Ar

树莓派学习笔记——使用标准PC104键盘

0 前言 本文将详细介绍树莓派的键盘设计.和多数的人的想法不同,世界上存在着各种各样不同的键盘,中国人使用的键盘和美国人使用的键盘相同,而树莓派源产自英国,英国的键盘和美国并不相同.国内多使用标准104键键盘,下面就讲讲如何配置. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. 1 PC104标准键盘 [wiki百科]--IBM PC keyboard 所谓PC104标准键盘是指键盘含有104个按键,国内和美国多使用该类型键盘,而欧洲大陆多使用PC105键盘,除了比PC104键

别小看树莓派 极客们玩出16个倍儿有趣的项目

别小看树莓派 极客们玩出16个倍儿有趣的项目 [摘要]极客和DIY爱好者使用树莓派进行无数小发明,其中一些项目非常有趣,比如机器人管家.高空拍照气球.傻瓜相机.复古游戏机等等. 腾讯数码讯(编译:Raul)新一代的树莓派体积更小.价格更低,可以利用的领域更多,因此它也成为了树莓派历史上最受欢迎的一代产品.而对于广大极客和DIY爱好者来说,如何好好的将树莓派利用一番,似乎也成为了非常有趣的项目.下面就让我们一起来看看在星球上都有哪些使用到树莓派的小发明让我们足够感兴趣. 1.定格相机 其实树莓派在

树莓派4B到货2019.08.30入门新体验

树莓派4B到货入门新体验 实不相瞒,喜欢这块板已经很久了,但是国内4GB内存的版本始终没货,.....等等等,终于到货了,迅雷不及眼耳之势赶紧下单...购买点亮开发板所需要的物件 顺便看到一个好看的外壳,真是太漂亮了,于是也下单购买一个,有人会问,购买主板有套餐选择,你为什么要自己买....这是我的毛病,干啥都喜欢DIY,其实主要是因为原装太TM贵,和媳妇申请不来购置款项.哈哈哈哈哈 1.购买清单 手上刚好有一个16G的SD卡 所需资料下载 所需要的资料如果不想自己下载直接到我的 百度网盘获取链

物联网开源操作系统,你了解多少?

物联网.开源.操作系统是目前IT业界的热门词汇,也正是这三个词汇构成了物联网开源操作系统.那么,对于物联网开源操作系统,你了解多少呢? 我们今天带大家一起走近物联网操作系统,同时介绍10款经典的物联网操作系统. 从物联网说起 物联网,英文名:Internet of Things,简称:IoT,是互联网概念的一种延伸,广义是指各种物理对象之间的联网,简单的说,就是"物物互联". "物"在物联网中,可以是各种各样的设备,例如监测心脏功能的植入物.监测农场动物的生物芯片.

基于arduino的红外传感系统

一.作品背景 在这个科技飞速发展的时代,物联网已经成为了我们身边必不可少的技术模块,我这次课程设计做的是一个基于arduino+树莓派+OneNet的红外报警系统,它主要通过识别人或者动物的运动来判断是否有人在附近再通过蜂鸣器的响叫来实现报警功能. 红外报警系统在生活中的应用也很广泛,例如博物馆的展品,家里的安防系统,公司的安防系统等,但是如何准确的报警,保证红外线的正确识别是这个系统的主要问题,本次的实践综合这些因素提出了比较靠谱的解决方案,用智能网关解决这一系列的问题. 二.元件原理 热释电

基于树莓派的微型气象站设计与开发

前言 树莓派(Raspberry Pi,RPi)是专门为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,可以运行Linux或者Windows 10 IoT Core操作系统.本文将利用树莓派和UWP(Universal Windows Platform)开发技术搭建一个可以实时监控的气象站系统. 硬件和涉及技术 硬件部分: 树莓派2或3一块,8G以上内存卡一张,读卡器(或带sd卡接口的电脑)一个: Dht11温湿度传感器一个,BMP180气压计一个: 土壤湿度计一个,MQ-2烟雾气敏传感器

利用lakka将树莓派打造为一台万能游戏机

最近发现个好玩的东西,lakka,是个什么呢?它是一个游戏模拟器,可不是那些简单的游戏模拟器,它能玩的游戏很多,街机游戏,红白机游戏,PS游戏等,算是集大成者. 给个官网的链接:Lakka官网 关于Lakka的介绍,直接官网截了个图说明下: 四点:强大,友好,低成本,开源!! 友好就表现在要实现这台万能游戏机太简单了!官网的步骤写的一清二楚.我来概括说明下步骤: 1.选择你的硬件平台 因为这个Lakka只是移植到了部分硬件上,如下图所示,如果要想在你想要的平台上实现的话,需要你自己编译源码了.