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等资源可以直接调用函数使用,无需配置需要配置外设工作方式,甚至时钟
使用特点关于常用的一些模块器件通过引入库文件后直接调用函数使用需要写时序和控制方式,读写命令数据函数
开发板特点引脚数量较少根据不同型号选择不同引脚功数量的器件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python学习:opencv+用鼠标画矩形和圆形

目录 步骤 定义数据 新建一个窗口黑色画布 显示黑色画布 添加鼠标回调函数 循环 一直显示图片 一直判断有没有按下字母 m 关闭所有窗口 鼠标回调函数 步骤 当鼠标按下记录坐标并记录鼠标标记位为true&#xff0c;移动的时候就会不断的画矩形或者圆&#xff0c;松下的时候就再…

Apache Doris 在某工商信息商业查询平台的湖仓一体建设实践

本文导读&#xff1a; 信息服务行业可以提供多样化、便捷、高效、安全的信息化服务&#xff0c;为个人及商业决策提供了重要支撑与参考。本文以某工商信息商业查询平台为例&#xff0c;介绍其从传统 Lambda 架构到基于 Doris Multi-Catalog 的湖仓一体架构演进历程。同时通过一…

CC++内存管理方式

文章目录 1. C/C内存分布总结 C语言中动态内存管理C内存管理方式new/delete操作内置类型new和delete操作自定义类型c推荐是用new和deleteoperator new与operator delete函数 定位new 1. C/C内存分布 我们先来看下面的一段代码和相关问题 int globalVar 1; static int static…

用Python手把手教你WordCloud可视化

目录 WordCloud是什么&#xff1f; 具体使用 总结 WordCloud是什么&#xff1f; WordCloud是一种数据可视化技术&#xff0c;通过根据文本中单词的频率或权重来生成一个视觉上吸引人的词云图。在词云图中&#xff0c;单词的大小和颜色通常与其在文本中的出现频率相关&#…

STM32F1外部中断EXTI

目录 1. EXTI简介 2. EXTI基本结构 3. AFIO复用IO口 4. EXTI框图 5. EXTI程序配置 5.1 首先先配置要使用的GPIO口的引脚 5.2 配置AFIO数据选择器&#xff0c;选择想要中断的引脚 5.3 EXTI配置 1. EXTI简介 EXTI&#xff08;Extern Interrupt&#xff09;外部中…

Qt创建和使用动态库链接

首先建立库文件 顺序确认完成后&#xff0c;构建完成 注意&#xff1a;上图中mydll_global.h中的内容可以复制到mydll.h中去&#xff0c;在以后调用时只调用mydll.h即可&#xff0c;否则调用时需要两个头文件同事使用。 在mydll.h和mydll.cpp中可以正常编写代码&#xff…

这个sql有点东西,记录一下

我有一个需求&#xff1a;在订单表里面查询指定时间的订单数据&#xff0c;如果要是没有订单的话&#xff0c;需要展示当天日期和数据&#xff0c;数据为0 先看一下效果&#xff1a; 话不多说&#xff0c;直接上SQL SELECTdate_range.date AS 日期,COUNT( oco.id ) AS 总订单…

计算机网络——数据链路层-差错检测(奇偶校验、循环冗余校验CRC)

目录 奇偶校验 循环冗余校验CRC 发送方操作 接收方操作 生成多项式 举例-1 举例-2 我们知道&#xff0c; 实际的通信链路都不是理想的&#xff0c;比特在传输过程中可能会产生差错&#xff1b;1可能变成0&#xff0c;而0也可能变成1&#xff0c;这称为比特差错。 如下…

浪潮信息 KeyarchOS 安全可信攻防体验

1. KeyarchOS——云峦操作系统简介 KeyarchOS 即云峦服务器操作系统(简称 KOS)是浪潮信息基于 Linux 内核、龙蜥等开源技术自主研发的一款服务器操作系统&#xff0c;支持 x86、ARM 等主流架构处理器&#xff0c;广泛兼容传统 CentOS 生态产品和创新技术产品&#xff0c;可为用…

c++--面向对象特性

