Arduino基础知识

news2024/11/19 13:25:09

目录: 

第1章 概述

1.1 Arduino简介

1.2 Arduino内部结构

第2章 Arduino编程

2.1 Arduino开发环境

2.2 Arduino语言概述

2.3 Arduino基本函数

第3章 Arduino通信教程

3.1 SPI通信

3.2 红外通信

3.3 WiFi通信

3.4 蓝牙通信

第4章 Arduino实验

1、接收串口数据并显示

第5章 问题解决

1、Linduino One上传程序失败

------------------------------------------------------------------------------------------------------------------------

第1章 概述

1.1 Arduino简介

Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬
件(各种型号的Arduino板)和软件(Arduino IDE)。以下几个较典型的开发板。

1.1.1 Arduino Uno

Uno的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出)、6路模拟输入、一个16MHz晶体振荡器、一个USB接口、一个电源插座、一个ICSP header和一个复位按钮。

硬件端口描述,如上图。

DIGITAL - PWM~:数字口,~PWM输出口;

POWER:电源;

ANALOG IN:模拟口。

1.1.2 Arduino Mega 2560

Arduino Mega 2560是采用USB接口的核心电路板,具有54路数字输入/输出,适合需要大量I/O接口的设计。处理器核心是ATmega 2560,同时具有54路数字输入∕输出口(其中16路可作为
PWM输出)、16路模拟输入、4路UART接口、一个16MHz晶体振荡器、一个USB接口、一个电源插座、一个ICSP header和一个复位按钮。Arduino Mega 2560也能兼容为Arduino Uno设计的扩展板。

1.1.3 Arduino Nano

Arduino Nano是Arduino USB接口的微型版本,其处理器核心是Atmega 168(Nano2.x)和Atmega 328(Nano3.0),同时具有14路数字输入∕输出口(其中6路可作为PWM输出)、8路模拟输入、一个16MHz晶体振荡器、一个Mini-B USB接口、一个ICSP header和一个复位按钮。

1.1.4 Arduino Leonardo

Arduino Leonardo是基于ATmega32U4的一个微控制器板。它有20个数字输入/输出引脚(其中7个可用于PWM输出、12个可用于模拟输入)、一个16 MHz的晶体振荡器、一个Micro USB接口、一个DC接口、一个ICSP接口以及一个复位按钮。

1.1.5 Arduino扩展板

较典型的是Proto Shield原型扩展板、GPRS Shield扩展板、Arduino Ethernet W5100 R3 Shield网络扩展板、WizFi210扩展板、Arduino L298N电机驱动扩展板、Arduino传感器扩展板等。

------------------------------------------------------------

1.2 Arduino内部结构

Arduino平台的基础就是AVR指令集的单片机,因此认清Arduino之前需要了解什么是单片机。移步“单片机、PLC、PLD”专栏,不再赘述。

------------------------------------------------------------------------------------------------------------------------

第2章 Arduino编程

2.1 Arduino开发环境

Arduino集成开发环境(IDE)是一个在计算机里运行的软件,可以上传不同的程序,而Arduino的编程语言也是由Processing语言改编而来的。Arduino没有程序跳转功能、单步执行等,不好调试,推荐使用第三方工具,比如Visual Micro。

------------------------------------------------------------

每次打开串口监视器,相当于对开发板做一次软复位。

------------------------------------------------------------

2.2 Arduino语言概述

基本同C语言,移步“编程类”专栏,不再赘述。

------------------------------------------------------------

2.3 Arduino基本函数

2.3.1 I/O操作函数

1.pinMode(pin,mode),将制定的针脚配置成输出或输入,模拟I/O无需定义。注意:模拟输入脚也能当作数字脚使用。

2.digitalWrite(pin,value),给一个数字针脚写入HIGH或者LOW。注意:数字13号针脚难以作为数字输入使用,因为大部分的控制板上使用了一颗LED和一个电阻与其连接。

3.int digitalRead(pin),读取指定针脚的值,HIGH或LOW。

---------------------------------

2.3.2 模拟I/O操作函数

1.analogReference(type),设定用于模拟输入的基准电压(输入范围的最大值)。

2.analongRead(),从指定的模拟引脚读取数值。

3.analogWrite(),从一个针脚输出模拟值(脉冲宽度调整,Pulse Width Modulation,PWM),让LED以不同的亮度点亮或驱动电机以不同速度旋转。

---------------------------------

2.3.3 高级I/O

1.tone(),在一个针脚上产生一个特定频率的方波(50%占空比)。

注意:如果要在多个针脚是产生不同的音调,则要在对下一个针脚使用tone()函数前,先使用noTone()函数。

2.noTone()

3.ShiftOut(),将数据的一个字节一位一位地移出。

4.shiftIn(),将数据的一个字节一位一位地移入。

5.pulseIn(),读取一个针脚的脉冲(HIGH或LOW)。

---------------------------------

2.3.4 shiftOut(dataPin,clockPin,bitOrder,val)

shiftOut函数能够将数据通过串行的方式在引脚上进行输出,相当于一般意义上的同步串行通信。

---------------------------------

