arduino 学习笔记及课件01基础入门


以下学习笔记中图片部分由太极创客视频截图所得

概论

一、 引脚及信号

1.1引脚模式

INPUT:当Arduino没有使用上拉电阻或下拉电阻而直接与开放的开关相连)。在开关未闭合时,该Arduino引脚处于不确定状态。为了获得准确的开关信号,须使用上拉电阻或下拉电阻。一般可以选用10K欧姆的电阻。
OUTPUT:Arduino引脚不能直接接地或直接与Arduino+5V/+3.3V引脚相连,否则可能损坏Arduino控制器。Arduino需要配合使用上拉电阻或者下拉电阻方能进行上述操作。(如果被驱动的电机需要超过40mA的电流,Arduino将需要三极管或其它辅助元件来驱动他们。)
INPUT_PULLUP:Arduino 微控制器自带内部上拉电阻,接地时引脚为低电平,否则为高电平。

1.2 信号

输入、输出、数字、模拟,两两组合。其中输入一个参数,引脚号。输出两个参数,引脚、输出值。其中
模拟输入:analogRead( pin ) 范围:0-1023
模拟输入:analogWrite( pin,value ) 范围 :0-255
数字输入:digitalRead( pin )
数字输出:digitalWrite( pin , status )

二、变量及程序结构

2.1变量

int : 整数是基本数据类型。整数数据类型占用2字节16位。整数的范围为-32,768到32,767( -2^15 ~(2^15)-1)。
byte:byte类型变量可存储8位无符号数,其存储数值范围是 0 – 255。
char:char数据类型使用1个字节的内存来存储单个字符值。字符以ASCII编码的形式存储。字符应写在单引号中,如: ‘A’。
long:长整数型变量是扩展的数字存储变量,它可以存储32位(4字节)大小的变量,数值从-2,147,483,648到2,147,483,647。

2.2程序结构

set up() 执行一次
loop()循环执行

三 、基础案例程序

3.1数字输出

点亮电路板上自带的led灯

void setup() {// initialize digital pin LED_BUILTIN as an output.// 初始化LED_BUILTIN数字引脚为输出模式pinMode(LED_BUILTIN, OUTPUT);
}
// loop 函数永远会反复的运行
void loop() {digitalWrite(LED_BUILTIN, HIGH);   // 点亮LED(高电平)turn the LED on (HIGH is the voltage level)delay(1000);                       // 等待1秒 wait for a seconddigitalWrite(LED_BUILTIN, LOW);    // 将电平设置为低来熄灭LED turn the LED off by making the voltage LOWdelay(1000);                       // 等待1秒 wait for a second
}

3.2数字输入

硬件:开关

硬件连接上拉电阻
按键按下:2号引脚读取到低电平
按键松开:2号引脚读取到高电平
按键实验电路连接

//引脚2连接有按键开关,给它一个名字:
int pushButton = 2;// the setup routine runs once when you press reset:
//当你按下复位按钮后,setup流程运行一次:
void setup() {// initialize serial communication at 9600 bits per second://串口通讯初始化,每秒9600位Serial.begin(9600);// make the pushbutton's pin an input://设置按键引脚为输入pinMode(pushButton, INPUT);
}// the loop routine runs over and over again forever:
// loop 流程会永远的反复运行
void loop() {// read the input pin://读取输入引脚:int buttonState = digitalRead(pushButton);// print out the state of the button:// 显示按键状态Serial.println(buttonState);delay(1);        // delay in between reads for stability 为确保程序稳定运行进行短暂停止
}

3.3 模拟输出

PWM原理、

以点亮led为例,在一个周期类,高电平所占的比例为led电压的比例,模拟输出255值对于引脚5V电压


硬件连接:

boolean pushButton1;   // 创建布尔型变量用来存储按键开关1的电平状态
boolean pushButton2;   // 创建布尔型变量用来存储按键开关2的电平状态
int ledPin = 9;        //LED引脚号
int brightness = 128;  //LED亮度参数void setup() {// put your setup code here, to run once:pinMode(2, INPUT_PULLUP); //将引脚2设置为输入上拉模式pinMode(8, INPUT_PULLUP); //将引脚8设置为输入上拉模式pinMode(ledPin, OUTPUT);  //将LED引脚设置为输出模式Serial.begin(9600);      //启动串口通讯
}void loop() {// put your main code here, to run repeatedly:pushButton1 = digitalRead(2); //读取引脚2电平状态并将其赋值给布尔变量pushButton2 = digitalRead(8); //读取引脚8电平状态并将其赋值给布尔变量if (!pushButton1 && brightness > 0){     // 当按下按键开关1并且LED亮度参数大于0brightness--;                          // 减低LED亮度参数//(brightness-- 相当于  brightness = brightness - 1;)} else if (!pushButton2 && brightness < 255) {  //当按下按键开关2并且LED亮度参数小于255brightness++;                                 //增加LED亮度参数//(brightness++ 相当于  brightness = brightness + 1;)}analogWrite(ledPin, brightness);         //模拟输出控制LED亮度Serial.println(brightness);              //将LED亮度参数显示在串口监视器上delay(10);
}

