当前位置:首页 » 服务存储 » arduino动态存储原始码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

arduino动态存储原始码

发布时间: 2023-01-07 15:05:36

Ⅰ 什么是arino

Arino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arino板)和软件(Arino IDE)。它适用于爱好者、艺术家、设计师和对于“互动”有兴趣的朋友们。
Arino是一个基于开放原始码的软硬件平台,构建于开放原始码simple I/O接口版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。
Arino包含两个主要的部分:硬件部分是可以用来做电路连接的Arino电路板;另外一个则是Arino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arino电路板后,程序便会告诉Arino电路板要做些什么了。
Arino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arino的编程语言来编写程序,编译成二进制文件,收录进微控制器。对Arino的编程是利用 Arino编程语言 (基于 Wiring)和Arino开发环境(基于 Processing)来实现的。基于Arino的项目,可以只包含Arino,也可以包含Arino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。

不知道是不是你想要的结果,希望对你有帮助吧!

Ⅱ Arino和51单片机,两者有什么关系或区别

区别:

1、arino用的是AVR单片机,AVR单片机跟51单片机内部结构不同(寄存器多少和名称都 不一样),编程工具烧写软件均不一样。
2、arino编程将一些输入输出方法编成了子程序(库函数),应用更加方便。

3、arino在软件开发反面考虑的更多的是功能的实现,而单片机开发还需要考虑相应的外围电路,和底层软件。

关系:

单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。



拓展知识:

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。

很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。

