【深海王国】小学生都能玩的单片机?零基础入门单片机Arduino带你打开嵌入式的大门!(10)

Hi٩(๑o๑)۶, 各位深海王国的同志们,早上下午晚上凌晨好呀~辛勤工作的你今天也辛苦啦

(o゜▽゜)o☆ 今天大都督继续为大家带来系列——小学生都能玩的单片机!带你一周内快速走进嵌入式的大门,let’s go!

(10)总结:学习Arduino踩过的坑

恭喜大家!来到了本系列最后一节,即将顺利完成本系列的学习,相信大家现在已经对单片机有了一定了解,这节我们要做个总结,大都督分享一下自己当初学Arduino时遇到的诸多问题,帮助大家避坑!

Arduino上传代码的问题:

  1. Arduino是可以直接使用标准串口上传代码的,不一定要使用USB接口。只要将USB转TTL串口模块连接至Arduino的标准串口即可(即0、1引脚)。
  2. 一部分Arduino需要冷启动才能上传代码,比如Arduino Nano、Arduino Pro Mini。也就是说,在上传之前,需要按住Arduino上的reset重置按钮,当Arduino IDE提示正在上传的时候,松开重置按钮,才能完成上传。
  3. 没有安装CH340驱动。(详见(4)CH340驱动安装与Arduino程序下载)
  4. 没有共地。(详见初识Arduino与基本单片机电路知识)

蓝牙串口模块问题:

  1. 熟悉大都督的小伙伴们都知道,大都督经常用的是BLE低功耗蓝牙HC-08,为什么呢。其中一个原因就是因为蓝牙功耗问题,传统蓝牙例如HC-05或HC-06模块的工作电压是3.3V,但是,用3.3V供电很可能会让蓝牙模块功率不足,甚至频繁断开连接的问题,而用低功耗蓝牙就不存在这个问题。

  2. 虽然蓝牙模块一般都是3.3V供电,但实际上用Arduino开发板上的5V引脚供电也是可以的,虽然理论上说这样有烧坏芯片的风险,但大都督本人亲身实验,用5V供电一段时间是没问题的,还可以解决传统蓝牙功率不足的问题,如下:用5V供电灯会更亮一点,哈哈。
    在这里插入图片描述

  3. 使用蓝牙模块连接手机APP不仅要打开蓝牙功能,还要打开手机定位,并且记得给权限。

  4. 当同一场所中蓝牙模块过多,会影响通讯和连接,尤其是低功耗蓝牙在这方面很不行,如果你要使用蓝牙的场景在人很多的场合,比如大学比赛,最好直接用传统蓝牙。

Arduino开发板供电问题:

  1. 在刚开始介绍单片机的时候,大都督就说过,嵌入式系统就是管家。虽然Arduino UNO开发板上有5V供电引脚,但是这并不意味着你真的可以用Arduino供电,怎么能让管家干下人的活呢?供电就要由专门的供电模块来。(详见(1)单片机的介绍与嵌入式基本知识)

  2. 如果需要连接的模块功率不高,或者模块不多,是可以用Arduino供电的,但是由于Arduino的供电归根到底是来自于USB转TTL模块的功率,所以,像传统蓝牙模块、Wi-Fi模块,并不一定能带得动,如果你连接的多了,更带不动,所以最好还是找个电源专门给它们供电吧。

  3. 如果你想给Arduino开发板供电,有四种方式:

    • 使用USB/Type-c下载接口供电:电压5v,最快捷简单的供电方法,找个充电宝就可以。

    • 使用5V引脚供电:Arduino开发板电源引脚中的5V引脚不仅可以为外部电子元件提供+5V电源,也可以用于为Arduino开发板自身供电,在PCB设计中常用的供电方式。

    • 使用电源接口供电:可以通过直流电源通过Arduino开发板的电源接口为其供电,直流电源电压为9V~12V,就是Arduino开发板上那个黑色圆头头,学名DC电源头5.5*2.1MM,可用12V锂电池供电。

    • 使用Vin引脚供电:直流电源电压必须为7V~12V。如果是电池模组供电可以考虑用,但还是比较不常用。

