15202| 2
|
[入门] 【S.O.S求救信号】基于Mind+ Ardunio入门教程02 |
本帖最后由 DFEDU 于 2019-12-2 10:15 编辑 本项目将继续使用项目一的搭建的电路,但我们这里将改变一下代码,就能让我们的LED变为S.O.S求救信号了。这是国际摩尔斯码求救信号。摩尔斯码是一种字符编码,英文的每个字母,都是由横杠和点不同的组合而成。这样的好处是,使用简单的两种状态,就能来传递所有的字母和数字,非常的简便!不得不佩服前人的聪明吧! 我们正好可以通过LED开关两种状态来拼出一个个字母。通过长闪烁和短闪烁来表示横杠和点。这个项目中,我们就拼写S.O.S这三个字母。 通过查阅摩尔斯码表,我们可以知道,字母“S”用三个点表示,我们这里用短闪烁替代,字母“O”则用三个横杠表示,用长闪烁替代。 图形化编程 在输入指令前我们先来理解样例程序2-1,先不要急着输入这段代码,只是看一下。 样例程序 2-1: 连接好主板和电脑,打开Mind+载入扩展的Arduino UNO库,输入样例程序2-2所示程序。 样例程序2-2 图形化指令学习 代码学习 本项目的C代码如下。接下来我们将依次学习每一行代码的意义 [mw_shl_code=applescript,true]// 主程序开始 void setup() { } void loop() { for (int index = 0; index < 3; index++) { digitalWrite(13, HIGH); delay(150); digitalWrite(13, LOW); delay(100); } delay(100); for (int index = 0; index < 3; index++) { digitalWrite(13, HIGH); delay(450); digitalWrite(13, LOW); delay(100); } delay(100); for (int index = 0; index < 3; index++) { digitalWrite(13, HIGH); delay(150); digitalWrite(13, LOW); delay(100); } delay(100); }[/mw_shl_code] 当程序运行后我们可以看到,灯闪了3次而不是只闪了1次。我们再来看一下,在loop主函数中包含了三个独立的代码段,每一段的开头都能发现for的字样,这就是我们用来解决重复执行相同代码的好帮手。正式因为使用了for循环才能产生这样的效果。 for 循环 for语句格式如下: 第一轮:1 → 2 → 3 → 4 第二轮:2 → 3 → 4 … 直到2不成立,for循环结束。 来看下我们程序中的for循环: [mw_shl_code=applescript,true]for(int index=0;index<3;index++){ …… } [/mw_shl_code] 第一步:初始化变量index=0。 第二步:判断index是否小于3。 第三步:判断第二步成立,for循环中执行LED亮与灭。 第四步:index自加,变为1。 (index++这句话表示把index的值增加1,等同于写成index=index+1,也就是把index当前的值变为index+1,再赋给index一遍。0变为1,第二轮循环则1变2。) 第五步:回到第二步,此时index=1,判断是否小于3。 第六步:重复第三步。 …… 直到index循环到3时,判断index<3不成立,自动跳出for循环,程序继续往下走。 我们这里需要它循环3次,所以设置为index<3。从0开始计算,0到2,循环了3次。那如果要循环100次的话呢?答案:for(int index=0;index<100;index++){} 必须说明的,花括号必须成对出现,如有遗留编译器编译时将不通过。有个小技巧大家可以学一下,在开始写花括号的时候,就先把“{”“}”都写上,之后再在两个括号之间输入代码,这样就不会出现写到最后括号对应不上的情况。在本章的课后作业中,我们就要开始尝试自己敲击键盘,在手动编辑区输入代码。这些小细节还需要大家牢记在心。 我们在写一些判断语句的时候会经常用到一些比较运算符,比如大于,小于等等。下面就说下常用的比较运算符。 比较运算符 “<”称为比较运算符。比较运算符在代码中是用作判断的,比较两个值。我们常用的比较运算符有: ==(等于) >(大于) !=(不等于) <=(小于等于) <(小于) >=(大于等于) 当然,除了比较运算符外,程序也可以用的+、-、*、/(加、减、乘、除)这些常用的算术运算符。 现在知道for循环是如何运作吧!我们代码中有3个for循环:第一个for循环3次,短闪烁3次,代表输出3个点,也就是字母“S”。第二个for循环同样循环3次,长闪烁3次,代码输出3个横杠,也就是字母“0”。第三个for循环又来输出个“S”。 在每for循环之间有个小延时100毫秒,是S.O.S字母之间有个清晰的停顿说明。最后,在回到主函数loop重新执行一遍之前,有个相对较长的延时,为0.5秒。 好了,我们S.O.S信号源项目就算告一个段落了。有所收获吗? 课后作业 学习了两个项目的基础,让我们来自己动手输入一下本项目“代码学习”中的一行行语句吧! 点击“手动编辑”即可通过键盘输入代码! *进行图形化编程来修改程序的时候,只会更改“自动生成”中的代码。若此时对话框处于“手动编辑”,点击“上传到设备”,并不能够将图形化编程转化的代码烧录到板中!需要我们再点击“自动生成”进行切换,再上传,才能够更新板子中的程序。 C语言编程就好比写字,字迹要求横平竖直、排版工整、美观隽秀的同时还要保证一定的书写速度。风格良好的代码亦是如此,语句格式、缩进对齐与输入代码的效率,一并需要。这两者都得积累平时一点一滴的水磨工夫,才能养成良好的习惯,写代码时更得心应手,为项目六及其之后的纯代码学习夯实基础! *仅编译后出现报错的可能原因(1): *出现这一问题的原因是在某一行语句指令的末端,没有加上 ; 或者输入的是中文输入法中的分号 此外再用Mind+做个课后习题:交通信号灯吧~下图是整个一个运行过程,虚线框的是程序循环的部分。 提示:以上我们是只点亮的一个LED灯,现在需要点亮三个LED灯。电路连接的原理是和一个灯相同,程序中需要改变的是用三个数字口来分别控制3个LED灯。自己动手试一下吧! |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed