Arduino学习笔记(1):太极创客 第一部分

太极创客 第一部分 笔记

1-5 变量

  • int是“整数类型变量”

  • 变量名称规则:
    ① 只能输入英文
    ② 变量名只能用连贯的一个词,中间不能加空格
    ③ 变量名中不能有特殊字符
    ④ 第一个字符不能是数字
    ⑤ 关键字不能做变量名称(即IDE中变蓝的词)
    ⑥ 可以加入下划线

  • 整数变量数值默认给0

  • 等号(=)有个特殊的名称“赋值运算符”

1-6 程序结构

  • void setup()属于初始化工作(只运行一次)
  • void loop() 函数会永远反复的运行
  • delay(); 延时函数,单位为ms

1-7 变量操作

  • 各类型的变量:如果一个数值超过该类型的最大范围,那么这个数值会返回到最小数值

  • 变量有作用域:在特定范围内声明,分为全局变量和局部变量。

    ​ 全局变量:适用于所有函数

    ​ 局部变量:有限制范围,只适用于特定区域内

  • 浮点型——浮点数的取值范围在3.4028235 E+38 ~ -3.4028235 E+38

1-8/1-9 程序函数

  • 函数固定的格式:什么函数+多少个参数:例如delay()只需要一个参数

  • delayMicroseconds()用于暂停程序运行,也为延时函数,与delay用法一致,但两者暂停时间的单位不同。

  • pinMode(pin,Mode):设置引脚的输入输出状态

    pinMode()函数可以将Arduino的引脚配置成三种模式:

  1. 输出模式(OUTPUT)——使用引脚提供≤40ma的电流
  2. 输入模式(INPUT)
  3. 上拉模式(INPUT_PULLUP)
  • digitalWrite(pin,value) :设置输出引脚的高低电平状态

    高电平(HIGH)5v ;低电平(LOW)0v/GND

  • 使引脚变为输出的顺序:
    1. 先给引脚设置相应的工作状态——pinMode(脚位,工作模式)
    2. 然后设置脚位的状态——digitalWrite(脚位,高电平或低电平)
    3. 设置持续时间——delay(毫秒)

1-10/1-11 数字输出 1-12 面包板

  • LED:发光二级管(长的为+,短的为-),工作时候回产生2V的压降(与LED限流电阻搭配使用)

  • 面包板:

    上下区是横向5位相通,一般用于接电源和接地

    中间区域是纵向5位相通,通常用于放置电路元件和电路连接线。

1-13/1-14 数字输入

  • 开关(同侧不相连,相连不同侧)

  • 上拉电阻

  • img

    当S2没按下时,Input通过2个电阻和+5V连接(注意电路中并没构成回路,因此不会有压降,所以Input端依然是高电平),为高电平。当S2按下时,+5V,R2,S2,GND形成回路,R2 电阻大,产生压降大,因此后面的Input就是低电平。因此,可以通过Input端的电平来判断S2是否按下。上拉电阻在数字电路中应用的更广泛。

  • 引脚悬空时,电位读取可能是低电位、也可能是高电位

  • 窗口监视器:程序运行状态

    serial.begin(9600):调用serial库中的begin函数,串口波特率通常使用9600,并注意代码与窗口选择一致

    serial.println():将变量数值输出到窗口监视器

  • digitalRead(pin):读取引脚的状态,并返回HIGH或LOW

1-15至1-17 逻辑控制

  • 输入上拉模式(INPUT_PULLUP),arduino微控制器自带内部上拉电阻,可以通过pinMode()将引脚设置为输入上拉模式。

    请留意:在上拉模式下,按钮的逻辑状态是反的。即:开关断开时引脚读取到高电平,开关被按下后引脚读取到低电平。

  • if(逻辑关系式){}

    //关系表达式通过关系运算得到真假,真为1,假为0,其数据类型均为布尔/Boolean(除了0外,给其他任何数值都当作1来处理)

    //关键字用boolean或者bool都可以

  • "=“为赋值运算符;”=="为关系运算符

  • 布尔运算符:"!"(非);"||"(或);"&&"(与)

1-19至1-24 MC猜数字(例)

img

  • 制作MC猜数字所需硬件材料:

    – Arduino开发板,本教程使用的是共阴极数码管
    – 限流电阻 x 1(200欧姆左右),公对公杜邦线 x 10, 面包板, 面包板跳线 x 10, 按键开关 x 1

  • while(循环条件){循环体};

    do{循环体}while{循环条件}; //注意两者的循环和循环条件判断先后

  • switch case

switch (var) {
    case 1:
        //当var等于1时执行这里的程序
        break;
    case 2:
        //当var等于2时执行这里的程序
        break;
    default:
        // 如果var的值与以上case中的值都不匹配
        // 则执行这里的程序
        break;
}
    1. 在以上结构示例代码中,当变量var和某个case后面的数值匹配成功后,如果没有break, Arduino会执行该分支以及后面所有分支的语句。
    2. case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。
    3. case 后面不能使用字符串,但可以使用字符,使用字符时需要用单引号把字符括起来,如: case: 'b'
    4. default 不是必须的。当没有 default 时,如果所有 case都匹配失败,那么就什么都不执行。
  • if(判断条件){语句块}

    else if{语句块}

  • 随机数:①random(max)②random(min,max)

    min: 产生随机数的下限(包含此数值)
    max: 产生随机数的上限(不包含此数值)

    其返回值为:在最小值(min)和最大值减一(max-1)之间的随机数值

    单独使用random()函数。每次程序运行所产生的随机数字都是同一系列数字。并非真实的随机数,而是所谓的伪随机数。如果希望每次程序运行时产生不同的随机数值。应配合使用randomseed()函数。

  • randomSeed()函数可用来产生随机种子。单独使用random()函数所产生的随机数,在每一次程序重新启动后,总是重复同一组随机数字。如果希望程序重新启动后产生的随机数值与上一次程序运行时的随机数不同,则需要使用randomSeed()函数。在实际应用时,可以通过调用analogRead()函数读取一个空引脚,作为随机种子数值。

    randomSeed(seedVal)

    seeseedVal: 随机种子数值

long randNumber;
void setup(){
  Serial.begin(9600);
  randomSeed(analogRead(A0)); 
  //将引脚A0放空,每次程序启动时所读取的数值都是不同的。
  //这么做可以产生真正的随机种子值,从而产生随机数值。
}
 
void loop(){
  randNumber = random(300);  // 产生随机数
  Serial.println(randNumber);
  delay(50);
}
  • 函数调用:注意是否有参数,如果有参,那么在函数调用声明前要记得定义变量。

1-25/1-26 模拟输出

  • analogWrite(pin, value);

    //在调用analogWrite()函数前,无需使用pinMode()函数来设置该引脚,但是设置了也没有关系。

    pin:被读取的模拟引脚号码
    value:0到255之间的PWM频率值, 0对应off, 255对应on

  • analogWrite()函数将模拟值(PWM波)写入引脚。它可用于以不同的亮度点亮LED或以各种速度驱动电机。在调用analogWrite()函数之后,引脚将产生指定占空比的稳定方波,直到下一次调用analogWrite()或在相同引脚上调用digitalRead()或digitalWrite()。

    大多数引脚上的PWM信号频率约为490 Hz。在Uno和类似的板上,引脚5和6的频率约为980Hz。

    在大多数Arduino板上(ATmega168或ATmega328),此 功能在引脚3,5,6,9,10和11上工作。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

97Marcus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值