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

LCD液晶显示屏

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

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

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

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

声控装置

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

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

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

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

播放音乐

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

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

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

#include <LNDZ.h>
#define YIN 20
double t[][] = {
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, 1.5},
{, 1.5},
{, 1.5},
{, 1.5},
{, },
{, },
{, 1.5},
{, 1.5},
{, 1.5},
{, 1.5},
{, },
{, },
{, },
{-, },
{, },
{, },
{-, },
{, }
};
void init()
{
B_start();
for (int i = ; i < ; ++i)
t[i][] = t[i][] + ;
}
void repeat()
{
for (int i = ; i < ; ++i){
tone((int)t[i][], t[i][]);//音符,停留时间*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();
}
break;
case two:
{
tone(, );
}
break;
case three:
{
tone(, );
}
break;
default:
break;
}
ykq.next();
}
}

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

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

  1. (转)iOS Wow体验 - 第二章 - iOS用户体验解析(1)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第一部分,其余章节将陆续放出.上一 ...

  2. #Spring实战第二章学习笔记————装配Bean

    Spring实战第二章学习笔记----装配Bean 创建应用对象之间协作关系的行为通常称为装配(wiring).这也是依赖注入(DI)的本质. Spring配置的可选方案 当描述bean如何被装配时, ...

  3. HTML第二章:列表,表格,媒体元素

    第二章:列表,表格,媒体元素 列表:有三种,有序列表,无序列表,定义列表 1.有序列表:<ol></ol>            列表项:<li></li&g ...

  4. 【.NET 与树莓派】让喇叭播放音乐

    如果你和老周一样,小时候特别喜欢搞破坏(什么电器都敢拆),那下面这样小喇叭你一定见过. 这种喇叭其实以前很多录音机都用,包括上小学时买来做英语听力的便携录音机.嗯,就是放录音带的那种,录音带也叫磁带或 ...

  5. Inno调用dll --- 实现背景播放音乐

    Inno 播放音乐可以调用系统api函数mciSendString来实现,而mciSendString函数存在C:\Windows\System32\winmm.dll中,因此最终只要成功从该dll文 ...

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

    Stealth视频教程学习笔记(第二章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...

  7. 学习opencv中文版教程——第二章

    学习opencv中文版教程——第二章 所有案例,跑起来~~~然而并没有都跑起来...我只把我能跑的都尽量跑了,毕竟看书还是很生硬,能运行能出结果,才比较好. 越着急,心越慌,越是着急,越要慢,越是陌生 ...

  8. (转)iOS Wow体验 - 第二章 - iOS用户体验解析(2)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第二部分,其余章节将陆续放出.上一 ...

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

    第二章 Android系统与嵌入式开发 第二章首先要先了解Android和嵌入式Lnux系统有什么区别和联系,嵌入式Linux系统是在嵌入式设备中运行Linux系统:Android系统是在嵌入式设备中 ...

随机推荐

  1. git学习--更新本地仓库单独文件

    命令: git checkout origin/dev .gitignore 从远端 dev 仓库,更新本地签出分支的 .gitignore 文件

  2. 六度分离 (folyd算法)

    1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为"小世界现象(small world phenomenon)"的著名假说,大意是说,任何2个素不相识的人中间最多只隔着 ...

  3. LeeCode(No4 - Median of Two Sorted Arrays)

    There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...

  4. canvas基础入门(一)canvas的width、height于css样式中的宽高区别

    canvas的width.height于css样式中的宽高对画布的内容显示是有所区别的 1.在canvas标签下调用他的width和height,而且是没有单位的宽高,这种指定canvas大小的方法也 ...

  5. MyCnblog Style

    以下内容添加到页脚HTML代码处 <style> #leftmenu ul { display: none; } .cnblogs-markdown pre code, .cnblogs- ...

  6. 【Java】Java中的Collections类——Java中升级版的数据结构【转】

    一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数 ...

  7. Caused by: java.net.URISyntaxException: Relative path in absolute URI

    <property> <name>hive.exec.scratchdir</name> <value>/tmp/hive</value> ...

  8. CAD安装失败怎样卸载CAD 2013?错误提示某些产品无法安装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  9. CAD安装失败怎样卸载CAD 2018?错误提示某些产品无法安装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  10. 3d Max 2012安装失败怎样卸载3dsmax?错误提示某些产品无法安装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...