第二章 LCD液晶显示屏&声控装置&播放音乐&遥控器

这节我将带大家了解亮宁机器人编程的基础部分。

LCD液晶显示屏

LCD液晶显示屏是在实现某种功能和调试中不可缺少的部分,接下来我带大家学习,如何使用LCD液晶显示屏。

首先我们把LCD液晶显示屏插入主板的指定接口,然后接上数据线,打开Arduino输入以下程序。

代码:1-1 lcd液晶显示器

#include <LNDZ.h>
lc lcd;   //声明一个lcd设备
void init()
{
  lcd.begin(16, 2);//告诉电脑当前显示器是一行16个字符,2行的规格
  lcd.bg(1);      //开启背光,0则是关闭背光
}
void repeat()
{
    lcd.clear();//清屏
    lcd.print("Welcome to LCD");//输出内容
    delay(200);//防止闪屏
}

上传程序成功后,你会在机器人的LCD液晶显示器上看到"Welcome to LCD"字样。在这里先和大家讲一下亮宁机器人程序的结构,首先#include<LNDZ.h>是亮宁机器人的标准库,机器会从void init()开始执行程序,执行完后就开始执行void repeat()里面的程序,你可以把这个函数理解为while(1){...}。这就是亮宁机器人程序的基本结构。

声控装置

大家应该都看过楼梯间的声控开关吧,那声控开关到底是采用什么样的原理,下面我来带领大家探究一下。

首先我们还是电脑接上数据线并打开Arduino输入以下程序:

代码:1-2 声控装置

#include <LNDZ.h>
lc lcd;
void init()
{
  lcd.begin(16, 2);
  lcd.bg(1);
}
void repeat()
{
    int d=sound();//获取声音的值
    lcd.clear();
    lcd.print(d);
    delay(200);
}

在上传程序成功后你可以看到LCD液晶显示器上会出现一个数字,你试着在主板旁边击掌,显示器上的数值会随着你击掌的声音越大而越小,所以你可以通过值来判断当前的声音大小。

播放音乐

还记得第零章的警报程序吗!仔细研究的同学会发现,机器人发声是因为beep()起到的作用。因为beep(300),这个函数的意思是鸣叫300ms;然后“delay(200)”,这个函数的意思是延迟200ms,也就是暂停机器发出声音200ms。你会觉得这个声音很单调乏味,所以下面我来带领大家学习一下亮宁机器人怎么实现音乐的播放。首先我们一起来了解下机器人发声函数的基本用法。

#include <LNDZ.h>
void init()
{
 B_start();
 tone(11,2); //括号第一个参数为音符,第二个参数表示停留时间 参数*100ms
tone(11,2);//11~17表示低音的1~7
tone(21,2); //21~27表示中音的1~7
tone(31,2); //31~37表示高音的1~7
}

在学习完发声函数的基本用法后,我们再来用亮宁机器人弹一首《两只老虎》吧!可能有的人会想说,哇就弹《两只老虎》的音乐,音符程序就要写这么多,要是更大的曲子该怎么办呀!现在该发挥你的聪明才智的时候了,下面请看以下的程序代码。

代码:1-3 两只老虎音乐

#include <LNDZ.h>
#define YIN 20
double t[32][2] = {
  {1, 3},
  {2, 3},
  {3, 3},
  {1, 3},
  {1, 3},
  {2, 3},
  {3, 3},
  {1, 3},
  {3, 3},
  {4, 3},
  {5, 6},
  {3, 3},
  {4, 3},
  {5, 6},
  {5, 1.5},
  {6, 1.5},
  {5, 1.5},
  {4, 1.5},
  {3, 3},
  {1, 3},
  {5, 1.5},
  {6, 1.5},
  {5, 1.5},
  {4, 1.5},
  {3, 3},
  {1, 3},
  {1, 3},
  {-5, 3},
  {1, 6},
  {1, 3},
  {-5, 3},
  {1, 6}
};
void init()
{
  B_start();
  for (int i = 0; i < 32; ++i)
    t[i][0] = t[i][0] + 20;
}
void repeat()
{
  for (int i = 0; i < 32; ++i){
    tone((int)t[i][0], t[i][1]);//音符,停留时间*100
  }
}

这样写是不是代码量要小很多了!所以程序不要盲目地编写,在写之前要想想怎么“偷懒”哦!

上传完程序,按下开始按钮。你就会听见机器播放《两只老虎》了,是不是很棒。你也可以尝试一下其他音乐。

 

遥控器

#include <LNDZ.h>
ir ykq;//声明遥控器
der jst;//声明接收器
void init()
{
  ykq.start();
  B_start();
}
void repeat()
{
  if (ykq.decode(&jst)) {    //机器收到遥控信号
    switch (jst.value)    //判断按下哪个键
    {
      case one:
        {
          beep(500);
        }
        break;
      case two:
        {
          tone(17, 10);
        }
        break;
      case three:
        {
          tone(37, 10);
        }
        break;
      default:
        break;
    }
    ykq.next();
  }
}

程序上传完毕后,用遥控分别按下1,2,3键后,机器会发出不同的声音。通过观察和实验代码,大家应该对遥控器程序的基本使用方法有了一定的了解。不过一定要注意的是:这一段程序一定要放在repeat()里面,因为机器要不停的检测遥控所发出的信号。如果要查找其他的按键名,大家可以打开“亮宁机器人可视化编程系统”查找里面的具体图文模块说明,在可视化编界面里面会告诉你怎么用。

原文地址:https://www.cnblogs.com/StringSir/p/8443260.html

