arduino程序-变量操作(基础知识)

arduino程序-变量操作(基础知识)

  • 1-7 arduino程序-变量操作
    • 太极创客网站类型资料
    • 变量类型范围超过上限会从下限开始
    • 长整型变量
    • 作用域(全局变量,局部变量)
    • 全局变量
    • 局部变量
    • 最后作业

1-7 arduino程序-变量操作

大家好这节课呢
我们一起来学习
Arduino变量的基本操作
在这里插入图片描述

通过这节课呢
您将学会如何在程序里
对变量呢进行一些基本的运算
接下来呢我会给大家介绍
Arduino的变量类型这个概念
最后呢我会给大家介绍一下关于
Arduino的变量
他的作用域

请打开 blink
实力程序
啊首先
我们对上一节课内容
进行一个简单的回顾好
在这里插入图片描述

上一节课里我们学到了如何
在程序里面创建一个
变量

并且
我们学习了如何对这个变量进行赋值
同时呢
我们学习了如何将这个变量应用到
程序中去
让程序根据我们的意愿来执行
在这节课里面呢
我们来一起来学习更多的关于
变量的知识

那么首先呢我来敲一段语句
请大家随着我敲这段语句的 呢
跟着我一起思考一下
啊这段语句它的含义
等我敲完以后我给大家做一个解释

好首先我们敲入
变量的名字 delaytime
然后我们敲这个
复制运算符等号
我们再敲一遍
这个变量的名字
然后我们加
输入一个加号
再输入
1,000最后我们用分号结束这段语句
接下来
我给大家解释下这条语句的含义
啊要解释这条语句呢
我们先要从程序的开头说起
我们知道每一次给arduino通电以后呢
这时候呢
啊他的第一件事就是执行这条语句
也就是说他会建了一个变量
这时候这个变量是等于3,000的
在这里插入图片描述

一定记住
这个时候电电量是等于3,000的好
那么接下来呢
耳边呢呢就要执行setup函数
我们看到在setup函数这个内容呢
没有提及关于这个函数的内容
那么这个时候arduino呢
是不会对这个变量
做任何变化
比如在这个过程中
迪丽炭依然等于3,000
好执行完在他函数以后呢
这是耳律呢
就开始进入到 loop 这个函数
好当他进入 loop 函数以后
那么他做的第一件事情是什么呢
就是执行这条语句好
在这里插入图片描述

现在他看到 delete 有
改变数值了
怎么改变呢
还记得叠他们现在等于多少吗
叠他们这个时候等于是3,000
那么这句句翻译成
另外一个含义呢
我给大家敲出来是什么呢
比如我们要告诉arduino

要改变你这个 delaytime 的数值了
你要改变成什么样子呢
也就是
改变成我现在在屏幕上敲的这个样子
为什么呢
因为这时候 dime 是等于3,000的
那么我们这条语句

实际的含义是什么呢
实际是告诉arduino
你要变成
3,000加1,000
也就是变成4,000了
那到这呢你可能会问我
呃你干嘛还那么麻烦
嗯写个4,000不就完了吗
何必要写这么长一段话呢
好你要是这么想的话呢
我要给你点一个大大的赞
为什么呢因为您在跟我一起思考好

我来给你解释一下吧
这两条语句
对arduino来说他们是完全不同的
为什么呢
我们一句一句说
让我们先把这条语句
让他先下场休息一会
ok 让
这套语句
保留在程序中

我们知道呢arduino
在运行loop函数的时候
他是逐条运行逐条运行
一条一条运行到最后一句的时候
他会返回到第一条
再次执行这条渔具
我们看到在这整个过程中
这个delaytime
一直保持在4,000这个数值
在这里插入图片描述

请记住在这种状态下
迪丽炭一直跑保持在4,000这个数值

好那么接下来我们把这条语句
让他下场休息一下
我们再请回刚才
我们让他休息的这条语句
让我们来看一下
这个时候程序的运行状态
啊我们记得啊
当arduino要进入到loop函数的时候
这时候呢delaytime只等于3,000呢
我们执行制完这条语句以后
在这里插入图片描述

