极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15634|回复: 7

《博哥Arduino学习笔记系列》- 第二课 Arduino语言基础

[复制链接]
发表于 2016-12-1 22:19:18 | 显示全部楼层 |阅读模式
本帖最后由 单片机菜鸟 于 2016-12-3 23:55 编辑

一、前言

       昨晚介绍了《初识Arduino》
      
     《博哥Arduino学习笔记系列》- 第一课 初识Arduino
             http://www.geek-workshop.com/thread-27936-1-1.html  (出处: 极客工坊)
   
       在初步认识什么是Arduino之后,我们就开始讲解一下Arduino语言基础,我们需要知道到底Arduino提供了什么平台以及什么语言来让我们做开发(技术基本上都是先学习开发语言,哈哈)。

二、Arduino语言以及程序结构

      Arduino使用C/C++语言编写程序(绝大部分的程序员大学都学了这个)。C语言是一种面向过程的编程语言,C++是一种面向对象的编程语言(虽然楼主已经忘光了这个)。早期Arduino核心库使用C语言编写,后来引进了面向对象的思想,目前最新核心库采用C与C++混合编程。
      通常所说的Arduino语言,就是指Arduino核心库提供的各种API的集合。这些API是对更底层的单片机支持库进行二次封装所形成的(玩过单片机的人估计都是经常和各种寄存器打交道)。Arduino提供的API可以让初学者不用理会单片机复杂寄存器配置,然后就能直观控制Arduino,提高开发效率。
      Arduino程序的基本结构如下:
     
  1. void setup() {
  2.   // put your setup code here, to run once(这里代码只运行一次):

  3. }

  4. void loop() {
  5.   // put your main code here, to run repeatedly(这里代码不断运行):

  6. }
复制代码

      
     这个模型可以这样理解(估计学过c语言的都知道main):
  1. int main(){
  2.     setup();
  3.     while(1){
  4.         loop();
  5.     }
  6. }
复制代码


         
三、语言基础

       对于学过C语言的人,可以直接大概扫描一下。

3.1)数据类型

    3.1.1)常量(程序运行中,值不能改变,常量可以是字符,也可以是数字),语句:
                   #define 常量名  常量值
                   例子:一般人都要用到调试功能(这里我个人是用串口),但是在真正最终代码的时候又想关闭调试功能,那么就可以这么用:

  1. #define MyDebugSerial Serial

  2. //该条语句用于使能DEBUG输出信息,屏蔽掉就不会输出debug调试信息
  3. #define DEBUG

  4. #ifdef DEBUG
  5. #define DBGLN(message)    MyDebugSerial.println(message)
  6. #else
  7. #define DBGLN(message)
  8. #endif

  9. void setup() {
  10.   MyDebugSerial.begin(9600);
  11.   DBGLN("setup end");
  12. }

  13. void loop() {
  14.   
  15. }
复制代码


    3.1.2)变量(程序中可变的值成为变量)

    1)整型(整数)
         Arduino可使用的整数类型以及取值范围如下:
         
         而在Arduino Due中,int型以及unsigned int型占用4字节(32位Arm处理器)
    2)浮点型(float double 实数,两者精度一样,都占有4字节(32位)内存空间,在Arduino Due中,double类型占用8字节(64位)内存空间)
    3)字符型(char类型,占用1字节,字符需用单引号引用,如:char data = ‘c’;)
    4)布尔型(boolean类型,只有两个:false和true,占用1字节内存空间)
    5)数组 (int a[5],char b[6],注意不要数组溢出,数组下标从0开始编号)                     
    6)字符串(char 字符串名称[字符个数]或者 String 字符串名称,我个人是喜欢String)

    3.1.3) 常见运算符

         
         

    3.1.4) 三大组织结构

          1)顺序结构(程序语句按先后顺序依次执行)
               
          2)选择结构(根据判断以决定下一步操作)
               
               形式1(单分支):
  1. if(表达式){
  2.     语句;
  3. }
复制代码

               形式2(双分支):
  1. if(表达式1){
  2.     语句1;
  3. }else{
  4.     语句2;
  5. }
复制代码

               形式3(多分支):
  1. if(表达式1){
  2.     语句1;
  3. }else if(表达式2){
  4.     语句2;
  5. }else if(表达式3){
  6.     语句3;
  7. }
  8. .....
复制代码

               形式4(超多分支,一般超过4个):
  1. switch(){
  2.    case 常量表达式1:
  3.           语句1;
  4.           break;
  5.    case 常量表达式2:
  6.           语句2;
  7.           break;
  8.    case 常量表达式3:
  9.           语句3;
  10.           break;
  11.      ......
  12.      default:
  13.           语句n;
  14.           break;
  15. }
复制代码

      注意:switch后的表达式的结果只能是整型或字符型,如果使用其他类型,则必须使用if语句。switch结构会将switch语句后的表达式与case后的常量表达式比较,如果相符就运行常量表达式所对应的语句;如果都不相符,则会运行default后的语句;如果不存在default部分,程序就直接退出switch结构。一般要使用break语句退出switch结构,如果没有使用break语句,则程序一直执行到有break的位置才退出或者运行完该switch结构退出。
      

          3)循环结构(重复结构,反复执行某一部分代码,while(当)循环和until(直到)循环)
         
          while型循环结构会先判断给定条件,当给定条件不成立,则退出该结构,当给定条件成立,继续执行A,如此反复;
          until型循环结构会先执行A,然后判断给定条件是否成立,若成立立即退出循环,不成立则继续执行A,如此反复;
         
          while循环形式:
  1. while(表达式){
  2.    语句;
  3. }
复制代码

          until循环形式:
  1. do{
  2.   语句;
  3. }while(表达式);
复制代码

          for循环形式:
  1. for(表达式1;表达式2;表达式3){
  2.    语句;
  3. }
复制代码


         
         
         循环结构中都有一个表达式用于判断是否进入循环,但有时候需要提前结束循环或者跳过某次循环,则使用break和continue实现;
         (1)break 终止当前选择结构或者循环结构
         (2) continue 由于跳过本次循环中剩下的语句

四、总结

          大概Arduino语法基础就讲到这里(有c语言基础的人直接扫描一下就可以了,毕竟语言是相通的),接下来我准备开始讲解实战,敬请期待。


博哥学习笔记系列:

《博哥Arduino学习笔记系列》- 第一课 初识Arduino
        http://www.geek-workshop.com/thread-27936-1-1.html

《博哥Arduino学习笔记系列》- 第二课 Arduino语言基础
        http://www.geek-workshop.com/thread-27938-1-1.html

《博哥Arduino学习笔记系列》- 第三课 经典LED
        http://www.geek-workshop.com/thread-27948-1-1.html

《博哥Arduino学习笔记系列》- 第四课 经典按键实验
        http://www.geek-workshop.com/thread-27958-1-1.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2016-12-2 07:04:13 | 显示全部楼层

哈哈哈 楼主忘记顶住一楼了
回复 支持 反对

使用道具 举报

发表于 2016-12-2 16:05:50 | 显示全部楼层
赞一个!楼主继续!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-2 16:35:35 | 显示全部楼层
dbtet 发表于 2016-12-2 16:05
赞一个!楼主继续!

楼主会陆续更新  敬请等待
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-2 22:22:05 | 显示全部楼层

等待更新哈哈哈
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 04:44 , Processed in 0.045094 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表