时间: 2024-10-31 02:55:04

第二章 LCD液晶显示屏&声控装置&播放音乐&遥控器的相关文章

网页音频API 第二章

第二章 完美的时间模型和时延网页音频API比<audio>标签更强大的一处在于它有一个低延迟.精准的时间模型.对于游戏和交互式应用来说,低延迟是非常重要的,因为你通常需要非常快的用声音来响应用户操作.如果这个反馈不是即时的,用户会感觉到这个延迟,这是不让人满意的.实际上,由于人类听觉的缺陷,延迟的误差可高达20毫秒,不过这个数字还会随着很多其他的因素来改变.精准的时间模型使你能够把事件安排在未来特定的时间.这对用脚本控制(播放)的场景和音乐应用来说非常有用. 时间模型音频上下文的一个关键点在于

第二章 知识图谱——机器大脑中的知识库

第二章 知识图谱——机器大脑中的知识库 作者:刘知远(清华大学):整理:林颖(RPI) 版权所有,转载请注明出处 知识就是力量.——[英]弗兰西斯·培根 1 什么是知识图谱 在互联网时代,搜索引擎是人们在线获取信息和知识的重要工具.当用户输入一个查询词,搜索引擎会返回它认为与这个关键词最相关的网页.从诞生之日起,搜索引擎就是这样的模式,直到2012年5月,搜索引擎巨头谷歌在它的搜索页面中首次引入“知识图谱”:用户除了得到搜索网页链接外,还将看到与查询词有关的更加智能化的答案.如下图所示,当用户输

播放音乐案例

播放音乐案例 分析: 和上一篇文章的结构是一样的,只不过我们需要在这里里面加上播放音乐的一些操作: 其实也就是调用系统的播放音乐的API而已,写在服务里面就好, //媒体播放器 private MediaPlayer player; 1 public void onCreate() { 2 File file=new File(Environment.getExternalStorageDirectory(),"a.mp3"); 3 player =new MediaPlayer();

深入浅出Zabbix 3.0 -- 第二章 Zabbix Web操作与定义

第二章  Zabbix Web操作与定义 本章介绍Zabbix 中一些基本概念的定义和web前端页面的操作,包括Zabbix中使用的一些术语的定义,Web页面中用户管理.主机和主机组的管理,以及监控项.模板.触发器.告警的管理和操作,还有Graphs.Screens.Maps及Reports等.通过本章的学习掌握一些基本概念并能够通过Web页面的操作完成对Zabbix的管理. 2.1 定义 hosts(主机) Zabbix中需要监控的服务器.交换机及其他设备我们都统一称作host,这些设备与Za

第二章 Android系统与嵌入式开发

第二章 Android系统与嵌入式开发 第二章首先要先了解Android和嵌入式Lnux系统有什么区别和联系,嵌入式Linux系统是在嵌入式设备中运行Linux系统:Android系统是在嵌入式设备中运行Android系统. 其区别就是Android系统和Linux系统的区别.Android系统的底层是Linux的内核,上面跑的是Android的java虚拟机.Android系统的UI做的比Lnux好很多. 首先我们应该先了解一下什么是嵌入式,对于嵌入式来说,它是一种“完全嵌入受控器件内部,为特

《无码的青春》 第二章 明羽的过去式

回到住的地方,登陆vpn,远程重启了一下服务器,查看了一下服务器日志,发现没有什么异常,给jerry发了一封email就ok了.刚打开微信,就看到沈思雨发来的消息,她回宿舍了.其实沈思雨是我大学的同班同学,毕业后,她在这个城市读研究生,我也在这个城市工作,而刚到这个城市的沈思雨并没有朋友,我很快成了她无话不谈的男闺蜜.打电话给那哥们,他正在lol,问我要不要一起玩,我说累了,不想玩. 程序员的日子总是过得那么快,不知不觉,一周就过去了.周六上午,当然是睡到自然醒的节奏,打开手机,看到微信上有一条

Stealth视频教程学习笔记(第二章)

Stealth视频教程学习笔记(第二章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提炼出其中的知识点和思路思想. 视频地址在(http://www.youku.com/playlist_show/id_23389553.html),是一个Stealth的专辑,这里只放上本章第一个视频,其它的大家在上面的链接中慢慢看吧. 第二章有一个视频是FLV格式的,我没法把字幕嵌入其中,所以优酷

手机影音第十五天,利用service实现后台播放音乐,在通知栏显示当前音乐信息等

代码已经托管到码云上,有兴趣的小伙伴可以下载看看 https://git.oschina.net/joy_yuan/MobilePlayer 先来一张目前的音乐播放器的效果图,当播放时,手机的状态通知栏也会有音乐信息显示. 这里可以看到有歌名.演唱者,还有歌曲的总时间,当前播放时间,当前播放进度,音乐暂停.下一首,上一首,音乐循环模式(单曲循环,顺序播放.循环播放)功能的实现.下一步就是把中间空白的部分填充歌词,然后做成根据进度显示歌词. 由于这次的内容有点多,是写了一天半的代码,讲的没那么细,

第二章 Mysql数据类型简介

第二章 Mysql数据类型简介 ·     第一节:整数类型.浮点数类型和定点数类型 整型: ·TinyInt   (1字节) ·SmallInt   (2字节) ·MediumInt  (3字节) ·Int和Integer(4字节) ·BigInt    (8字节) 浮点数和定点数: ·Float   (4字节) ·Double  (8字节) ·Decimal(M,D) <定点数>(M表示总长度<包含小数点>,D表示小数位数) ·      第二节:日期与时间类型 ·Year