当前位置:蜗牛素材网>综合资讯>科技>正文

arduino芯片分类:乐创物联物联网架构之硬件层中间件Arduino语言

人气:483 ℃/2024-03-17 03:55:31

0 前言

大家好!我叫乐创物联,我主要是做工业自动化方面和物联网方面的。了解熟悉工业自动化领域的,也开发过物联网相关的产品。我的初衷是做工业物联网的,但这个系统太过于庞大,后续也会自主去学习一下。所以就先做小的系统,例如构建一整套智能家居系统,从硬件到软件全系列。下面就开始这套智能家居系统是如何在物联网基础上构建。在这里你可以0开始,然后到1质变,仅仅需要一起跟我学乐创物联物联网架构的学习。

回顾一下上节《乐创物联物联网架构之硬件层中间件Arduino简介》,从什么是Arduino,Arduino Create,然后Arduino 板子种类, Arduino IDE(介绍了在线IDE编译一个简单Blink例子),最后arduino 能做啥。本节就来讲讲感知层下硬件层中间件Arduino语言。感知层是物联网最基础的部分,就像人的五官一样去感受世界。

1 C语言

Arduino语言是建立在C/C 基础上的,其实也就是基础的C语言。Arduino语言把AVR单片机相关的一些参数设置都函数化,不用去了解他的底层,通过简单函数调用就可以用Arduino做你想做的事。

前一段时间更新的《嵌入式开发之Linux系统中C语言》系列文章,请自行查阅!这里在简单地介绍一下。

1)C语言中的数据类型

数据类型

数据类型

2) C语言中的常量

short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。

Arduino中经常使用的常量为:

HIGH / LOW 表示数字IO口的电平,HIGH 表示高电平(1),LOW 表示低电平(0)。

INPUT / OUTPUT 表示数字IO口的方向,INPUT 表示输入(高阻态),OUTPUT 表示输出(AVR能提供5V电压 40mA电流)。

true / false true 表示真(1),false表示假(0)。

3) C语言中的变量

<存储类型> <数据类型> <变量名>

存储类型,在 C 程序中变量/函数的范围(可见性)和生命周期。C 程序中可用的存储类:auto、register、static、extern。

数据类型,可以是基本数据类型,也可以是自定义数据类型。

注:全局变量:若在程序开头的声明区或者是在没有大括号限制的声明区,所声明的变量的作用域为整个程序。局部变量:若在大括号内的声明区所声明的变量,其作用域将受限于大括号。若在主程序与各函数中都声明了相同名称的变量,则离开主程序或函数,该变量将自动消失。

4) C语言中的运算符

算术运算符

(加) 例如:A=x y 将x与y变量的值相加,其和放入A变量;

- (减) 例如:B=x-y 将x变量的值减去y变量的值,其差放入B变量;

* (乘)例如:C=x*y 将x与y变量的值相乘,其积放入C变量;

/ (除)例如:D=x/y 将x变量的值除以y变量的值,其商放入D变量;

% (取余)例如:E=x%y 将x变量的值除以y变量的值,其余数放入E变量;

(加1) 例如:x 将x变量的值加1;(在使用i之后,再使i值加1);

-- (减1) 例如:x-- 将x变量的值减1。(在使用i之后,再使i值减1)。

算术运算符

关系运算符

== (相等)例如:x==y 比较x与y变量的值是否相等,相等则其结果为1,不相等则为0;

!= (不等)例如:x!=y 比较x与y变量的值是否相等,不相等则其结果为1,相等则为0;

< (小于)例如:x<y 若x变量的值小于y变量的值,其结果为1,否则为0;

> (大于)例如:x>y 若x变量的值大于y变量的值,其结果为1,否则为0;

<= (小等于)例如: x<=y 若x变量的值小等于y变量的值,其结果为1,否则为0;

>= (大等于)例如: x>=y 若x变量的值大等于y变量的值,其结果为1,否则为0

关系运算符

逻辑运算符

&& (与运算)

例(x>y)&&(y>z)若x变量的值大于y变量的值,且y变量的值大于z变量的值,则其结果为1,否则为0。

|| (或运算)

例(x>y)||(y>z)若x变量的值大于y变量的值,或y变量的值大于z变量的值,则其结果为1,否则为0。

! (非运算)例 !(x>y) 若x变量的值大于y变量的值,则其结果为0,否则为1。

逻辑运算符

赋值运算符

= (指定) 例如:A=x 将x变量的值放入A变量;

= (加入) 例如:B =x 将B变量的值与x变量的值相加,其和放入B变量,与B=B x相同。

-= (减去) 例如:C-=x 将C变量的值减去x变量的值,其差放入C变量,与C=C-x相同。

*= (乘入) 例如:D*=x 将D变量的值与x变量的值相乘,其积放入D变量,与D=D*x相同。

/= (除) 例如:E/=x 将E变量的值除以x变量的值,其商放入E变量,与E=E/x相同。

%= (取余) 例如:F%=x 将F变量的值除以x变量的值,其余数放入F变量,与F=F%x相同。

&= (或运算) 例如:G&=x 将G变量的值与x变量的值相AND运算,其结果放入G变量,与G=G&x相同。

|= (或运算) 例如:H|=x 将H变量的值与x变量的值相OR运算,其结果放入H变量,与H=H|x相同。

^= (互斥或) 例如:I^=x 将I变量的值与x变量的值相XOR运算,其结果放入I变量,与I=I^x相同。

<<= (左移) 例如:J<<=n 将J变量的值左移n位,与J=J<<n相同。

>>= (右移) 例如:K>>=n 将K变量的值右移n位,与K=K>>n相同。