delaytime等于31,000加11,000也等于41,000
为了便于大家学习
我在这里做一个小笔记
ok 这时候我们
我们的迪丽炭
等于41,000
好那么尔律诺继续往下执行
执行完
这条语句以后他又要返回到这里来了
返回到这里的时候呢
我们知道delaytime是等于4,000
那么在
这一次的时候
delaytime他要做一个再次的复值
那么这时候delaytime的变量值呢
是等于4,000加上1,000
那么delaytime也就变成什么呢
也就变成了
5,000了那么继续执行
执行到这一句
delaytime等于5,000
在这里插入图片描述

完成以后他又回到这一句来了
那么这个时候呢
我们知道底力碳等于什么呢
等于5,000好
那么5,000
加1,000
执行完这条语句以后
给他们等于多少呢
就变成了5,000在一边变变成了6,000了
怎么样大家看出区别来了吗
就这样反复执行反复执行
每执行一次
底雷泰姆都会产生一次变化
也就是他都会做一次
增加1,000的一次运算
那么这个时候呢
delaytime就不再是保持
恒定的一个数值
而是产生了变化了

那也许会问我
如果这样arduino每运行一次
他都要啊增加1,000
那这么着一直运行下去
岂不是这个数字就会变得无穷
无尽的大了吗
其实我也
很希望arduino有这么强的运算能力
但是很遗憾的是
这个世界上不存在任何一个电子设备
他能够存储无穷无尽大的数字

这个话题就扯远了
让我们把我们的思绪扯回来
ok 转回到哪了
转回到我们这个程序的最开始
这个地方

还记得
我们每一次创建一个变量的时候
我们要做的第一事情是什么呢
我们要做的第一个事情是告诉arduino
这个变量他的类型是什么
我们知道变量呢
是存储在arduino的内存里面的
那么arduino的内存
肯定是有一个上限的
那么这就是为什么
呃arduino
他不可能存出一个无穷无尽大的
呃数值也就是说
我们在每次创建一个变量的时候
我们都要告诉arduino这个变量
他是什么类型的
而这个工作的目的是什么呢
就是要告诉arduino
你在你内存里边
你给我预先留一个空间
这个空间大小
就是我要放这个数值的大小
那么我们怎么能判断我们这个
呃arduino的这个数值空间是多大呢
我们要根据我们实际程序里面
要用的这个变量
他可能达到最大值的极限状态下
他可能会多大
那么在这个
根据这个情况我们再来判断
究竟给这个变量什么样的类型

太极创客网站类型资料

我们知道 int 类型代表的是整形变量那么整形变量
他能所代表的数值的范围是多少呢
嗯我在这想不太出来了
啊其实诚心想不起来的
打个小广告
如果您以后在写程序
写arduino 程序的时候如果有一些啊
什么技术上的一些细节性的东西
记不太清了
您可以到我们太极创客的网站来
我们太极创客网站里面呢
有对arduino编程的一些
啊参考性的一些资料
在这里插入图片描述

那么如果要是想
查一查每一种数据类型
他所代表的数值范围是多少
可以来到这里数据类型这里我们找
刚才我们要想查一下整形
这个数据类型
他的
啊点亮范围我们点进去看一下哈 ok
请看这里说明
啊找找整数的范围

-三万两千七百六十八到
正32,767

在这里插入图片描述

好那我们再回到刚才那个程序
我们再来看一下
在这里插入图片描述

变量类型范围超过上限会从下限开始

好刚才我们说到delaytime这个变量
那么他在每执行一次以后
他要增加增加增加
增加到最大值的时候
他最多也就只能增加到
32,767
这个数字
他不能再超过这个数字了
如果要是到了这个数字的上线以后
我们还在对他进行增加
这样的运算结果会是怎么样的呢
结果会是让这个delaytime这个数据
返回到他的
从最上限
返回到他的最下限
也就是说
我们如果对
delaytime这个数字
啊这个数值
我们再给他增加增加增加
增加到超超过20,000
那32,767的时候
他就会返回到哪呢
返回到负的32,768
然后再加加加加加
一直再
加到32,767的时候
在超过这个数值
这时候他又返回到这个数值了