2.3.5 pulseIn(pin,state,timeout)
pulseIn函数用于读取引脚脉冲的时间长度,而脉冲可以是HIGH或LOW。

---------------------------------

2.3.6 时间函数

1.Millis(),返回Arduino开发板运行当前程序开始的毫秒数。

2.micros(),返回Arduino开发板从运行当前程序开始的微秒数,这个数字将在约70分钟后溢出(归零)。

3.delay(),程序设定的暂停时间(单位毫秒)。

4.delayMicroseconds(),使程序暂停指定的一段时间(单位ms)。

---------------------------------

2.3.7 中断函数

1.外部中断函数

attachInterrupt(interrupt,function,mode),当发生外部中断时,调用一个指定的函数。

注意:中断函数中,delay()不会生效,millis()的数值不会持续增加。当中断发生时,串口收到的数据可能会遗失。在中断函数里面使用到的全局变量应该声明为volatile变量。

detachInterrupt(interrupt),关闭给定的中断。

2.中断使能函数

interrupts(中断),重新启用中断(使用noInterrupts()命令后将被禁用)。

noInterrupts(),禁止中断。

---------------------------------

2.3.8 串口收发函数

1.Serial.begin(speed),将串行数据传输速率设置为bit/s(波特)。

2.int Serial.available(),从串口读取有效的字节数(字符)。

3.int Serial.read(),读取传入的串口的数据,read()继承自Stream类。

4.Serial.flush(),等待超出的串行数据完成传输(在1.0及以上的版本中,flush()语句的功能不再是丢弃所有进入缓存器的串行数据)。

5.Serial.print(data),以ASCII文本形式打印数据到串口输出。

6.Serial.println(data),打印数据到串行端口,输出人们可识别的ASCII码文本并回车(ASCII13,或"\r")及换行(ASCII10,或"\n")

---------------------------------

2.3.9 等比映射函数

map()可以用来将某一数值从一个区间等比映射到一个新的区间。

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

---------------------------------

2.3.9 函数使用查询

全部Arduino函数参见www.arduino.cc,或者www.taichi-maker.com之Arduino开发之Arduino编程。

------------------------------------------------------------------------------------------------------------------------

第3章 Arduino通信教程

3.1 SPI通信

3.2 红外通信

3.3 WiFi通信

3.4 蓝牙通信

相关例程移步:https://download.csdn.net/download/liht_1634/86814659。

------------------------------------------------------------------------------------------------------------------------

第4章 Arduino实验

1、接收串口数据并显示

void setup() 
{
  Serial.begin(9600);
  Serial.println("Input Data:");
}

int RecieveData; //int型数据将显示ascii码,改为char即可
void loop() 
{
  if(Serial.available()>0)
  {
    RecieveData = Serial.read();
    Serial.println(RecieveData);
    delay(10);
  }
}

缓冲器中有“2”和“3”,返回值的数量:2,先读取第1个返回值“2”。

 缓冲器中只有“3”,返回值的数量:1,读取第2个返回值“3”。

空缓冲器返回“-1”。

------------------------------------------------------------------------------------------------------------------------

第5章 问题解决

1、Linduino One上传程序失败

可知与Arduino Uno兼容,在IDE中需选择“Arduino Uno”。

------------------------------------------------------------------------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学生管理系统】权限管理之用户管理—查询所有用户并关联相关角色

目录 一、查询所有用户(关联角色) 1)后端 2)前端 💟 创作不易,不妨点赞💚评论❤️收藏💙一下 一、查询所有用户(关联角色) 1)后端 修改javaB…

牛客小题练手 | 二叉树(三)

🌈刷题,面试,求职,快来牛客网一起成为offer收割机! 点击注册收割offer 一、BM32 合并二叉树 描述 已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加…

前端无法渲染CSS文件

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

Air780E模块PPP应用开发指南

目录PPP拨号windows下PPP拨号配置标准调制解调器设置拨号连接验证拨号结果linux下PPP拨号1.安装 PPP 拨号软件2.创建拨号脚本文件/etc/ppp/peers/air-ppp/etc/ppp/peers/air-chat-connect/etc/ppp/peers/air-chat-disconnect3.创建好以上三个文件后就可以通过pppd拨号了4.拨号成…

机械转码日记【21】list使用及list的模拟实现

目录 前言 1.list的使用 1.2sort和unique 2.list的模拟 2.1构造函数 2.2push_back() 2.3迭代器 2.3.1简洁版 2.3.2升级版(重要) 2.4insert和erase与迭代器失效 2.4.1list的迭代器失效 2.5析构函数 2.6深拷贝构造 前言 list是我们数据结构…

Web前端 | JavaScript(DOM编程)

✅作者简介:一位材料转码农的选手,希望一起努力,一起进步! 📃个人主页:每天都要敲代码的个人主页 🔥系列专栏:Web前端 💬推荐一款模拟面试、刷题神器,从基础到…

Qt文档阅读笔记-Hello Speak Example

官方的这个例子比较有意思,在此记录下,方便以后查阅。 Hello Speak Example 这个例子主要是使用QTextToSpeech类将用户自定义输入的文本转换为口语,包括高低音、声音大小、读速。并且能够选择语言和声音。 包含的文件如下: 本篇博…

