[ Ruff 开发套件 ] Lesson 3 - LCD 抢答器

news/2024/6/18 4:59:19

图片描述

第三课 LCD 抢答器

  • 谁将登场

    • LCD 模块

    • 按键模块

  • 你将学会

    • LCD 模块的初级使用

介绍

第一课课后作业“抢答器”大家实现了么?这节课将实现一个带 LCD 屏的抢答器:

  • LCD 屏初始显示 “Welcome !” 欢迎字样;

  • 3秒后,显示“Who faster?”;

  • 按键 A 按下,板载蓝灯(led-b)亮,LCD 屏显示 “Blue faster!” ;

  • 按键 B 按下,板载红灯(led-r)亮,LCD 屏显示 “Red faster!” ;

  • 按键 C 用于重置抢答器,C 键按下,LCD 屏显示 “Who faster?” ;

    • 按键 A 或 B 按下后,直到按下按键 C 重置抢答器,即使另一按键按下,LCD 屏也不会有变化。

    • 直到显示“Who faster?”,之前按键 A 或 B 按下 LCD 屏也不会有变化。

元件

  • Ruff 开发板

  • 大按键模块(3个)

  • LCD 模块

外设添加

向项目中添加三个大按键模块,

  • button_r 对应红按键

  • button_b 对应蓝按键

  • button_reset 对应重置按键,
    model 都选择 CK002,驱动版本选择最新版。

    • 添加红色大按键;

    • 添加蓝色大按键;

    • 添加重置按键;

  • 向项目中添加名为lcd的 LCD 模块,

    • model 选择 lcd1602-02,驱动版本选择最新版。

    • 添加 LCD 模块

代码

  • 在编写代码之前需要完成 Ruff 开发板的设置连接、硬件连线。如果有疑问大家可以在[第零课]()了解,也可以到这里了解。

  • 想了解 Ruff 应用开发步骤和模型,可以到这里。

初始化

我们首先初始化 LCD 屏以及抢答标志位:

  • 初始化抢答标志位为 false,该标志位用于控制是否允许抢答;

  • 打开 LCD 屏幕,并打印欢迎语;

  • 很短的延迟后,使用print() 函数在屏幕上打印抢答开始语;

  • 设置抢答标志位为 true,允许红蓝双方抢答;

  • 抢答器初始化代码如下:

    var r_or_b = false;                       //抢答标志位
    $('#lcd').turnOn();                          //打开 LCD 屏开关    
    $('#lcd').print('welcome!');              //打印欢迎语
    setTimeout(function () {
            $('#lcd').clear();                  //延时3s,清空屏幕
            $('#lcd').print('Who faster?');    //打印抢答开始语
            r_or_b = true;                    //设置抢答标志位
        }, 3000);                  
  • 可以在这里进一步学习 LCD 模块知识;

抢答

接下来,我们实现抢答。

  • 检测红蓝按键模块的 push 事件,一旦检测到信号,执行相对应的“行为”函数。

  • 行为函数中判断抢答标志位是否为 true:

    • 如果为 true,

      • 使用clear() 函数将 LCD 清屏;

      • 使用print() 函数打印“ red win !” 或 “blue win !”;

      • 设置抢答标志位为 false,红蓝双方抢答无效。

    • 如果为 false,不进行操作。

  • 想复习大按键模块的知识,可以前往Ruff-大按键模块。

  • 大按键抢答实现:

    //红色按键抢答
    $('#button_r').on('push', function () {
        if (r_or_b) {
            $('#lcd').clear();
            $('#lcd').print('Red faster!');
            r_or_b = false;
        }
    });
    
    //蓝色按键抢答
    $('#button_b').on('push', function () {
        if (r_or_b) {
            $('#lcd').clear();
            $('#lcd').print('Blue faster!');
            r_or_b = false;
        }
    });

重置

抢答器的多次使用需要将抢答器重置到初始状态。

我们将解决:如何重置抢答器

  • 检测重置按键模块的 push 事件,一旦检测到信号,执行相对应的“行为”函数。

  • 行为函数中

    • 使用clear() 函数将 LCD 清屏;

    • 使用print() 函数打印抢答开始语;

    • 设置抢答标志位为 true,允许红蓝双方抢答;

  • 抢答器重置实现:

    $('#button_reset').on('push', function () {
        $('#lcd').clear();
        $('#lcd').print('Who faster?');
        r_or_b = true;
    }
    );

最后,

  • 初始化抢答重置 的实现放在 $.ready 事件下。

