《Microduino实战》——3.2 “Hello World!”—— 开启编程之旅

3.2 “Hello World!”—— 开启编程之旅

在编程的学习中,往往都是从最简单的“Hello World!”开始,这就好像学武功的,最初入门的起手式一样。这里也不例外,为了让初学者尽快地熟悉整个开发流程,笔者选择了最简单的硬件连接,以及很简单的程序代码,实现的功能只是让核心控制模块通过串口向计算机发送信息“Hello World!”。
接下来通过一系列详细的步骤向读者介绍Microduino整个开发过程。
注意:本书所使用示例均采用Windows下的开发环境。

  1. 准备硬件

在第一次实践中,只选用了两个模块,即Microduino-Core和Microduino-USBTTL,再加上一根数据线,没有其他的电子元器件。

  1. 连接硬件
    如图3-15所示,将Microduino-Core与Micorduio- USBTTL堆叠连接,然后用一根USB线与计算机相连。请查看Microduino-Core上的LED是否亮起,亮起说明控制板供电正常。
  2. 选择正确的芯片类型和下载端口
    在编写程序之前,首先要知道自己用了什么类型的控制板,如果选错的话,会导致下载程序失败。

那如何判断自己所使用的微控制芯片类型呢?首先,从Microduino-Core的前板可以看到ATmega的微控制器芯片,上面标出了芯片的具体型号,比如ATmega328P。再通过0电阻的接法来判断芯片的工作方式。如图3-16所示,在左下角有两个贴片引脚,如果0电阻接在R3的位置上,说明芯片工作电压为5V,工作频率为16MHz;如果0电阻接在了R4的位置上,说明芯片的工作电压为3.3V,工作频率为8MHz。

打开IDE,根据上面的步骤所确定的参数,在菜单栏“工具”选项中的“板卡”中选择相应的型号,如图3-17所示。

本书使用的是Microduino-Core(ATmega328P@16M,5V)。
其次,当Microduino-USBTTL连接到PC上后,IDE串口会识别出相应的串口。如图3-11所示,本书所使用串口是COM4。

  1. 编写和编译程序
    Arduino IDE的开发界面比较简单,提供了代码编辑、编译和串口调试的功能,如图3-18所示。

在代码编辑区输入并保存程序,然后单击“√”按钮,开始编译,如图3-19所示。如果没有语法等问题的话,会显示编译完毕,否则会提示编译出错。

  1. 下载并查看现象
    单击Arduino IDE工具栏中的“→”图标,下载程序。如果下载成功的话,在状态栏中会有下载完毕的提示。

注意 如果第1步中控制板型号选择错误,尽管提示下载完毕,但在信息栏中会输出一些警告,比如:
avrdude: stk500_getsync(): not in sync: resp=0x00
这时要重新确认控制板型号,确认无误后,重新选择菜单栏“工具”下的板卡选项。
在IDE菜单栏“工具”下选择计算机识出来的串口,如果不知道使用了哪个串口,可以在设备管理器中查看。然后单击IDE右上角的“串口监视器”,会出现如图3-20所示的界面。设置串口的波特率为9600,观察串口接收窗口的状态,每隔1s,会打印出一行“Hello World!”的信息。

至此,读者应该大致了解了整个过程,心里可能会想:It’s so easy!读者也有可能对源代码产生各种疑问,背景源代码固定不添加任何注释,只是让读者直观地看看Arduino程序的基本结构。疑问暂时保留着,我们在后面的实践中,再给读者进一步介绍各种编程的基本知识,最终让读者通过软件的方法去接触实际的物理世界。

时间: 2024-11-09 00:29:23

《Microduino实战》——3.2 “Hello World!”—— 开启编程之旅的相关文章

Jennifer决定继续她的编程之旅

去年的4月1日,我开始了一个项目,这个项目改变了我的人生.听起来这像是陈词滥调,但是这是真的.去年的4月1日是我的180天180网站的第一天,当时我非常非常紧张.我不知道如何编写代码.我的电脑坏了,我只好用一个借来的笔记本电脑.我开始了这个疯狂的学习挑战,如果我失败了,每个人都能看到.我真是太疯狂了.我记得当时自己在想如果这个项目失败了,我可以声称它是一个煞费苦心的愚人节笑话.不过同时我也是非常非常兴奋.我终于开始学习创造我想做的东西了!我很久以前就想学习编写代码了,但是那些书籍和网上的教程看起