Arino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arino板)和软件(Arino IDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。

它构建于开放原始码simple I/O接口版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arino电路板;另外一个则是Arino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arino电路板后,程序便会告诉Arino电路板要做些什么了。

Ⅲ arino的代码中changeTime = millis()是什么含义为啥要引入个milli

含义是:这个函数会返回一个值‘该值代表当前cpu的时间’单位为微秒。

举例如下:long begintime=mills();endtime=mills();然后用endtime—begintime算出时间差,这个函数可以用来定时,这样可以不用占用cpu时间,写长的程序时,这个函数很有用。

Arino构建于开放原始码simple I/O接口版,并且具有使用类似Java、C语言Processing/Wiring开发环境。

主要包含两个的部分:硬件部分是可以用来做电路连接的Arino电路板;另外一个则是Arino IDE,计算机中的程序开发环境。只要在IDE中编写程序代码,将程序上传到Arino电路板后,程序便会告诉Arino电路板要做什么。

(3)arino动态存储原始码扩展阅读

Arino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。

对Arino的编程是通过 Arino编程语言 (基于 Wiring)和Arino开发环境(基于 Processing)来实现的。基于Arino的项目,可以只包含Arino,也可以包含Arino和其他一些在PC上运行的软件,他们之间进行通信 来实现。

Ⅳ 漫谈Arino内置的通讯协议

如果按照网络里面的定义,那么通讯协议的解释如下:

通信协议又称通信规程,是指通信双方对数据传送控制的一种约定。约定中包括对数据格式, 同步方式,传送速度,传送步骤,检纠错方式以及控制字符定义等问题做出统一规定,通信双方 必须共同遵守,它也叫做链路控制规程。 好吧,如果抄袭到这里,我肯定不会收到读者的鲜花,而是板砖和臭鸡蛋。文抄公谁不会做?
那么,对于业余电子爱好者而言,如何来快速而又简单地理解通讯协议?
其实,我们可以简单地这么来理解,对于人类世界来说,在中国范围内,那么我们可以将普通话看成是一个通讯协议。
也就是说,当有一个人懂得汉语的人要对另外一个懂得汉语的人表达自己意见的时候,他可 以使用“普通话”这个通讯协议和另外一个懂得普通话的人进行沟通。
同样的,我们也可以将英语看成人类世界的另外一个版本的通讯协议。
而在电子世界中,我们通常所谓的通讯协议都是数字通讯协议,在数字通讯协议中,小到 各种电子零件,大到电脑,它们之间互相沟通其实都是通过 0 或者 1 两个电位水平来进行通讯的(当 然,还有别的表达方式,如差分电位,这里不细表,作为爱好者,我们将且这么认为罢)。

大家知道,当我们采用 0,1 来进行信息表达的时候,如果只表达一次,即每次只说 1 或者 0 。那么这次表达只能够蕴含两个意思,或者你说了 0,这就表示“没有”,或者你说了 1,这就表示“有”。
但是,我们总该知道,这个世界哪里这么简单?比如你女友问你现在温度是多少度,你却 回答说“没有”或者“有”,我相信,你的女友少不得给你来一记九阴白骨抓。
幸好,我们并没有走到绝路,其实,如果你有一个比较耐得住性子且愿意陪你搞怪的女友。
那么我们可以这样来解决“问温度”的问题:
我们这样设想,如果你事先和女朋友约定如下:

好吧,恭喜你,尽管这个例子非常地无聊。但是,你和你的女友已经共同创造了一种全新的“通 讯协议”。
当然,我们不能想得这么简单,这个世界非常复杂,所以,我们需要进行复杂的表达。
比如说,你女友正在问你温度问题的时候,你忽然发现她老娘在背后看着你们俩发傻,我 相信,明智的你肯定不会继续这样傻干下去了。这个时候,你肯定得想办法打个哈哈蒙混过关, 诸如“阿姨,您怎么亲自来了?”什么的。
人类世界的沟通,可以用语言来进行复杂的表达,而语言由于其音节音调的多样性。所以 可以进行复杂的表达。
普通话中的“你”“我”“他”三个字,有三种发音,听者肯定可以区分三者的含义。
但是,在电子的数字通讯世界里,只有 0 和1这两个基本元素。就如前面提到的,它只能在一个时刻里面只表达一次。怎么办?
解决的方法是,我们用一组 0 和 1 的组合来进行复杂意义的表达。
如,我们可以用 00001 表示现在温度是 1 ,00010 表示现在是 2 ,00011 表示现在是 3 。 当然,这种表达的方法是二进制的(关于二进制,八进制,十进制等数学进制的概念和互相转换, 请参考网上的文档)。
所以,简而言之,在电子的世界里面,所谓的通讯协议,其实就是一个事先规定的规则, 我发送什么样的 0 和 1 的组合代表什么意思。
你如果事先了解了这个规则,这就是所谓的你“兼容”这个通讯协议。如果不了解,那 就是所谓的“不兼容”。

一个通讯协议包含哪些要素呢?在此罗列如下:

处于一个通讯网络下的各个电子零件在进行通讯的时候,首先必须要采用共同的电压 水平。因为,数字通讯的基本规则就是 LOW(通常是 0V,当然还有别的电压水平,如果是 0V,这个电压并非指确定的 0V,而是大约在 0V 左右)表示 0,表示“没有”。HIGH(事先 约定的高电平,如 3.3V,5V,12V 等。如果是 3.3V,那么这个值并非是确定的 3.3V 等,而 是电压高到大约 3.3V 左右)表示 1,表示“有”。

试想一下,如果两个电子零件相互之间连基本的工作电压都不一致,你还妄图让它们进 行通讯,那么除了冒烟或者是通讯失败,你几乎得到什么别的结果。

举个例子,如你手头的一个零件 A,输出 0V 表示开关闭合,输出 5V 表示开关打开。现 在另外一个零件 B,它认为 -12V 表示开关闭合,0V 代表开关打开。姑且不去讨论会不会烧掉 电路的问题。那么不管 A 发送什么电压给 B,B 会永远都认为 A 是处于开关打开的状态,因为 不管是 0V 还是 5V 都已经高于了 0V 这个限度。

继续举一个例子,如,你和你的女友约定,如果你拿手指头点点她的额头表示你现在很无奈(你的手指很温暖,女友很幸福)。如果你拿着一把烧红的烙铁打算点点她的额头,这还 会让她认为你打算让她认为你很无奈吗?
不过,需要注意的一点是:通常情况下,我们在网上可以下载到的各种 IEEE 的通讯协议 标准规范里面都不会对电压进行直接的规定。
其实,这也很好理解,我们只需要保证处于通讯中的双方采用同样的电压就行了。
这就好像,如果你和你的女友是超人和女超人,那么你拿个烙铁点她的额头,她还是会理 解为你是在表达你的无奈。
实际上的例子则是:在实际应用中,如 canbus 总线,有的总线的通讯电压是 3.3V,有的 在是 5V,甚至还有使用 12V。
而之所以在此提出这一点。是因为有很多的新人爱好者在使用数字传感器的时候,往往不 会去考察它的通讯电压。而这往往会导致通讯失败,甚至烧毁电路元器件。

所谓的帧长度就是:到底一个信息用了多少个 0 和 1 来组成。
这个好理解,因为是采用一串的 0 和 1 的组合来代表意义,那么我们设想,信息的发送方 如果没有预定多少个用 0-1 来表示一个完整的组合。那么假设我们按照如下的方式发送信息呢:
一次性发送:0101001011100101001010100
如果拆分成 4 个一组呢?: 0101-0010-1100-1010-0101-0100
显然,前者你根本就不知道是什么意思。你哪里知道是多少个数字代表一个信息?
而后者,你虽然不知道意思,但是好歹,知道发送了 6 个信息过来。
在帧长度的实际应用中,有些通讯协议采用了停止位的方法,而所谓的停止位,类似于上 面的 0101-0010 之间的“-”,通常的做法是使用一个较长的低电平或者高电平。而有些的通 讯协议则是,事先约定了多少个 0-1 组合就是表示一个信息。也就是发送方一旦开始发送,接 收方直接照着固定的个数,自行将一整个的 0-1 序列拆分。 无奈(你的手指很温暖,女友很幸福)。如果你拿着一把烧红的烙铁打算点点她的额头,这还 会让她认为你打算让她认为你很无奈吗?

我们常见的序列长度有 8 个 0-1,16 个,32 个,64 个。看一下,正好是 2 的倍数。当然,前言 8 个的最常见,8 个 0-1 序列就可以排出 256 个可能。而我们必须要接触到的 ASCII 编码,其 基本的 0-1 序列长度就是 8 位。

关于这一点,我们可以使用一个简单的实验来得到体现。我们在 Arino 中输入如下的 代码:

如果在电脑中打开串口监视器,除非我们选择的波特率是 9600,否则,我们在串口监视 器中将只能看到一堆的乱码。

我们打一个比方:
好吧,你和你的女友郎情妾意,她在给你喂饭。如果你当时感到幸福,于是闭上了眼感觉 自己徜徉在幸福的海洋中,而女友也感到幸福,于是也闭眼享受和你一样的幸福。如果她这个 时候还给你继续喂饭呢?你知道她什么时候会喂给你,而你恰好张开嘴?于是饭勺子很可能就 直接戳你嘴皮上了。

当然,如果你们两个都具有大哲学家的冷静,事先约定了:

那么上面煞风景的事情就不会发生。 这是因为,你们约定了喂饭的频率。

其实,处于通讯两端的两个电子零件也相当于这么一对闭眼享受幸福还要秀恩爱喂饭的男 女,一个在发送信息(喂饭)一个在接收信息(张嘴吃饭)。如果通讯双方不事先约定好频率, 那么就会出现信息丢失的现象。

如果说,两个人互相之间是在扯谈,比如像我现在正在干的事情。那么说过了也就罢了, 没啥大问题。但是,如果是在非常重要和严肃的场合呢?万一听的人听错了,那肯定会出大问 题。在军事指挥中,有这么一种方法来防止出问题:命令复述。也就是指挥官下重要命令的时候, 听从命令者必须复述指挥官的命令以做确认。
同样的,在电子世界的通讯中,因为通信线路的干扰,信息发送方和接收方可能出偶尔的 问题,那么也会面临同样的问题—信息发送出现了失误(术语叫误码)。这个时候,我们就必 须想办法来解决。
当然,如果接收方在接收到信息之后原封不动的反馈给发送方,发送方比对,如果对了就 回复确认;如果错了就回复错误,然后重新发送,这种方法可以确保绝对的正确。但是,这种 方法显然是相当无效率的,除非是非常重要的,一点错都不能出的通讯场合,否则这种检验方 法很少会被采用。

幸好专家们想到了更有效率的方法,即所谓的校验。通常的校验方法有所谓的奇偶校验, 和值校验等等。
如奇偶校验,则是在发送信息的同时在末尾再带上这次发送信息的 0-1 中的 0 的个数或者 1 的个数的模值。

如前面的数据列

如果为了确保信息发送的完全。我们可以采用在每个4位数的后面再加上一个奇偶校验位, 即一次性发送 5 个。

如果我们采用耦校验位,那么我们的上面的序列就变成了如下的串行:

括号里面的 0-1 就是所谓的校验字(注:事实上,括号是不存在的)

采用数学的方法。如第一串 0101(0) 我们可以根据校验字来判断,前面的 0101 是否正确。

如果发生了错误,我们原本打算发送 0101,但是因为通讯出了问题,结果只接收成了0001,那么我们可以发现,这个时候的校验位却是 0 的话,显然,0001 绝对是错误的值。那 么这个串行就可以简单抛弃,然后要求重发了。 当然,在实际过程中。如 TTL 串口通讯。如果你要求不是那么高,那大可以不搞什么校验。 而如果你对奇偶校验有跟多的兴趣,可以参考维基网络。

这个概念非常好理解。如果你在图书馆聚精会神地读书,忽然坐你边上的人开始说话,我 相信,你的第一反应肯定不会认为那个家伙是在对你说话,并且你几乎记不住那个家伙刚刚在 说什么。
但是,如果那个家伙先用手肘碰碰你,然后说:“喂”。等你抬头看着他,他再和你叽里 呱啦的时候,你肯定可以听到他对你说了什么。

在电子通讯世界里面也是如此,两个或者多个需要进行互相通讯的电子零件可能正在执行 各自的工作。结果,接收方正在进行某个工作的处理,结果发送方忽然发送了一大段的信息过去。 很有可能的结果就是接收方没法接受到这个信息。
解决这个问题的方法有几种。
一种是采用所谓的握手信号,有的是一个专门的电路,如 Arino 中的 SPI 通讯,发送方 会使用 CS 引脚发送一个高电平,告诉接受方,我要开始和你通讯了。

还有一种类似于老师在课堂上点名回答问题,参与通讯的各个电子元件事先都规定好了各 自的 ID,当发送方发送信息的时候在开头的时候发送这个 ID。那么具有这个 ID 的接受者就会 根据 ID 判断这个信息是否是发送给自己的。这类似于在信封上面写地址一样。
再有就是没有握手信号。纯粹双方都具有专门的发送和接收的模块。如 Arino 上的 RS232 中的 RX 端口,它是相对独立于 Arino 的 CPU 的,一旦 Arino 上电,它就会随时 监听来自于电线上的信号。一旦收到就立即存储起来供 CPU 调用。这就好像一个老板给自己配 了一个电话秘书,随时替老板接收电话,然后把电话内容记录下来供老板随时浏览。

关于这个,其实很好理解,如果只有一根导线,那么我们一次只能发送 0 或者 1。如果我 们要发送 0101,那么我们就需要按照先后顺序连续发送四次。这就是所谓的串行通讯。但是, 如果我们在通讯的双方连接 4 条导线呢?那么一次性我们就可以把 0101 中的第一位的 0 通过 第一根导线,第一位的 1 通过第二根,第三位的 0 通过第三根,第四位的 1 通过第四根一次性 地发送出去。 串行通讯的速度相对较慢,但是这节省连接电路,也就是说省钱。并行通讯速度相对较快, 但是这相对来说非常不省钱。并且,随着连接电路的数量增多,它的可靠性也成级数往下降。所以, 选择哪种通讯方式,这在于速度 VS 可靠和经济的权衡。 通常情况下,远距离、低速的通讯通常都是串行的。而近距离、高速的通讯通常都是并行的。

这三个概念也比较简单。
单工就是发送方只能发送,接收方只能接受。这种方式在现实的世界中比如说广播、电视。 这些就是单工。
半双工则是,双方都能够发送和接收,但是如果是发送信息,那么它在同一个时刻下只能 发送或者接收。无法在同一个时刻下同时干两件事情。如 Arino 上的 IIC 总线(TWI)就是 半双工通讯。比较形象的就是步话机。

全双工则是,双方不仅能够发送和接收,而且发送和接收可以同时进行。在 Arino 上 的 SPI 总线和 TTL RS232 都属于全双工。而现实中的例子如电话,互联网连接等。

1、了解了关于电平的概念,那么我们在未来连接电路的时候就不会出现随便拿一个数字 传感器就往 Arino 上接的低级错误。好歹我们得注意看一下,它的通讯电压是多少的。当然, 还有一些特例,如 CMOS 电平和 TTL 电平兼容,这些是后来的升级概念。我们这儿不做延伸说明。
2、了解了关于通讯速率的概念,那么我们就明白了,为什么需要设定 Serial.begin()。
3、了解了奇偶校验,那么我们在未来读取数字传感器的发来的数字的时候就会应用这 个位来判定读数值正确与否。
4、了解串行和并行通讯,其实,是为了让我们理解 shiftout() 函数。
5、了解握手的概念,这样我们才会理解为何 IIC 需要设定一个 ID 去发送或者接收,而 TTL RS232 和 SPI 则不需要。
6、了解了单工,半双工,全双工。好吧,这个概念貌似对于 Arino 的初级应用的确没啥用。 只是纯粹为了补齐概念和凑字数。

很多的时候,很多的爱好者往往不清楚这些概念,所以总是会犯一些让业内人士嘲笑的 低级错误。但是,这些错误正是因为缺乏基础知识才会发生的错误。如何避免?难道要像那些 业内人士一样老老实实地抱着专业书开啃?
但是,我们真的只是爱好者,我们只需要搞清楚大概的理论框架就行了。所以,才 有了这个水煮通讯协议的扯谈篇。
希望能够给有需要的读者以帮助

Ⅳ arino门禁系统卡uid默认多少

1、序言
先说下简单门禁系统的原理:
(1)IC卡激活:门禁卡管理员将卡片放到读卡器、这时软件读取到IC卡的UID序列号信息(相当于身份证号码),将这个UID录入数据库激活IC卡。
(2)刷卡:刷卡时读卡器读取到UID,查询数据库,如果数据库中存在这个UID则表示有效用户,继而控制继电器断电,此时电磁锁开门。
 

不亦买的RC522模块采用SPI通信、据说也有串口通信的不过成本较高。大家可以看看这个模块的主要配件:卡和读卡器。

2、加载RC522库文件
 Arino本身有个操作RC5200的库,如下图所示,打开Arino开发工具中管理库

搜索"RC522",选择"MFRC522"安装即可
点击"More info"可以跳转到github地址https://github.com/miguelbalboa/rfid ,下文会有提及。

安装完毕后,可以看到关于MFRC522的库示例,有读取UID、获取区块信息、修改UID、卡片信息复制等
 
注:一般而言IC卡是不能修改0扇区0区块的UID和厂商信息数据,这些是生产时就确定下来的的(关于IC卡的存储结构有空再发文介绍,小伙伴们可以去网上查阅这方面资料也挺多的),能够全扇区修改的俗称UID卡才支持修改UID,一些不负责的门禁系统厂家仅根据UID来判断用户身份是不可靠的,一个简单的方法是在读之前先写UID操作,如果可写那么这张卡就是UID卡即复制卡,判断无效,系统也可记录是哪张IC卡被复制了用于追溯非法行为,仅供交流与学习,请勿用于非法用途哦

3、模块引脚接线
此处是网络上大部分相关文章没有提及的,只告诉了如何接线,却不告诉我们为什么这样接,甚至连Arino版本都不说清楚。
我们打开ReadNUID的示例里面有各种版本Arino与RC522的引脚连接图,我们按照这个接线即可。在上文提及的github项目主页也有介绍。
RC522一共8个引脚,如图所示:

3.3V供电、GND接地不用多说,IRQ是中断才用到的此处没有用到可以不接,其余5个引脚接法如下表所示:
/* Typical pin layout used:
* -----------------------------------------------------------------------------------------
* MFRC522 Arino Arino Arino Arino Arino
* Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin
* -----------------------------------------------------------------------------------------
* RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*/
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 
4、程序代码
此处测试的Arino型号是Arino Nano V3.0,其他型号请结合上表修改引脚号。
示例代码读取UID,并将其分别以十进制和十六进制输出到串口,简化版如下:
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9

MFRC522 rfid(SS_PIN, RST_PIN); //实例化类

// 初始化数组用于存储读取到的NUID
byte nuidPICC[4];

void setup() {
Serial.begin(9600);
SPI.begin(); // 初始化SPI总线
rfid.PCD_Init(); // 初始化 MFRC522
}

void loop() {

// 找卡
if ( ! rfid.PICC_IsNewCardPresent())
return;

// 验证NUID是否可读
if ( ! rfid.PICC_ReadCardSerial())
return;

MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

// 检查是否MIFARE卡类型
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println("不支持读取此卡类型");
return;
}

// 将NUID保存到nuidPICC数组
for (byte i = 0; i < 4; i++) {
nuidPICC[i] = rfid.uid.uidByte[i];
}
Serial.print("十六进制UID:");
printHex(rfid.uid.uidByte, rfid.uid.size);
Serial.println();

Serial.print("十进制UID:");
printDec(rfid.uid.uidByte, rfid.uid.size);
Serial.println();

// 使放置在读卡区的IC卡进入休眠状态,不再重复读卡
rfid.PICC_HaltA();

// 停止读卡模块编码
rfid.PCD_StopCrypto1();
}

void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : "");
Serial.print(buffer[i], HEX);
}
}

void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : "");
Serial.print(buffer[i], DEC);
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
5、运行结果
依次将卡A、卡B、卡A放到RC522读卡区,串口打印信息如下

Ⅵ arino是什么

Arino是一个基于易用硬件和软件的原型平台(开源)。

它包由可编程的电路板(简称微控制器)和称为Arino IDE(集成开发环境)的现成软件组成,用于将计算机代码写入并上传到物理板。Arino提供将微控制器的功能打包成更易于使用的软件包的标准外形。

Arino主要特点

1、Arino板卡能够读取来自不同传感器的模拟或数字输入信号,并将其转换为输出,例如激活电机,打开/关闭LED,连接到云端等多种操作。

2、可以通过Arino IDE(简称上传软件)向板上的微控制器发送一组指令来控制板功能。

3、Arino IDE使用C++的简化版本,使其更容易学习编程。