一文搞懂【知识蒸馏】【Knowledge Distillation】算法原理

知识蒸馏算法原理精讲 文章目录知识蒸馏算法原理精讲1. 什么是知识蒸馏?2. 轻量化网络的方式有哪些?3. 为什么要进行知识蒸馏?3.1 提升模型精度3.2 降低模型时延,压缩网络参数3.3 标签之间的域迁移4. 知识蒸馏的理论依据&#xff…

【JavaWeb】初识HTTP学习

文章目录JavaWeb之HTTP学习1、HTTP相关基本概念2、数据格式介绍2.1 请求的数据格式2.2 响应的数据格式案例JavaWeb之HTTP学习 1、HTTP相关基本概念 什么是HTTP? HTTP(HyperText Transfer Protocol,超文本传输协议)是一个简单的请…

Spring Cloud基本介绍

✨ Spring Cloud基本介绍1.微服务中的相关概念1.1服务的注册与实现1.2负载均衡1.3熔断1.4链路追踪1.5API网关2.Spring Cloud的介绍2.1基本认识2.2Spring Cloud的架构2.2.1Spring Cloud的核心组件2.2.2Spring Cloud体系结构2.3Spring Boot和Spring Cloud的区别与联系2.3.1 Sprin…

【Spring】简单的登录案例和配套知识

本篇文章接着介绍 Spring 的相关知识,主要通过一个非常非常简单用户登录案例来介绍,各位大佬们路过记得赏小的一颗赞🤩 文章目录1. 演示一下 Spring 管理类的模式2. 用户登录案例2.1 准备的对象和其功能2.1.1 User2.1.2 UserController2.1.3 …

05、JavaWeb启程——JDBC详解

1、JDBC概述 1、持久化概述 【简介】: 持久化指的是把内存中的数据存储到可掉电存储设备中以供之后使用。 2、JDBC概述 【简介】: JDBC是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一的访问。 【JDBC本质】&#xff1…

【Java】泛型

当你觉得这条路很难走的时候,一定是上坡路 目录 1.初识泛型 1.1 什么是泛型 1.2泛型类语法 1.2.1泛型类定义 1.2.2泛型类使用语法 1.2.3泛型类的使用 1.2.4裸类型 2.泛型如何编译 2.1擦除机制 3.泛型的上界 3.1语法 3.2示范 4.泛型方法 4.1 语法 …

i.MX 6ULL 驱动开发 十九:RGBLCD

一、RGBLCD 硬件原理 【正点原子MP157连载】第十八章 RGB LCD彩条显示实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7_正点原子的博客-CSDN博客 ATK7016 时序参数: 二、eLCDIF 接口 eLCDIF 是 I.MX6U 自带的液晶屏幕接口,用于连接 RGB …

【Linux】没有GDB,何谈Linux C

一、简单的开始 1、有C代码如下 #include <stdio.h>void main() {printf("Hello World!"); }2、通过gcc编译 生成带有调试信息的可运行程序&#xff0c;编译参数-g gcc -g hello.c -o hello3、运行GDB -q表示不打印gdb版本信息&#xff0c;界面较为干净 …

linux内核调试工具之kprobe

目录 一、内核调试的痛点 二、kprobe的优点 三、kprobe探测点的要点 四、探测点的开销与优化 五、内核配置 六、API 七、程序架构 八、实例 一、内核调试的痛点 内核调试&#xff0c;添加打印信息。在运行过程中想看某个函数的变量&#xff0c;需要重新编译内核。这样破…

【C语言】指针(进阶)

目录一、字符指针二、数组指针2.1、数组指针的定义2.2、&数组名和数组名2.3、数组指针的使用三、数组传参、指针传参3.1、一维数组传参3.2、二维数组传参3.3、一级指针传参3.4、二级指针传参四、函数指针五、函数指针数组六、指向函数指针数组的指针七、回调函数一、字符指…

【C语言小游戏】详解三子棋,深刻掌握二维数组

前言&#xff1a; 大家好&#xff0c;我是良辰丫&#xff0c;今天带领大家实现一个C语言小游戏&#xff0c;主要运用的知识点为二维数组&#xff0c;希望这篇文章让大家对二维数组有更深刻的认识。 &#x1f49e;看似不起波澜的日复一日&#xff0c;会突然在某一天让人看到坚持…

【day14】【洛谷算法题】-P5711闰年判断-刷题反思集[入门2分支结构]

&#x1f338;大家好&#xff0c;我是花无缺&#xff0c;一枚热爱生活的新时代青年&#xff0c;感谢你的阅读&#x1f970;~ &#x1f468;‍&#x1f4bb;个人主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专…

PC - 史上最简单的远程访问群晖 NAS 方法

文章目录1、下载安装cpolar群晖套件1.1 注册cpolar账号1.2 下载cpolar群晖套件1.3 安装cpolar群晖套件2、创建隧道映射5000端口2.1 打开cpolar群晖套件2.2 创建远程访问隧道2.3 获取公网URL地址3、公网远程群晖NAS教大家一个新手小白都可以轻松掌握的远程群晖NAS方法&#xff0…