软串口问题:

  1. SoftwareSerial库只能提供一个额外的软串口!((8)软串口与SoftwareSerial库使用)
  2. 波特率越高越容易出现数据传输错误。
  3. 如果你需要很多串口,建议直接选Arduino Mega2560,它有四个硬件串口。

Arduino UNO内存问题:

Arduino uno开发板的主控是叫ATmega328P一个8位的单片机,Arduino Nano和Arduino Pro Mini也用的这个主控。资源很有限,它的ROM有32K,RAM只有2k,在开发时RAM真的很紧张,简单来说就是它的内存不太行。内存快满的时候就会像下面这样:

在这里插入图片描述

即使没到达满的状态也可能会导致Arduino uno 运行时重置或者卡死现象,如果你想做大项目,建议直接选Arduino Mega2560。

char与String,’ '与" ",字符与字符串:

刚学Arduino,肯定会因为字符和字符串问题犯迷糊,比如我们上一节的实战代码(详见(9)实战:使用软串口与蓝牙APP串口通讯)。大都督现在就给大家详细解释一下这两者的区别:

  • char:

    1. char是基础数据类型之一,用于存储单个字符。比如,char myChar = ‘A’;这里myChar变量存储了字符A。
    2. Arduino(C/C++语言)中,字符是以其ASCII码形式存储的,char类型的变量占用1个字节的内存(-128到127或0到255),可以存储一个ASCII码字符。
    3. char类型可以用来创建字符数组,通过这种方式可以用来表示字符串。例如:char myChars[] = “Hello”;这里myChars是一个字符数组,以\0(空字符)结尾,实际存储了Hello\0。
    4. 单引号' '用来包裹单个字符,与char类型搭配使用。例如:char a = 'A';
    5. 在进行串口通信时经常需要通过char()函数将ASCII转化为字符类型。
  • String:

    1. String类型是Arduino语言中的一个高级结构,用于存储和操作动态字符串。例如:String myString = “Hello World”;。

    2. String对象背后是动态分配的内存,可以在运行时增减其大小。这意味着可以随时向String对象中添加更多字符。

    3. String提供了丰富的方法来执行如拼接、比较、搜索、提取等操作。

    4. 双引号" "用来创建字符串字面量,可以包含零个或多个字符。与char数组或String对象搭配使用。

    5. 使用双引号创建的字符串,实质上是一个以NULL(\0)字符结尾的char数组。例如:char myString[] = “Hello”;实际上存储了H e l l o \0

Arduino常用的数据类型:

既然都说到了Arduino的char和String,那就顺便把Arduino常用的数据类型总总结一下吧:

  • int: 存储整数,通常占用2个字节(-32,768到32,767)。
  • unsigned int: 存储无符号整数,也通常占用2个字节(0到65,535)。
  • byte (或 uint8_t): 存储一个字节的无符号数,占用1个字节(0到255)。
  • long: 存储较大的整数,占用4个字节(-2,147,483,648到2,147,483,647)。
  • unsigned long (或 uint32_t): 存储较大的无符号整数,占用4个字节(0到4,294,967,295)。
  • short: 通常为16位的整数,占用2个字节。
  • float: 存储单精度浮点数,占用4个字节。用于存储有小数点的数值。
  • double: 在某些Arduino板上,如Arduino Due,double提供了更高的精确度,占用8个字节。但在许多其他Arduino板上(如UNO、Mega2560),double的实际精度和float相同,即占用4个字节。
  • bool: 存储真(true)或假(false)值。

经过本系列的学习,相信大家已经对单片机学习颇有信心了,哈哈,是不是没想象中那么难?加油,大都督看好你!之后大都督还会推出其他关于单片机的系列文章,大家可以继续关注哦!
最后感谢大家对本系列的支持!深海王国没你不行!

学到这里的你,今天也辛苦啦!需要的相关材料链接我都放在公众号「深海大都督」里了,回复「Arduino」就能获得啦~

