• Arduino学习笔记


    镇楼图

    Pixiv:ATDAN-



    〇、Arduino

    软件下载地址:官方

    然后准备好开发板(推荐UNO R3)

    Arduino开发板分为主板和数据线。只要将数据线连接至电脑,然后从电脑使用Arduino IDE编程实现硬件功能即可


    一、基本语法

    程序上大体和C/C++相似,这里不做细致的介绍

    开发板上端口分为三块区域

    ■数字输入/输出

    ■模拟输入

    ■电源/接地

    define、include

    #define pin 3
    #include<Servo.h>
    

    注释

    //注释
    /*注释*/
    

    程序结构

    在刚打开IDE时会出现以下内容

    void setup() {
      // put your setup code here, to run once:
    
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    
    }
    

    setup()函数是指初始化时要执行的代码,即板子每次开机或是复位时要执行的。通常会写上引入库、设置针脚等

    loop()函数是在板子开机或复位执行完setup()函数会如其名一样循环执行代码

    数据类型

    由于涉及到了硬件开发,很容易会发生内存不足的问题

    需要根据实际问题灵活选择类型尽量减少占用空间

    每个类型后我写明了占用多少字节以及值的范围

    /*   整型   */
    unsigned char a = 35;
    //1B,推荐用byte类型  [0,255]
    byte b = 100;
    //1B  [0,255]
    word c = 100;
    //2B  [0,2^16-1]
    short c = 15
    //2B  [-2^15,2^15-1]
    int d = 18;
    //2B  [-2^15,2^15-1](在Due、SAMD板上占4B)
    unsigned int e = 1000;
    //2B  [0,2^16-1](Due板上占4B)
    long f = 32;
    //4B  [-2^31,2^31-1]
    unsigned long g = 64;
    //4B  [0,2^32-1]
    
    /*   浮点型   */
    float a = 1.25;
    //4B
    double b = 1.35;
    //4B (在Due板上占8B)与float一样
    
    /*   布尔型   */
    bool a = true;//1B  true or false
    boolean b = false;//1B  true or false
    
    /*   字符型   */
    char a = 'A';
    //1B 单个字符
    char s1[] = "12345";
    char s2[3] = {'1','2','3'};
    char *string[] = {"123","456","789"};
    //字符串,参考C
    String stringOne = "Hello String";
    String stringOne = String('a');
    String stringTwo = String("This is a string");
    String stringOne = String(stringTwo + " with more");
    String stringOne = String(13);
    String stringOne = String(analogRead(0), DEC);
    String stringOne = String(45, HEX);
    String stringOne = String(255, BIN);
    String stringOne = String(millis(), DEC);
    String stringOne = String(5.698, 3);
    //String对象,参考C++
    sizeof(x)
    //sizeof返回占用字节数
    

    语句

    在Arduino中提供了如下关键字,由于C语言都有且语法一致这里不作介绍

    if else
    switch case
    continue break
    for
    while do
    goto
    return//用于函数(不作介绍)返回
    

    操作符

    /*   计算   */
    +   -   *
    /   %   =
    /*   比较   */
    !=   ==   >=
    <=   >    <
    /*   逻辑   */
    !   &&   ||
    /*   位   */
    &   |   ~
    <<  >>
    /*   复合   */
    ++   --   +=
    -=   *=   /=
    %=   &=   |=
    

    作用域

    ■const(略)

    ■static(略)

    ■volatile(后续会详细说明)

    强制转换类型

    (unsigned int) x
    (unsigned long) x
    (byte)x /*或*/ byte(x)
    (word)x /*或*/ word(x)
    (int)x /*或*/ int(x)
    (long)x /*或*/ long(x)
    (float)x /*或*/ float(x)
    (char)x /*或*/ char(x)
    

    二、数字I/O

    开发板中有一栏数字信号的区域,这一块函数便是处理数字信号。可以简单的设置通过数字输出来点亮LED灯,加上延时的函数可以实现隔几秒闪烁的功能

    至于模拟IO这里就不做介绍,可以查文档,我自己是用数字IO更多

    HIGH、LOW常量

    数字信号比起模拟信号而言简单太多了

    只有HIGH和LOW两种电平信号

    如果使用函数设置为HIGH此时针脚接着LED灯那么就会点亮,反之设为LOW便是熄灭

    ■5V板中,高于3V的电压认为是HIGH,低于1.5V的电压认为是LOW

    ■3.3V板中,高于2V的电压认为是HIGH,低于1V的电压认为是LOW

    pinMode(pin, mode)函数

    配置板子某一针脚用于输入输出

    Arduino提供了几个常量用于设置mode

    ■INPUT输入模式

    针脚为高阻抗(100MΩ)状态,用于读取信号

    ■INPUT_PULLUP输入上拉模式

    启用板子内置的上拉电阻(详细请参考硬件方面其他知识)

    ■OUTPUT输出模式

    针脚为低阻抗状态,用于输出信号

    注:使用INPUT或INPUT_PULLUP模式与开关相连时,为了获得准确信号,一般会连上10KΩ左右的电阻。此外如果与过高的电压相连很可能会损坏板子

    LED_BUILTIN

    大多数板子上第13位(大概)引脚都内置一LED灯,可以通过常量LED_BUILTIN访问

    void setup() {
        pinMode(LED_BUILTIN,OUTPUT);
    	//表示板子上的LED灯设置为输出模式,用于输出信号
    }
    

    digitalWrite(pin, value)

    作用:在pin针脚上输出信号(HIGH或LOW)

    digitalWrite(LED_BUILTIN,HIGH);
    //内置LED灯亮
    digitalWrite(LED_BUILTIN,LOW);
    //内置LED灯灭
    

    digitalRead(pin, value)

    作用:读取pin针脚的电压信息

    返回:HIGH或LOW

    比如现在有电路与按钮相连,当按下按钮时,输入针脚可以返回HIGH信号,此时通过程序使用简单的判断语句实现按下按钮灯亮

    byte in = 1;
    
    void setup() {
        pinMode(LED_BUILTIN,OUTPUT);
        pinMode(in,INPUT_PULLUP);
    }
    
    void loop() {
        if(digitalRead(in) == LOW) {
    		digitalWrite(LED_BUILTIN,HIGH);
    		//当低电平即按下按钮时灯亮
        } else {
            digitalWrite(LED_BUILTIN,LOW);
            //否则灯灭
        }
    }
    

    三、数学

    min(x, y)

    作用:返回两者的最小值

    max(x, y)

    作用:返回两者的最大值

    constrain(x,a,b)

    作用:约束x于[a,b]内。若低于下限a,返回a;若高于上限b,返回b;若在区间内返回x

    abs(x)

    作用:返回x的绝对值

    pow(base, e)

    作用:返回以base为底数e为指数的结果(浮点数)

    sqrt(x)

    作用:返回x的平方根

    map(x, in_min, in_max, out_min, out_max)

    作用:等比映射

    从一个区间以等比放缩的形式至另外的一个区间

    原输入为x,输出=(x-in_min)*映射比

    映射比=(in_max-in_min)/(out_max-out_min)

    在某些时候等比映射会起到意想不到的效果

    sin(x)、cos(x)、tan(x)

    作用:三角函数

    其他说明:注意是采用角度而非弧度

    randomSeed(seed)

    作用:初始化随机种子

    randomSeed(analogRead(A0));
    //一般是与置空的针脚进行初始化以产生随机种子
    

    random(max)、random(min, max)

    作用:根据随机种子产生随机整数(long)。不设置min的情况下默认为0,产生\([min, max-1]\)之间的某一整数


    参考教程

    Arduino语言参考

    太极创客 零基础入门学用Arduino 第一部分

    太极创客 零基础入门学用Arduino 第二部分

    太极创客 零基础入门学用Arduino 第三部分

    太极创客

  • 相关阅读:
    cp
    usr/sbin/inetd
    mysql
    Iptables的规则语法
    CentOS系统安装过程中配置软RAID-0或RAID-1
    25道shell面试题
    虚拟机
    进入单用户模式
    正则表达式
    js操作div的显隐
  • 原文地址:https://www.cnblogs.com/AlienfronNova/p/16071935.html
Copyright © 2020-2023  润新知