相反的如果我们对一个数值
如果我们对他不断的再去减
如果他减的超出了他下限的话
他又会返回到他的最上限去

这就好像我们玩那个吃豆似的
你知道有吃豆的那个
在有个通道他从屏幕的右边
出去以后他就会从屏幕的左边进来
这感觉很像是那个吃豆的那个状态
这时候你也许会说了那我要是
呃我的一个数值特别大

长整型变量

我要超过3万多怎么办呢
好没问题
我们还回到
变成参考资料这个页面呢我们看
在这呢我们列出了所有
而对 no 的数据类型
其中呢
啊整形是我们学过的一种类型
我们再看有没有比他长的呢
ok 这是一个长整形
感觉好像听名字像比较长的哈
确实他比整
形长能代表的数字要大
我们点进去看一下啊
ok 我们前面先不去管
我们看到树枝从负的多上的就是哎呦
天呐天呐天呐天呐
反正是复制一个很大的数字
到正的什么
也是一个挣了很大的一个数字

那讲到这呢也许你还会问我
那我们就都把这些
啊所有的程序里面的变量
我们就都给他一个
最大的一个数据类型
不就完了
干嘛还什么长整形还整形呢
这就涉及到我们写程序的时候
我们要考虑
实际我们这个编程的对象的状态

我们要我们知道
我们现在学的是什么呢
是给arduino
他的内存是很有限的
那么
如果我们把所有的数据变量都给他
一个很大的数据类型
事实上
这是对arduino内存那个很大的浪费
也有的时候我们可能程序还没写完呢
内存不够了
这就是为什么我们要根据实际情况
对这个病量进行一个啊
定义因为我们这个程序呢
纯粹是为了教学使用
所以我们这个变量呢
我们没有一个特别实际的含义
我们现在试想一下
假如我们要是给一个
啊变量这个变量他是温度
是我们家庭里边的温度
那么想一想
其实给他一个整数类型就足够了
因为不可能
我们家里温度能达到32,000多度
那是挺可怕一件事情
换句话说他也不可能
达到负的32,000多度
那所以这个整形变量
呃他是足够使用的了

但是如果我们要是比如说我们要统计
统计一个什么中华人民共和国人口
那这个时候我们要给32,000多
呀这个就肯定是太小了
那么这个时候我们就要给他一个
大一点的变量

换句话说
我们在写程序的时候
我们在建立一个变量的时候
我们要根据这个变量
他实际可能会
啊需要多大或者多小
然后我们再根据他这个需求
那再给他变量类型
这样做目的呢
说白了就是为了
能够让内存很有效的利用

作用域(全局变量,局部变量)

这节课讲到这呢
您可能会觉得
变量基本上我们就学的差不多了吧
我告诉您您错了
我们还有一个非常重要的一个变量
知识点我们还没有学到
而这个这边这个知识点
他的重要性
不亚于我们目前已经学到了这些知识
他是什么呢
就是变量的作用欲
天呐作用欲哈哈哈
不用紧张
其实这个理这个道理很简单
那我来给大家讲一下

什么是变量的作用欲哈
我们学到这里以后
我不知道你有没有好奇
我们为什么要把
啊建立变量这个过程写在程序最开始
而且是所有的函数的外面
括号的外面
那么如果我们要把这个呃这个变量
我们把它
起到一个函数的里面
在这里插入图片描述

为什么样的结果呢
我告诉你这会产生大大的不同

为什么呢

所有的变量都有他的一个工作范围
也就是说当我们把一个变量
我们在建立他的时候
如果我们
把这个变量建立在某一个函数
我们现在看到这是setup这函数的里面的时候
那么这个变量
只允许在这个函数内部使用
如果我们到别的函数里面
还要使用这个变量
比如我们现在在录盘数里面
我们要使delaytime
而这个delaytime
他是在setup函数里面建立的
我们试试看
在这里插入图片描述

如果我们变异会有什么结果呢