哈哈,让焦虑不再蔓延,信息不再高壁,如果你觉得这篇文章对你有帮助,就来个免费的点赞吧!

(◍˃̶ᗜ˂̶◍)✩我深海大都督正式授予你深海王国公民的身份~

(・ω< )★ 加入深海大家庭,快乐摆烂每一天!

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

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

相关文章

Java学习笔记(多线程):CompetableFuture

本文是自己的学习笔记&#xff0c;主要参考资料如下 https://www.cnblogs.com/dolphin0520/p/3920407.html JavaSE文档 https://blog.csdn.net/ThinkWon/article/details/102508721 1、Overview2、重要参数3、主要方法3.1、创建实例&#xff0c;获取返回值3.2、线程执行顺序相关…

三十九篇:UML与SysML:掌握现代软件和系统架构的关键

UML与SysML&#xff1a;掌握现代软件和系统架构的关键 1. 引言 1.1 为什么系统设计如此关键 在当今快速发展的技术环境中&#xff0c;系统设计的重要性不言而喻。无论是软件开发还是复杂的系统工程&#xff0c;良好的设计是确保项目成功的基石。系统设计不仅关系到功能的实现…

day38动态规划part01| 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

**理论基础 ** 无论大家之前对动态规划学到什么程度&#xff0c;一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目&#xff0c;看我讲的理论基础&#xff0c;会有感觉 是不是简单题想复杂了&#xff1f; 其实并没有&#xff0c;我讲的理论基础内容&#xff0c;…

状态压缩动态规划(State Compression DP)算法详解

状态压缩动态规划&#xff08;State Compression DP&#xff09;是一种高效解决组合优化问题的技术&#xff0c;特别适用于那些状态空间较大且可以用二进制表示的情况。本文将详细讲解状态压缩DP的原理、常用的位运算技巧、以及具体的例题分析。 原理概述 状态压缩DP的核心思…

HTML5实现字母记忆配对游戏

HTML5实现字母记忆配对游戏 这个小游戏具有重新开始功能和难度设置功能。 “重新开始“按钮&#xff0c;点击它或完成一局游戏后&#xff0c;会自动开始新游戏。 下拉列表框&#xff0c;&#xff0c;难度设置&#xff0c;包含简单、中等和困难三个选项。 简单&#xff1a;8…

《梦醒蝶飞:释放Excel函数与公式的力量》5.4 Match函数

5.4 Match函数 5.4.1 match函数的概念 MATCH函数是Excel中的一个查找和引用函数&#xff0c;它用于在数据表或数组中搜索指定项&#xff0c;并返回该项在数组中的相对位置。以下是MATCH函数的几个关键概念&#xff1a; 1)查找值&#xff08;Lookup Value&#xff09; 这是…

Web 权限管理最佳实践:如何提升用户满意度与应用安全性?

引言 在当今数字化时代&#xff0c;Web应用的功能和复杂性不断增加&#xff0c;用户对在线服务的期望也在不断提升。为了提供丰富的用户体验&#xff0c;许多Web应用需要访问用户的个人信息或设备功能&#xff0c;如地理位置、摄像头和麦克风等。这些权限访问在提升应用功能的…

移动Web开发实战内容要点!!!

移动web开发 目录 移动web开发 第一章、Web开发标准与网页网站制作介绍 1.1Web开发标准 1.2网页基本构成元素 第二章、Web开发技术基础 2.1HTML的主要特点&#xff1a; 2.2HTML基本知识 2.3CSS样式 2.4JavaScript 第三章、打造移动Web应用程序 3.1为什么Android会成…

AI-智能体基础设施

个性化记忆需要世界模型来协助构建 业界有一个精简的Agent表达公示&#xff0c;即&#xff1a;Agent大模型&#xff08;LLM&#xff09;记忆&#xff08;Memory&#xff09;主动规划&#xff08;Planning&#xff09;工具使用&#xff08;Tool Use&#xff09;。基于该公式&am…

植物大战僵尸杂交版v2.1最新直装版,苹果+安卓+PC+防闪退工具+修改工具+高清工具+通关存档整合包更新

