Arduino学习笔记2023年11月30日

目录

  • 1 编程软件下载
  • 2 代码结构
  • 3 IO引脚控制
    • 3.1 引脚初始化
    • 3.2 引脚使用
      • 数字量输出
      • 数字量输入
      • 模拟量输出
      • 模拟量输入
  • 4 串口
    • 串口初始化
    • 串口输出
    • 串口输入
  • 5 外部中断
  • 6 函数
    • 6.1 映射区间函数
    • 6.2 延时函数
  • 总结

1 编程软件下载

官网链接:https://www.arduino.cc/
下载链接:https://www.arduino.cc/en/software
软件下载过程中,仅需要登陆Arduino的官网即可,并不需要注册账号。根据自己电脑情况按下图所示去选择下载文件。下载过程中选择仅下载或者捐款。
安装包下载完成后,无需激活等操作,可以直接打开使用,第一次打开时,启动时间较长,耐心等待即可。
软件打开后,可以在首选项中更改系统语言为中文简体(软件界面过于简单,此处不在详细描述,自行探索。)
在这里插入图片描述

2 代码结构

Arduino的编程时,必然会存在以下两个函数。具体详细功能详见下述代码。

void setup() {// put your setup code here, to run once:// 该函数的代码只在上电后运行一次,这里一般写初始化代码。
}void loop() {// put your main code here, to run repeatedly:// 这个函数相当于大循环,里面的代码会循环执行。
}

3 IO引脚控制

3.1 引脚初始化

函数原型:

pinMode(uint8_t pin, uint8_t mode);

使用示例:

pinMode(2 , OUTPUT);
参数说明示例
uint8_t pin引脚号0、1、2……
uint8_t mode引脚模式<见下表3.2>

表3.2

模式参数说明
OUTPUT输出模式
INPUT输入模式
INPUT_PULLUP上拉输入

当IO模式设置为模拟量/数字量输入模式,模拟量/数字量输出时,均可分别设置为OUTPUT INPUT,并无其它代码区分。

3.2 引脚使用

数字量输出

函数原型 :

void digitalWrite(uint8_t pin, uint8_t val);

使用示例:

digitalWrite(1,HIGH);
digitalWrite(1,LOW); 

数字量输入

函数原型 :

int digitalRead(uint8_t pin); // 返回值:HIGH,LOW

使用示例:

int a;
a = digitalRead(5);

模拟量输出

函数原型 :
参数val设定范围:0-255

void analogWrite(uint8_t pin, int val);

使用示例:

analogeWrite(2,125); // 设定值:0-255

模拟量输入

函数原型 :
返回值范围:0-1023

int analogRead(uint8_t pin);

使用示例:

int val;
val = analogRead(3); // 设定值:0-255

: 带~ 标识的引脚才可以做模拟输出

4 串口

串口初始化

Serial.begin(9600); // 串口初始化,参数为波特率

串口输出

Serial.println("123"); //自带回车效果
Serial.print("456464");
Serial.print(55,BIN); // 	二进制输出55这个数值 参数还可以是DEC十进制,HEX十六进制

串口输入

读取一个字节,没有数据时,返回的是-1;

  a = Serial.read();

检测串口数据

int a;
a = Serial.available(); // 检测控制器是否接收到数据,返回值为等待读取的数据字节数。没有数据就返回0

5 外部中断

函数原型

void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode);

参数说明:
1、uint8_t interruptNum:中断号。
UNO 版本只有两个外部中断。

型号中断0中断1
UNOpin 2pin 3

2、userFunc:中断处理函数,该函数属于自定义函数,定义时,不能有返回值和参数。
3、mode :中断模式。

参数模式
LOW低电平触发
CHANGE电平变化触发
RISING上升沿触发
FALLING下降沿触发

函数示例:

void setup() {Serial.begin(9600);attachInterrupt(0,set,LOW); // 写在初始化函数中
}
// 中断处理函数
void set()
{Serial.print("564");  
}

6 函数

下面介绍一些可以直接调用的内部函数,不用加头文件。

6.1 映射区间函数

函数原型:

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