助您开启高效编程之旅:10款云端IDE推荐

随着云技术的发展,各种基于云端的IDE也相继出现.相比于传统的IDE,云端IDE可以让多个程序员同时在不同的设备上查看并编辑代码,大大提升工作协同和效率.下面为大家分享10款非常好用的基于云端的IDE,或许能为你开启高效编程的大门: 1) Cloud9 公认最强大的云端IDE之一,程序员可以在任何地方任何时间运行和调试代码.Cloud9 IDE支持的语言也很丰富:http://www.aliyun.com/zixun/aggregation/33906.html">JavaScript,

《Microduino实战》——导读

前 言 自2005年Arduino横空出世以来,开源硬件就像Linux一样,很快风靡全球.Arduino最初只是为学生设计的一款既便宜又易用的微控制器板,但如今在"创客运动"的大背景下取得了巨大的成功. Arduino使用的是Atmel VAR 8位微控制器,是一个软硬件开源的平台.不仅开放软件的源代码,而且硬件电路设计图同样可以从网络上下载.任何用户都可以利用这些开放的资源,再根据自己的需要进行修改和定制,发布适合自己的软件工具和硬件设计.此外,它不像传统的微控制器程序,只有有一定电

跟老男孩学Linux运维:Shell编程实战1.3 如何才能学好Shell编程之“老鸟”经验谈

1.3 如何才能学好Shell编程之"老鸟"经验谈 学好Shell编程的核心:多练→多思考→再练→再思考,坚持如此循环即可! 从老男孩IT教育毕业的一名学生曾在工作多年后返校分享了一篇"如何学好Shell编程"的讲稿,经过老男孩的整理后和读者分享如下. (1)掌握Shell脚本基本语法的方法 最简单有效的方法就是将语法敲n+1遍.为什么不是n遍呢?因为这里的n指的是你刚开始为掌握语法而练习的那些天(21天法则),而1则是指在确定掌握语法后每天都要写一写.想一想,至少

Python中线程编程之threading模块的使用详解

  这篇文章主要介绍了Python中线程编程之threading模块的使用详解,由于GIL的存在,线程一直是Python编程中的焦点问题,需要的朋友可以参考下 threading.Thread Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法;另一种是创建一个threading.Thread对象,在它的初始化函数(__init__)中将可调用对象作为参数传入.下面分别举例说明.先来看看通过继承th

Android编程之SurfaceView实例详解_Android

本文实例讲述了Android编程之SurfaceView用法.分享给大家供大家参考,具体如下: 关于surfaceView相关知识: View和SurfaceView主要区别: 1. View只能在UI线程中刷新,而SurfaceView可以在子线程中刷新 2. SurfaceView可以控制刷新频率 SurfaceView几个重要的方法: 1. 继承SurfaceView 后调用getHolder()方法可以获取到mSurfaceHolder对象这个对于可以控制SurfaceView的绘制 2

Android编程之SQLite数据库操作方法详解

本文实例讲述了Android SQLite数据库操作方法.分享给大家供大家参考,具体如下: SQLite and Android SQLite简介 SQLite是一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.此外,它还是开源的,任何人都可以使用它. SQLite由以下几个组件组成:SQL编译器.内核.后端以及附件.SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试.修改和扩展SQLite的内核变得更加方便. SQLite支持的数据类型包括: 1.

iOS开发:多线程编程之NSThread的使用详解

  1.简介: 1.1 iOS有三种多线程编程的技术,分别是: 1..NSThread 2.Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQueue的使用) 3.GCD 全称:Grand Central Dispatch( iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用) 这三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的. 这篇我们主要介绍和使用NSThr

ruby元编程之method

  这篇文章主要介绍了ruby元编程之method_missing的一个使用细节,本文介绍在使用method_missing时造成死循环的一个现象,需要的朋友可以参考下 我们知道顶级域,定义域的self是啥? 代码如下: puts self #main puts self.class #Object 我们知道当一个方法被调用的时候,如果没有对象接受,默认就是self,如: 代码如下: def tell_me_who puts self end tell_me_who #main 方法调用是这样的