今天我要和各位聊聊一款让全网疯狂的游戏——《植物大战僵尸杂交版》。这可不是简单的游戏&#xff0c;它可是让B站的UP主“潜艇伟伟迷”一夜成名的大作&#xff0c;让无数玩家为之疯狂的魔改神作&#xff01; 记得2009年&#xff0c;《植物大战僵尸》横空出世&#xff0c;那时…

单片机学习记录

一&#xff0c;单片机及开发板介绍 1&#xff0c;基本介绍 单片机&#xff0c;英文Micro Controller Unit&#xff0c;简称MCU内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(…

深度相机辅助导航避障(三):地面点云滤除

前面的章节介绍了坐标变换,以及如何设置深度相机的坐标变换。那就可以很直观从机器人的坐标系对深度相机扫描到的障碍物点云进行处理。 在实际应用中,机器人正确估计周围地形,对于道路的可通过性、路径规划和障碍物检测等方面都很重要。那么在获取深度相机点云数据后就得准…

Qt入门小项目 | 实现腾讯会议登陆界面

文章目录 一、手写代码实现腾讯会议登陆界面二、使用UI设计器实现腾讯会议登陆界面 一、手写代码实现腾讯会议登陆界面 使用Qt控件与布局实现腾讯会议登陆界面。 示例&#xff1a; loginInCode.h&#xff1a; #pragma once#include <QtWidgets/QDialog> #include <QV…

安装zabbix时报错Could not resolve host: mirrors.huaweicloud.com;Unknown error解决办法

目录 1、问题原因 2、解决办法 3、知识拓展 DNS的区别 DNS配置文件解析 域名解析过程 4、书籍推荐 当安装Zabbix server&#xff0c;Web前端&#xff0c;agent时出现&#xff1a; [rootsc-zabbix-server ~]# yum install zabbix-server-mysql zabbix-agent安装过程中会出…

Token详解

一&#xff1a;Token是什么 token是具有访问权限的令牌&#xff0c;其本质是一串字符串。 如何创建token 用户在登录页面&#xff0c;输入账号和密码能够成功登录后&#xff1b;由后端签发并返回 token作用 用来判断用户当前的登录状态&#xff0c;根据当前用户登录状态给…

OceanBase 4.X-2F1A 仲裁高可用方案初探

作者&#xff1a;郑增权&#xff0c;爱可生 DBA 团队成员&#xff0c;OceanBase 和 MySQL 数据库技术爱好者。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 本文约 1500 字&#xff0c;预计阅读需要 5 分钟。 背景 对…

CS与MSF的权限互相传递/mimikatz抓取windows 2012明文密码

目录 CS和MSF的简单介绍 Metasploit Cobalt Strike 1、CS权限传递到MSF 2、MSF权限传递到CS 3、使用mimikatz抓取明文密码 通过修改注册表用户重新登录后抓取明文密码 今天的任务是两个 一个是CS与MSF的权限互相传递一个是抓取windows2012的明文密码 那就分别来完成 …

printf趣味代码,打印图案

文章目录 1.打印佛祖2.打印猫猫 (闪烁效果) 1.打印佛祖 #include <stdio.h>void budda_bless(){printf("///\n\ // _ooOoo_ //\n\ // o8888888o //\n\ // …

SpringBoot全局配置文件里的配置项

SpringBoot核心配置文件里可以配置的配置项&#xff0c;非常非常多&#xff01;Spring Boot Reference Guide靠后的附件里看到所有配置项和说明. 有关配置项&#xff0c;我们除了知道在哪里查询具体配置项以外&#xff0c;我们还应该知道一些细节知识点: ① SpringBoot给我们…

2024广东省职业技能大赛云计算赛项实战——集群部署GitLab

集群部署GitLab 前言 题目是这样的&#xff1a; 在Kubernetes集群中新建命名空间gitlab-ci&#xff0c;将GitLab部署到该命名空间下&#xff0c;Deployment和Service名称均为gitlab&#xff0c;以NodePort方式将80端口对外暴露为30880&#xff0c;设置GitLab服务root用户的密…