参数:映射值,映射的旧区间,映射的新区间
返回值:为映射到新区间的值。

// 映射值,映射的旧区间,映射的区间。返回值为新映射值。
y = map(val,0,1023,0,255);

6.2 延时函数

delay(1000); // 单位:ms
delayMicroseconds(10); // 单位:us

待续……

总结

本人在学习过51单片机和STM32后,偶尔想到接触一下Arduino开发板,学习时间并不长,仅两天。现根据学习感受对51/32和Arduino做一些比较。

类别Arduino51/32单片机
开发软件官网直接下载,无需激活,安装可用官网下载,需要激活
编程语言C/C++语言C语言
编程特点大量的可用开源库文件,基础库无需包含可直接使用需要自己添加使用的库文件,并且需要自己include
使用特点关于引脚,串口,PWM,AD/DA等资源可以直接调用函数使用,无需配置需要配置外设工作方式,甚至时钟
使用特点关于常用的一些模块器件通过引入库文件后直接调用函数使用需要写时序和控制方式,读写命令数据函数
开发板特点引脚数量较少根据不同型号选择不同引脚功数量的器件

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

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

相关文章

SpringBoot 配置文件使用@ @取值

目录 一、背景 二、遇到的问题 三、解决办法 一、背景 &#xff08;1&#xff09;我在项目中引入了如下依赖&#xff0c;目的是开启SpringBoot为我们提供的监控(Actuator)功能。 <!-- 引入SpringBoot 监控功能 --> <dependency><groupId>org.springframew…

PWM控制器电路D9741,定时闩锁、短路保护电路,输出基准电压(2.5V) 采用SOP16封装形式

D9741是一块脉宽调制方三用于也收路像机和笔记本电的等设备上的直流转换器。在便携式的仪器设备上。 主要特点&#xff1a;● 高精度基准电路 ● 定时闩锁、短路保护电路 ● 低电压输入时误操作保护电路 ● 输出基准电…

Linux服务器部署XXL-JOB

参考文档及下载地址&#xff1a;分布式任务调度平台XXL-JOB 1 从git拉取XXL-JOB代码 我们的大部分变动&#xff0c;是发生在xxl-job-admin&#xff0c;最终将这个模块打包成jar包部署在linux服务器上。 2 执行数据库脚本 doc\db\tables_xxl_job.sql 3 修改pom文件&#xff0c…

线程池原理初探

1.引言 合理利用线程池能够带来三个好处。第一&#xff1a;降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二&#xff1a;提高响应速度。当任务到达时&#xff0c;任务可以不需要的等到线程创建就能立即执行。第三&#xff1a;提高线程的可管理性。…

哈希表【1】

文章目录 &#x1f914;0.哈希表&#x1f33c;1. 两数之和&#x1f33b;1. 题目&#x1f337;2. 算法原理&#x1f33a;3. 代码实现 &#x1f348;面试题 01.02. 判定是否互为字符重排&#x1f34c;1. 题目&#x1f34f;2. 算法原理&#x1f353;3. 代码实现 &#x1f914;0.哈…

Cmake时遇到Could Not find CURL问题

操作系统&#xff1a;Ubuntu 20.04 cmake编译的时候&#xff0c;出现下述错误Could Not find CURL。 结合上述错误&#xff0c;又去看了CMakelist文件&#xff0c;看到CURL的最小版本需要7.28.0。 首先确认一下自己的curl是否安装&#xff0c;版本号是多少&#xff0c;结果如下…

Pytest接口自动化测试框架搭建模板

auto_api_test 开发环境: Pycharm 开发语言&版本: python3.7.8 测试框架: Pytest、测试报告: Allure 项目源码Git地址 项目目录结构 api – 模仿PO模式, 抽象出页面类, 页面类内包含页面所包含所有接口, 并封装成方法可供其他模块直接调用config – 配置文件目录data…

学习设计模式的网站

Refactoring and Design Patternshttps://refactoring.guru/

华为云RDS通用型(x86) vs 鲲鹏(ARM)架构的性能对比