好吧出错了为什么呢
我看
delay time was not declared
in this scope
我们这句话说白了是什么呢
您这个变量
没有在应有的范围里边进行一个定义
换句话说
我们这个变量
in delay time

这个迪丽泰们在使用的时候
他是跨越了两个哈不同的函数
那么在这个时候
这个迪丽泰
他呢也就会产生了一个错误

全局变量

那么我们调整一下我们再把它放回到
两个函数的外面
这个时候呢我们再来
编一下那么这种这一次呢我们看到
呃计算机程序就没有再报错了
为什么呢
因为我们把这个
函数他的建立过程放到了整个程序
所有函数
记住整个程序所有函数
只有两个函数
那么他是建立在这两个函数外面的
这种建立在外面的
变量他有一个特殊的名字
在这里插入图片描述

他叫什么呢
他叫做全局变量
换句话说这种变量
他是可以在任何一个函数里面使用的
我们做一个实验
现在我们如果把
这个变量他的创建过程
现在在外面我们如果要是在 set up
我要用的
比如说我们给在他
这个函数增加一个
新的语句我们告诉他
Delaytime等于4,000
那么同时呢我们这边Delaytime呢
在loop这边也用到
他在两个函数都有用到
我们再进行一下编译编译
ok 我们看一下好这次就没有错误了
在这里插入图片描述

局部变量

相对应的话呢我们刚才
试着把这个变量
我们把它放到setup函数里面了
那么现在在这种情况下
这个
迪丽炭这个变量是只能应用于
在他这个函数里面的
如果要是在别的地方他就会爆错

那么在这种状态下
这个变量
他的学名叫什么呢
请注意他的学名叫做
局部变量
也就是顾名思义了
就是他只能在这个函数的局部
内部使用
如果超出这个函数范围
那么他就会啊
报错了那么试想一下
假如说我们有在这我们建立一个
点亮他名叫 delaytime
3,000我们同时我们在
Loop函数里边
我们又给他建立了一个变量
同名同姓的双胞胎都叫
delaytime我们这次给他1,000吧
好吧
Ok

在这里插入图片描述

那么现在我们看到有两个一模一样
名字的
两个点亮分别一个是在setup函数里边
一个是在六盘数里边
如果这种情况下我们如果
这些进行变异的时候
结果会是什么样的呢
哎没有问题是通过的
为什么呢
因为我们这两个变量
都是在自己不同的这个函数范围内
所定义的
但是这样的状态下
这两个变量请注意这两个变量
他们虽然名字相同
事实上他们没有任何关联
虽然他们的名字是一样的
但是他们是完全不同的两个变量
也就是说对于尔滨诺来说
这个变量
和这个变量
他们是完全不同的两个变量
尽管他们有同样的名字
但是他们的
因为他们的作用与范围不同
所以他们是不了两个不同的变量
请记住这一点

另外请注意呢
我刚刚在两个不同的函数里面

两个不同的变量
用相同的名字来起名
这种做法只是为了呃教学使用
那么实际上我们在
真正编程的过程中尽量不要这么做
这么做的话会把自己搞糊涂的
除非犯不得已
否则否则尽量不要这么做好吧

最后作业

在这里插入图片描述

那这节课到这里呢就快要结束了
最后呢我给大家留一个
实际操作的一个小作业
啊我们这节课提到了很多种数
不同的数据类型
我们呃提到了关于
整数型和长整型这两种
这两种数据类型
请大家呢
如果有时间的话
来到我们太极上课的网站
你们来观察一下
我们有这么多种不同的数据类型
请仔细看一看
每一种数据类型代表什么
我在这想说一下就是目
前我们
啊只学了关于代表数字的这几
几种数字类型
那么有的比如说像是字符型
这一个
字符型的
还有比如说像字符串形
还有像这种数组类型的
目前呢我们是还没有学到的
其他的呢
目前我们基本上已经学到
而且还有这种
voted 空型的
你现在我们还没有提到
虽然我们已经见过了
但我们还没有提到
那么说白了就是说
刚才提到这几种类型以外
其他类型请大家留意一下
比如像呃福典型
或者说像双精度伏点性
他们能代表的数值范围是什么样子的