赋值运算符

运算符的优先级

从高到低优先级如下:

运算符的优先级

5) C语言中的控制语句

顺序结构

程序语句按先后顺序依次执行。

条件结构

根据判断以决定下一步操作。

条件结构

循环结构

反复执行某一部分代码。

循环结构

辅助控制语句

辅助控制语句

还有一个return做辅助控制语句。

2 Arduino的结构

void setup() 初始化变量,管脚模式,调用库函数等

void loop() 连续执行函数内的语句

3 Arduino的功能

1)数字 I/O

pinMode(pin, mode) 数字IO口输入输出模式定义函数,pin表示为0~13, mode表示为INPUT或OUTPUT。

digitalWrite(pin, value) 数字IO口输出电平定义函数,pin表示为0~13,value表示为HIGH或LOW。比如定义HIGH可以驱动LED。

int digitalRead(pin) 数字IO口读输入电平函数,pin表示为0~13,value表示为HIGH或LOW。比如可以读数字传感器。

2)模拟 I/O

int analogRead(pin) 模拟IO口读函数,pin表示为0~5(Arduino Diecimila为0~5,Arduino nano为0~7)。比如可以读模拟传感器(10位AD,0~5V表示为0~1023)。

analogWrite(pin, value) - PWM 数字IO口PWM输出函数,Arduino数字IO口标注了PWM的IO口可使用该函数,pin表示3, 5, 6, 9, 10, 11,value表示为0~255。比如可用于电机PWM调速或音乐播放。

3)扩展 I/O

shiftOut(dataPin, clockPin, bitOrder, value) SPI外部IO扩展函数,通常使用带SPI接口的74HC595做8个IO扩展,dataPin为数据口,clockPin为时钟口,bitOrder为数据传输方向(msBFIRST高位在前,LSBFIRST低位在前),value表示所要传送的数据(0~255),另外还需要一个IO口做74HC595的使能控制。

unsigned long pulseIn(pin, value) 脉冲长度记录函数,返回时间参数(us),pin表示为0~13,value为HIGH或LOW。比如value为HIGH,那么当pin输入为高电平时,开始计时,当pin输入为低电平时,停止计时,然后返回该时间。

4)时间函数

unsigned long millis() 返回时间函数(单位ms),该函数是指,当程序运行就开始计时并返回记录的参数,该参数溢出大概需要50天时间。

delay(ms) 延时函数(单位ms)。

delayMicroseconds(us) 延时函数(单位us)。

5)数学函数

min(x, y) 求最小值

max(x, y) 求最大值

abs(x) 计算绝对值

constrain(x, a, b) 约束函数,下限a,上限b,x必须在ab之间才能返回。

map(value, fromLow, fromHigh, toLow, toHigh) 约束函数,value必须在fromLow与toLow之间和fromHigh与toHigh之间。

pow(base, exponent) 开方函数,base的exponent次方。

sq(x) 平方

sqrt(x) 开根号

6)三角函数

sin(rad)

cos(rad)

tan(rad)

7)随机数函数

randomSeed(seed) 随机数端口定义函数,seed表示读模拟口analogRead(pin)函数 。

long random(max) 随机数函数,返回数据大于等于0,小于max。

long random(min, max) 随机数函数,返回数据大于等于min,小于max。

8)外部中断函数

attachinterrupt(interrupt, , mode) 外部中断只能用到数字IO口2和3,interrupt表示中断口初始0或1,表示一个功能函数,mode:LOW低电平中断,CHANGE有变化就中断,RISING上升沿中断,FALLING 下降沿中断。

detachInterrupt(interrupt) 中断开关,interrupt=1 开,interrupt=0 关。

9)中断使能函数

interrupts() 使能中断

noInterrupts() 禁止中断

10)串口收发函数

Serial.begin(speed) 串口定义波特率函数,speed表示波特率,如9600,19200等。

int Serial.available() 判断缓冲器状态。

int Serial.read() 读串口并返回收到参数。

Serial.flush() 清空缓冲器。

Serial.print(data) 串口输出数据。

Serial.println(data) 串口输出数据并带回车符。

4 Arduino的语言库文件

早期的Arduino核心库使用C语言编写,后来引进了面向对象的思想,目前最新的Arduino核心库采用C与C 混合编写而成。通常我们说的Arduino语言,是指Arduino核心库文件提供的各种应用程序编程接口(Application Programming Interface,简称API)的集合。这些API是对更底层的单片机支持库进行二次封装所形成的。例如,使用AVR单片机的Arduino的核心库是对AVR-Libc(基于GCC的AVR支持库)的二次封装。

传统开发方式中,你需要知道每个寄存器的意义及之间的关系,然后通过配置多个寄存器来达到目的。

添加库文件方法:

A下载库文件;

B导入.zip文件;

C批量解压至libraries文件夹。

库文件都需要下载到编译环境(如下目录:\libraries)中才能使用。

鸣谢

Arduino语言介绍

https://www.cnblogs.com/xczr/p/7831343.html

5 结论

这些都是经过实践检验的,本来想等开专栏,放专栏里的,现在不挣钱,交个朋友!跟我一起入门物联网吧!

搜索更多有关“arduino芯片分类:乐创物联物联网架构之硬件层中间件Arduino语言”的信息 [百度搜索] [SoGou搜索] [头条搜索] [360搜索]
本网站部分内容、图文来自于网络,如有侵犯您的合法权益,请及时与我们联系,我们将第一时间安排核实及删除!
CopyRight © 2008-2024 蜗牛素材网 All Rights Reserved. 手机版