完整代码

'use strict';

$.ready(function (error) {
    if (error) {
        console.log(error);
        return;
    }

    var r_or_b = false;
    $('#lcd').turnOn();
    $('#lcd').print('welcome!');
    setTimeout(function () {
            $('#lcd').clear();
            $('#lcd').print('Who faster?');
            r_or_b = true;
    }, 3000);

    $('#button_r').on('push', function () {
        if (r_or_b) {
            $('#lcd').clear();
            $('#lcd').print('Red faster!');
            r_or_b = false;
        }
    });
  
    $('#button_b').on('push', function () {
        if (r_or_b) {
            $('#lcd').clear();
            $('#lcd').print('Blue faster!');
            r_or_b = false;
        }
    });
  
    $('#button_reset').on('push', function () {
        $('#lcd').clear();
        $('#lcd').print('Who faster?');
        r_or_b = true;
    });
});

课后练习

为本节课的抢答器加入倒数计时功能,完善成一个实用的抢答器:

  • LCD 屏初始显示 “Welcome !” 欢迎字样;

  • 2秒后显示“Who is the faster?”,

  • LCD 屏上开始倒数3秒:“3”“2”“1”“GO!!!”;

  • 按键 A 按下,板载蓝灯(led-b)亮,LCD 屏显示 “Blue faster!” ;

  • 按键 B 按下,板载红灯(led-r)亮,LCD 屏显示 “Red faster!” ;

  • 按键 C 用于重置抢答器,C 键按下,

    • LCD 屏显示 “Who is the faster?”

    • 开始倒数3秒,3秒后A 和 B 按键可以抢答;

  • 按键 A 或 B 按下后,直到按下按键 C 重置抢答器,即使另一按键按下,LCD 屏也不会有变化。


http://www.niftyadmin.cn/n/3501649.html

相关文章

php install stompgoogle 搜索,Stomp

此扩展允许php应用程序通过简单的面向对象和过程接口与任何与Stomp兼容的Message Broker进行通信。[Stomp官方网站](https://stomp.github.io/)STOMP是简单(或流)面向文本的消息传递协议(一般用于邮件服务?)[https://pecl.php.net/package/stomp](https://pecl.php.…

PullToRefresh和SwipeRefreshLayout的使用

PullToRefresh是一套实现非常好的下拉刷新库(下载地址:https://github.com/chrisbanes/Android-PullToRefresh),它支持: 1.ListView 2.ExpandableListView 3.GridView 4.WebView 5.ScrollView 6.Horizontal ScrollView…

Linux搭建sendmail服务器

一、安装前准备1.设置静态IP http://love11forever.blog.51cto.com/11313259/18507322.关闭iptableshttp://love11forever.blog.51cto.com/11313259/18469353.关闭selinuxhttp://love11forever.blog.51cto.com/11313259/1846943 二、安装、配置DNS服务1.安装DNS服务yum in…

linux vi查找字符串查找字符串,Linux的vi查找字符串

使用vi编辑器编辑长文件时,常常是头昏眼花,也找不到需要更改的内容。这时,使用查找功能尤为重要。方法如下:1、命令模式下输入“/字符串”,例如“/Section 3”。2、如果查找下一个,按“n”即可。要自当前光…

网页 console的使用

通过按下回车键会触发执行命令,而有时候我们需要执行的逻辑比较复杂,需要多行才可以完成,可以通过点击“shift回车键”来实现换行。在console中,可以实现对按钮的监控。比如此时按钮的文本值为“不可点击”,类名为“bu…

pku 1724 ROADS BFS +优先队列

http://poj.org/problem?id1724 题意: Bob现在有的钱数为k,他想从城市1到城市n,给出m条连接两个城市的有向边,并且给出路的长度w,和经过这条路要交的钱数c。问Bob在花的过路费不超过k的前提下能到达城市n的最短路径为…

5320 软件集合

用户名:fkedwgwy密码:fkedwgwy 《爱她就要学会用她》 目前软件: UC6.0 QQ2008 来电通 天气通 掌上书院 【090609】【5320 软件集合】超强音乐 播放器 MobiFactor PowerMp3 v1.17 完全版 【090609】【5320 软件集合】火烧图文Burn1.2汉化版 【090610】…

centos7 中ifconfig提示-bash

1、检查是否存在ifconfig命令:cat /sbin/ifconfig2、不存在,安装net-toolsyum upgradeyum install net-tools转载于:https://blog.51cto.com/wd0809/1852722