还有一点就是我给大家留一个小
思考题也会让大家小寻宝宝
如果我们现在要表示一个小数的话
我们用哪一种数据类型
目前我们所讲到的都是整数类型的
数字那么如果我们要是一个小数
3.14派这个数字
那么用哪种数据类型呢
我给大家一个
给大家一个小提示float
请注意屏幕
给大家一个小提示
好这节课就讲到这里了
谢谢各位再见

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

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

相关文章

Ubuntu、centos、openEuler安装docker

目录 1.在 Ubuntu 上安装 Docker 1. 1 更新软件包 1. 2 安装必要的依赖 1.3 添加 Docker 的 GPG 密钥 1.4 添加 Docker 仓库 1.5 更新软件包 1.6 安装 Docker 1.7 启动并启用 Docker 服务 1.8 验证安装 1.9 运行测试容器 1.10 非 root 用户运行 Docker 2.在 CentOS…

多节点网络流量对比分析在业务性能分析中的应用

在现代企业网络环境中,网络流量分析已成为确保业务连续性和优化性能的关键工具。特别是多节点网络流量对比分析,通过对比不同节点间的流量,能有效发现潜在问题,提高网络运维效率。本文将探讨多节点网络流量对比分析在业务性能分析…

【数据结构】哈希表二叉搜索树详解

💎 欢迎大家互三:2的n次方_ 💎所属专栏:数据结构与算法学习 🍁1. 二叉搜索树 二叉搜索树也称为二叉查找树或二叉排序树,是一种特殊的二叉树结构,它的特点是: 1. 若左树不为空&am…

顺序表的代码实现