1.面向对象指的是继承&#xff0c;封装&#xff0c;多态。 继承主要关注类的构造&#xff0c;赋值&#xff0c;析构。 以下对多态&#xff0c;封装进行补充说明。 2、多态 2.1.定义 a.赋值 派生类的指针&#xff0c;可以赋值给基类的指针。 派送类的对象&#xff0c;可以赋值给…

Avalonia中使用Prism实现区域导航功能

前言 上一篇文章我们讲了在Avalonia开发中&#xff0c;引入Prism框架来完成项目的MVVM迁移。本章内容将带领大家学习如何在Avalonia中使用Prism框架实现区域导航功能。如果你还不知道Avalonia中如何引入Prism框架&#xff0c;请看我上一篇文章&#xff1a;Avalonia框架下面使用…

【WPF.NET开发】构造动态布局

本文内容 系统必备创建项目配置默认的 Grid Panel 控件向面板中添加控件测试布局汇总所有内容后续步骤 在动态定位中&#xff0c;您通过指定子元素相对于父元素应该如何排列以及应该如何包装来排列子元素。 您还可以将窗口和控件设置为在其内容扩展时自动扩展。 适用于 Vis…

Oracle merge into语句(merge into Statement)

在Oracle中&#xff0c;常规的DML语句只能完成单一功能&#xff0c;&#xff0c;例如insert/delete/update只能三选一&#xff0c;而merge into语句可以同时对一张表进行更新/插入/删除。 目录 一、基本语法 二、用法示例 2.1 同时更新和插入 2.2 where子句 2.3 delete子句 2.4…

数据库Delete的多种用法

数据库的Delete操作是用来删除数据库中的数据记录的&#xff0c;它是数据库操作中的一种重要操作&#xff0c;能够帮助用户删除不需要的数据&#xff0c;以便保持数据库的整洁和高效。在使用Delete操作时&#xff0c;需要注意确保操作的准确性和安全性&#xff0c;以免误删重要…

[JavaScript前端开发及实例教程]计算器井字棋游戏的实现

计算器&#xff08;网页内实现效果&#xff09; HTML部分 <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>My Calculator&l…

Ruff智能物联网网关助力工厂数智化运营,实现产量提升5%

数字化转型是大势所趋&#xff0c;以工业互联网为代表的数实融合是发展数字经济的重要引擎&#xff0c;也是新质生产力的一大助力。工业互联网是新工业革命的重要基石&#xff0c;加快工业互联网规模化应用&#xff0c;是数字技术和实体经济深度融合的关键支撑&#xff0c;是新…

回归预测 | MATLAB实现CNN-BiLSTM(卷积双向长短期记忆神经网络

效果一览 基本介绍 提出一种同时考虑时间与空间因素的卷积&#xff0d;双向长短期记忆&#xff08; CNN-BiLSTM&#xff09;模型&#xff0c;将具有空间局部特征提取能力的卷积神经网络&#xff08;CNN&#xff09;和具有能同时考虑前后方向长时间信息的双向长短期记忆&#xf…

JavaScript基础知识21——for循环

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 今天学习for循环&#xff0c;以下为学习笔记。 1、while循环和for循环有啥不同&#xff1f; 1.1、在实际开发中&#xff0c;while循环用来解决循环次数不确定时使用&#xff0c;当一个循环不确定会循环多少次时&#…

【每日OJ —— 94. 二叉树的中序遍历】

每日OJ —— 94. 二叉树的中序遍历 1.题目&#xff1a;94. 二叉树的中序遍历2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目&#xff1a;94. 二叉树的中序遍历 2.解法 2.1.算法讲解 1.首先如果在每次每个节点遍历的时候都去为数组开辟空间&#xff0c;这样的效率太低…

OWASP安全练习靶场juice shop-更新中

Juice Shop是用Node.js&#xff0c;Express和Angular编写的。这是第一个 完全用 JavaScript 编写的应用程序&#xff0c;列在 OWASP VWA 目录中。 该应用程序包含大量不同的黑客挑战 用户应该利用底层的困难 漏洞。黑客攻击进度在记分板上跟踪。 找到这个记分牌实际上是&#…