概述 之前&#xff0c;我们对比了阿里云RDS的经济版&#xff08;ARM&#xff09;与x86版的性价比&#xff0c;这次我们来看看华为云的RDS MySQL的“通用型”(x86)与“鲲鹏通用增强型”(ARM)版本的情况如何。 这里依旧选择了用户较为常用的4c16g的规格进行测试&#xff0c;测试…

git的基本命令操作超详细解析教程

Git基础教学 1、初始化配置2、初始化仓库3、工作区域和文件状态4、添加和提交文件5、git reset 回退版本6、git diff查看差异7、删除文件git rm8、.gitignore10、分支基础应用1、本地文件提交到远程仓库 Git&#xff1a;一个开源的分布式版本控制系统&#xff0c;它可以在本地和…

AIGC创作ChatGPT源码+AI绘画(Midjourney绘画)+支持GPT-4-Turbo模型+DALL-E3文生图

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

嵌入式硬件和软件哪个好?

嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的&#xff0c;首先我们先来看看嵌入式硬件工程师吧! 嵌入式硬件开发工程师主要编写嵌入式系统硬件总体方案和详细方案&#xff0c;要求理解嵌入式系统架构&#xff0c;有一…

智能优化算法应用:基于世界杯算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于世界杯算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于世界杯算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.世界杯算法4.实验参数设定5.算法结果6.参考文献7.…

java学习part36set

157-集合框架-Set不同实现类的对比及Set无序性、不可重复性的剖析_哔哩哔哩_bilibili 1.Set 加入集合的时候会先调用重写的hash方法计算hash值&#xff0c;不一样就加入。 如果hash一样且equals也是true就是重复 &#xff0c;调equals是为了保险&#xff0c;保证排除hash碰撞…

MySQL数据误删除恢复

1.1 问题简述 开发反馈误删除了部分业务数据&#xff0c;需要恢复数据。 这里采用binlog2sql工具进行数据回滚。 1.2 环境 CentOS Linux release 7.4.1708 (Core) mysql Ver 8.0.21 for Linux on x86_64 (MySQL Community Server - GPL) 1.3 数据库开启binlog 因为数据库serve…

Windows环境下RocketMQ的安装及配置

目录 1.环境准备2.下载RocketMQ3.配置RocketMQ环境变量4.启动RecoketMQ4.1启动 name server4.2 启动 broker 5、启动报错问题解决5.1 java_HOME变量找不到5.2 启动闪退问题 1.环境准备 JDK和Maven需要先安装好。 RocketMQ是用Java语言写的&#xff0c;所以需要JDK的支持。 后面…

Mac电脑vm虚拟机 VMware Fusion Pro中文 for mac

VMware Fusion Pro是一款功能强大的虚拟机软件&#xff0c;适用于需要在Mac电脑上运行其他操作系统的用户。它具有广泛的支持、快速稳定的特点以及多种高级功能&#xff0c;可以满足用户的各种需求和场景。 多操作系统支持&#xff1a;VMware Fusion Pro允许在Mac电脑上运行多…

Wireshark中的TCP协议包分析

Wireshark可以跟踪网络协议的通讯过程&#xff0c;本节通过TCP协议&#xff0c;在了解Wireshark使用的基础上&#xff0c;重温TCP协议的通讯过程。 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传…

人工智能-机器翻译:技术发展与代码实战

在本文中&#xff0c;我们深入探讨了机器翻译的历史、核心技术、特别是神经机器翻译&#xff08;NMT&#xff09;的发展&#xff0c;分析了模型的优化、挑战及其在不同领域的应用案例。同时&#xff0c;我们还提出了对未来机器翻译技术发展的展望和潜在的社会影响。 关注TechLe…

Shopee买家通系统自动下单更方便

Shopee购物平台的买家通系统为用户提供了一种便捷的自动下单方式&#xff0c;通过这一系统&#xff0c;用户可以轻松实现在虾皮平台购买商品的自动化操作。下面将介绍具体的操作流程&#xff0c;确保用户可以顺利完成整个购物流程。 首先&#xff0c;用户需要准备一个可用的虾皮…