顺序表的代码实现 1.认识什么是顺序表1.1顺序表的优缺点 2.实现顺序表代码准备3.顺序表的代码实现3.1 顺序表结构体的定义3.2 顺序表的初始化3.3 顺序表的销毁3.4 顺序表的输出打印3.5顺序表的扩容3.6 顺序表的头部插入(头插)3.7 顺序表的头部删除(头删)3.8 顺序表的尾部插入(尾…

2种常用的取消word文档”打开密码“方法

在日常工作中,我们有时会遇到需要取消Word文档“打开密码”的情况。无论是因为忘记密码,还是出于文档共享的需要,掌握几种有效的取消密码方法都显得尤为重要。以下是2种常用的方法来取消Word文档的“打开密码”。 方法一:文件另存…

二叉树--堆(上卷)

二叉树–堆(上卷) 树 树的概念与结构 树是⼀种⾮线性的数据结构,它是由 n(n>0) 个有限结点组成⼀个具有层次关系的集合。把它叫做 树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,⽽…

智慧医院信息系统思维导图

智慧医院信息系统 "思维导图智慧医院信息系统, 用一张图解析智慧医疗信息系统 本文转载:有了这个智慧医院信息系统思维导图,没人不明医疗信息化

是时候学习Grid布局了

一、序言 先说什么?当然先说大家最关心的兼容性了 CanIUse 嗯,对于非要兼容IE的开发者,我建议,量力而行!兼容性还是不如Flex 当然,如果你flex够熟悉了,但却被一些布局有时候难倒,我…

学习react-登录状态验证

1.创建三个页面LoginPage, HomePage,NotFoundPage用于Router 创建LoginPage.tsx用于做登录页面 // LoginPage.tsx const LoginPage (props:LoginProp) > {const navigate useNavigate();return( <h1 onClick{ ()>{navigate("/");}}>Hello Login, {pr…

昇思25天学习打卡营第1天 | 快速入门教程

昇思大模型平台&#xff0c;就像是AI学习者和开发者的超级基地&#xff0c;这里不仅提供丰富的项目、模型和大模型体验&#xff0c;还有一大堆经典数据集任你挑。 AI学习有时候就像找不到高质量数据集的捉迷藏游戏&#xff0c;而且本地跑大数据集训练模型简直是个折磨&#xf…

JQuery简单实现ul li点击菜单项被选中的菜单项保持高亮状态(导航ul li点击切换样式)

效果&#xff1a; JS&#xff1a; $(function () {//遍历list&#xff08;一般为ul li&#xff09;$("#menu a").each(function () {//给当前项添加点击事件&#xff08;点击后切换样式&#xff09;$(this).bind(click,function () {// 移除其他所有项的active类$(&…

挑战房市预测领头羊:KNN vs. 决策树 vs. 线性回归

挑战房市预测领头羊&#xff08;KNN&#xff0c;决策树&#xff0c;线性回归&#xff09; 1. 介绍1.1 K最近邻&#xff08;KNN&#xff09;&#xff1a;与邻居的友谊1.1.1 KNN的基础1.1.2 KNN的运作机制1.1.3 KNN的优缺点 1.2 决策树&#xff1a;解码房价的逻辑树1.2.1 决策树的…

【日常设计案例分享】通道对账

今天跟同事们讨论一个通道对账需求的技术设计。鉴于公司业务线有好几个&#xff0c;为避免不久的将来各业务线都重复竖烟囱&#xff0c;因此&#xff0c;我们打算将通道对账做成系统通用服务&#xff0c;以降低各业务线的开发成本。 以下文稿&#xff08;草图&#xff09;&…

局部变量,在使用时再定义

关于局部变量&#xff0c;适时定义局部变量&#xff0c;可提高代码清晰度和可读性&#xff0c;并能规避不必要的代码bug 局部变量&#xff0c;在使用时再定义&#xff0c;提高代码可读性 下面代码中的2个方法&#xff0c;第1个 verifyTaskApply 调用第2个 existAppliedTask 。…

20240730 每日AI必读资讯

&#x1f3ac;燃爆&#xff01;奥运8分钟AI影片火了&#xff0c;巴赫主席&#xff1a;感谢中国黑科技 - 短片名为《永不失色的她》&#xff08;To the Greatness of HER&#xff09;&#xff0c;由阿里巴巴和国际奥委会联合推出。 - 百年奥运史上伟大女性的影响故事在此被浓缩…

Rust语言入门第七篇-控制流

文章目录 Rust语言入门第七篇-控制流If 表达式基本结构特点和规则示例 let 语句中使用 ifloop 循环基本结构特点示例综合示例 while 循环基本结构特点示例综合示例 与 loop 循环的区别 for 循环基本结构详细说明特点示例综合示例 Rust语言入门第七篇-控制流 Rust 的控制流是指…

Oracle Database 23.5 - for Engineered Systems版本发布

要尝鲜的可以在https://edelivery.oracle.com/下载。对于x86的本地版本再等等吧。 安装可参考飞总的&#xff1a;oracle 23ai&#xff08;23.5.0.24.07&#xff09;完整功能版安装体验 – 提供7*24专业数据库(Oracle,SQL Server,MySQL,PostgreSQL等)恢复和技术支持Tel:1781323…

Python数值计算(12)

本篇说说Neville方法。Neville方法的基础是&#xff0c;插值多项式可以递归的生成&#xff0c;有时进行插值的目的是为了计算某个点的值&#xff0c;这个时候并不需要将拟合曲线完全求出&#xff0c;而是可以通过递归的方式进行计算&#xff0c;具体操作如下&#xff1a; 例如…

OpenGL学习 1

一些唠叨&#xff1a; 很多时候&#xff0c;都被Live2d吸引&#xff0c;去年想给网页加个live2d看板娘&#xff0c;结果看不懂live2d官方给的SDK&#xff0c;放弃了。今天又想弄个live2d桌宠&#xff0c;都已经在网上找到Python 的 Live2D 拓展库了&#xff0c;并提供了用QT实现…

昇思25天学习打卡营第19天|ResNet50 图像分类案例:数据集、训练与预测可视化

目录 环境配置 数据集加载 数据集可视化 Building Block Bottleneck 构建ResNet50网络 模型训练与评估 可视化模型预测 环境配置 首先指出实验环境预装的 mindspore 版本以及更换版本的方法。然后&#xff0c;它卸载了已安装的 mindspore 并重新安装指定的 2.3.0rc1 版本…