3.4 模拟输入

/*模拟输入本程序旨在演示如何使用analogRead()读取Arduino的引脚电平。通过调节电位器, A0引脚的输入电压将在0V-5V之间。该输入电压将被映射到数值0-1023之间,并显示在串口监视器中。电路连接:电位器中间引脚连接到模拟输入A0引脚电位器两端引脚分别连接在Arduino +5V和接地引脚*/void setup() {// 串口通讯初始化(9600 bps):Serial.begin(9600);
}void loop() {// 读取模拟输入值:int analogInputVal = analogRead(A0);// 将结果通过串口监视器显示:Serial.println(analogInputVal);

3.5 模拟输入输出

void setup() {Serial.begin(9600);  // 串口通讯初始化(9600 bps)pinMode(9, OUTPUT);  // 设置9号引脚为输出模式
}void loop() {int analogInputVal = analogRead(A0);  // 读取模拟输入值int brightness = map(analogInputVal, 0, 1023, 0, 255); //将模拟输入数值(0 - 1023)等比映射到模拟输出数值区间(0-255)内analogWrite(9, brightness);  //根据模拟输入值调节LED亮度// 将结果通过串口监视器显示:Serial.print("analogInputVal = ");Serial.println(analogInputVal);Serial.print("brightness = ");Serial.println(brightness);Serial.println("");
}

4.常用语法

4.1 for(定义变量赋值;循环条件;变量递变)

{

循环体;

}

案例01


void setup() {Serial.begin(9600);
}
void loop() {int sum = 0;for (int i = 1; i <= 50; i += 2 ) {Serial.print("i=");Serial.println(i);//打印变量sum += i;Serial.print("sum=");Serial.println(sum);//打印计算结果}Serial.println("当前循环结束");delay(3000);
}

案例02:当for内的三个语句均为空时则表示死循环,当循环条件为空时表示循环体进入死循环。

void setup() {Serial.begin(9600);
}
void loop() {int sum = 0;for (;  ;  ) {sum++;Serial.print("sum=");Serial.println(sum);}Serial.println("当前循环结束");delay(10000);
}

4.2 while(循环条件){

循环体;

break;

}

while循环,实际为死循环,一般有两种方式跳出循环,1、可以通过循环条件判断,当循环条件为假时跳出循环。2、使用break语句跳出循环,break语句只能跳出当前循环,如果有多个循环,要跳出多个循环或者指定循环则需要对循环进行标记,for循环也是如此,详细见案例goto语句。3.如果需要跳出本次循环则需要continue语句。
总结:
跳出本次循环:continue
跳出当前循环:break
跳出指定循环:goto

案例01:通过循环条件跳出循环。

void setup() {Serial.begin(9600);
}
void loop() {int sum = 0;int i = 1;while (i <= 50) {Serial.print("i=");Serial.println(i);sum += i;i++;Serial.print("sum=");Serial.println(sum);}
Serial.println("当前循环结束");
delay(3000);
}

案例02 通过break语句跳出循环

void setup() {Serial.begin(9600);
}
void loop() {int sum = 0;int i = 1;while (true) {Serial.print("i=");Serial.println(i);sum += i;i++;Serial.print("sum=");Serial.println(sum);if(i>50){//如果已经加到50则停止循环break;}}
Serial.println("当前循环结束");
delay(3000);
}

4.3 goto

常用于跳出循环,程序跳转到指定位置。

void setup() {Serial.begin(9600);
}
void loop() {int sum = 0;int i = 1;while (true) {while (true) {Serial.print("i=");Serial.println(i);sum += i;i++;Serial.print("sum=");Serial.println(sum);if (i > 50) {goto here;}}Serial.println("跳出第一个循环");}
here:Serial.println("跳出第二个循环");delay(3000);
}

4.4 if语句

结构

if(条件){
执行体1;
}else{
执行体2;
}
案例01

void setup() {Serial.begin(9600);
}
void loop() {int i = 90;if (i >= 0 && i < 60) {Serial.println("不及格");} else if (i > =60 && i <= 75 ) {Serial.println("中等");} else if (i > 75 && i <= 90) {Serial.println("良");} else if ( i > 90 && i <= 100) {Serial.println("优");} else {Serial.println("输入参数错误且if语句已执行完毕");}Serial.println("if语句已执行完毕准备执行下一行程序");
}

4.5 switch语句

结构:

switch (变量){
case 常量1:
执行体;
break;
ase 常量2:
执行体;
break;

}
变量只能为数字类型或char字符型,不能为字符串。

void setup() {Serial.begin(9600);
}
void loop() {int i = 90;char level;if (i >= 0 && i < 60) {level = 'D';} else if (i >= 60 && i <= 75 ) {level = 'C';} else if (i > 75 && i <= 90) {level = 'B';} else if ( i > 90 && i <= 100) {level = 'A';} else {Serial.println("输入参数错误");}Serial.println("if语句执行完毕");switch (level) {case 'D':Serial.println("不及格");break;case 'C':Serial.println("中等");break; \case 'B':Serial.println("良");break;case 'A':Serial.println("优");break;default :Serial.println("输入参数错误且switch语句执行完毕");}Serial.println("switch 语句已执行完毕准备执行下一行程序");
}

arduino 学习笔记及课件01基础入门相关推荐

  1. python学习笔记(一)基础入门

    python怎么读 第一个,我们要弄明白这个怎么读: 英[ˈpaɪθən],美[ˈpaɪθɑ:n] 我们一般读英式读音--派森 Hello, World例子 我学习的环境是Ubuntu,所以直接上手来 ...

  2. 学习笔记(05):Mysql数据库基础入门视频教程-自连接

    立即学习:https://edu.csdn.net/course/play/9885/210119?utm_source=blogtoedu -- 子查询     -- 一个select语句包含另一个 ...

  3. 微信小程序学习笔记(1)基础入门

    文章目录 一.项目基本结构 二.页面的组成部分 三.json配置文件 四.小程序代码构成 五.组件 视图容器 scroll-view swiper 基础内容 text rich-text 常用组件 b ...

  4. [学习笔记] 1. C++ / CPP基础入门

    课程链接:https://www.bilibili.com/video/BV1et411b73Z 文章目录 1. 初识C++ 1.1 第一个C++程序 1.2 注释 1.3 变量 1.4 常量 1.5 ...

  5. 小迪渗透测试学习笔记(四)基础入门-WEB源码拓展

    前言: WEB源码在安全测试中是非常重要的信息来源,可以用来代码审 计漏洞也可以用来做信息突破口,其中WEB源码有很多技术需要简明分析. 比如:获取某ASP源码后可以采用默认数据库下载为突破,获取某其 ...

  6. Bootstrap响应式Web开发笔记01——基础入门

    Bootstrap响应式Web开发笔记01--基础入门 Bootstrap响应式Web开发笔记02--移动端页面布局 Bootstrap响应式Web开发笔记03--Bootstrap栅格系统 Boot ...

  7. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  8. MATLAB学习笔记2:MATLAB基础知识(下)

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  9. 【学习笔记】网络流算法简单入门

    [学习笔记]网络流算法简单入门 [大前言] 网络流是一种神奇的问题,在不同的题中你会发现各种各样的神仙操作. 而且从理论上讲,网络流可以处理所有二分图问题. 二分图和网络流的难度都在于问题建模,一般不 ...

最新文章

  1. BTCBCH 谁是最终的王者
  2. 046_CSS3动画
  3. MySQL如何创建表时指定约束
  4. 获取设备IMEI ,手机名称,系统SDK版本号,系统版本号
  5. 计算机领域中随处可见的抽象
  6. python加密反编译_对Python源码进行加密及反编译前后对比
  7. 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型
  8. pyqt5搭建的简单的图像处理界面_PyQt5 布局浅析
  9. 考驾照科目一考试很顺利
  10. 管理Linux软件包和进程
  11. 四个好看的table表格样式
  12. 无需ROOT卸载或禁用vivo Z5手机的内置软件
  13. Linux学习新篇章C高级:day1
  14. JS Learun 消息对话框
  15. dcdc升压计算器excel_DC-DC电路计算器app下载|DC-DC电路计算器安卓版下载_v1.0.1_9ht安卓下载...
  16. 高德地图--水波雷达动画
  17. iOS逆向:tweak开发教程(iPhone/tool)
  18. delphi 各新版本特性收集
  19. Java_题目_抽奖的2种实现方法
  20. 大恒相机图像采集 linux+python

热门文章

  1. 没有密码,怎么打开Excel?
  2. java MD5(Message Digest Algorithm 5)加密算法
  3. CVE-2020-13946:Apache Cassandra RMI重新绑定漏洞通告
  4. mysql数据库tinyint_mysql数据库TINYINT取值范围详解
  5. Lucene快速入门第三讲——看看Lucene是如何支持中文分词的?
  6. Python实现不同交互界面跳转(创建子界面)
  7. ASP.NET 路由实现去除aspx后缀
  8. 【深度学习 理论】Logistic Regression
  9. C#,精巧实用的代码,生成机器码(Machine Id)的基础源代码
  10. php 地域插件,Z-BlogPHP地区分站插件