Arduino语言介绍
Arduino语言介绍
Arduino语言是建立在C/C++基础上的,其基础是C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让不了解AVR单片机(微控制器)的朋友也能轻松上手。
基础C语言
关键字:
- if 条件选择语句
- if...else 条件选择语句
- for for 循环语句
- switch case 并行多分支选择
- while 循环语句
- do... while 循环语句
- break 强制跳出循环
- continue 继续
- return 返回
- goto 无条件转移
变量的作用范围(作用域):
作用范围与该变量在哪儿声明有关,大致分为如下两种。
1、全局变量:若在程序开头的声明区或者是在没有大括号限制的声明区,所声明的变量的作用域为整个程序。
2、局部变量:若在大括号内的声明区所声明的变量,其作用域将受限于大括号。若在主程序与各函数中都声明了相同名称的变量,则离开主程序或函数,该变量将自动消失。
语法符号:
- ; 每个语句和数据定义的最后必须有一个分号,这个千万不要漏写了。
- {} 大括号内的内容是函数体,即{......}。
- / * * / C语言的注释以 / * 开始,以 * / 结束,注释可以跟在指令之后,也可以在独立一行中。
- // 注释也可以用 “//”开头,该符号右边整行都是注释。
赋值运算符:
- = (指定) 例如: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相同。
算数运算符:
- + (加) 例如: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变量;
关系运算符:
- == (相等)例如: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。
递增/减运算符:
- ++ (加1) 例如:x++ 将x变量的值加1;(在使用i之后,再使i值加1)
- -- (减1) 例如:x-- 将x变量的值减1。(在使用i之后,再使i值减1)
数据类型:
- char 字符 8bit
- unsigned char 无符号字符 8bit
- int 整数 16bit
- unsigned int 无符号整数 16bit
- long 长整数 32bit
- unsigned long 无符号长整数 32bit
- float 浮点数 32bit
- double 双倍精度浮点数 64bit
- array 数组
- void 无 0
为什么要定义变量?定义变量就相当于给存储地址取个名字。
数据类型转换:
- char()
- byte()
- int()
- long()
- float()
常量:
- HIGH / LOW 表示数字IO口的电平,HIGH 表示高电平(1),LOW 表示低电平(0)。
- INPUT / OUTPUT 表示数字IO口的方向,INPUT 表示输入(高阻态),OUTPUT 表示输出(AVR能提供5V电压 40mA电流)。
- true / false true 表示真(1),false表示假(0)。
以上为基础c语言的关键字和符号
Arduino 语言
结构
- void setup() 初始化变量,管脚模式,调用库函数等
- void loop() 连续执行函数内的语句
功能
数字 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。比如可以读数字传感器。
模拟 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调速或音乐播放。
扩展 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输入为低电平时,停止计时,然后返回该时间。
时间函数
- unsigned long millis() 返回时间函数(单位ms),该函数是指,当程序运行就开始计时并返回记录的参数,该参数溢出大概需要50天时间。
- delay(ms) 延时函数(单位ms)。
- delayMicroseconds(us) 延时函数(单位us)。
数学函数
- 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) 开根号
三角函数
- sin(rad)
- cos(rad)
- tan(rad)
随机数函数
- randomSeed(seed) 随机数端口定义函数,seed表示读模拟口analogRead(pin)函数 。
- long random(max) 随机数函数,返回数据大于等于0,小于max。
- long random(min, max) 随机数函数,返回数据大于等于min,小于max。
外部中断函数
- attachInterrupt(interrupt, , mode) 外部中断只能用到数字IO口2和3,interrupt表示中断口初始0或1,表示一个功能函数,mode:LOW低电平中断,CHANGE有变化就中断,RISING上升沿中断,FALLING 下降沿中断。
- detachInterrupt(interrupt) 中断开关,interrupt=1 开,interrupt=0 关。
中断使能函数
- interrupts() 使能中断
- noInterrupts() 禁止中断
串口收发函数
- Serial.begin(speed) 串口定义波特率函数,speed表示波特率,如9600,19200等。
- int Serial.available() 判断缓冲器状态。
- int Serial.read() 读串口并返回收到参数。
- Serial.flush() 清空缓冲器。
- Serial.print(data) 串口输出数据。
- Serial.println(data) 串口输出数据并带回车符。
Arduino语言库文件
官方库文件
- EEPROM - EEPROM读写程序库
- Ethernet - 以太网控制器程序库
- LiquidCrystal - LCD控制程序库
- Servo - 舵机控制程序库
- SoftwareSerial - 任何数字IO口模拟串口程序库
- Stepper - 步进电机控制程序库
- Wire - TWI/I2C总线程序库
- Matrix - LED矩阵控制程序库
- Sprite - LED矩阵图象处理控制程序库
非官方库文件
- DateTime - a library for keeping track of the current date and time in software.
- Debounce - for reading noisy digital inputs (e.g. from buttons)
- Firmata - for communicating with applications on the computer using a standard serial protocol.
- GLCD - graphics routines for LCD based on the KS0108 or equivalent chipset.
- LCD - control LCDs (using 8 data lines)
- LCD 4 Bit - control LCDs (using 4 data lines)
- LedControl - for controlling LED matrices or seven-segment displays with a MAX7221 or MAX7219.
- LedControl - an alternative to the Matrix library for driving multiple LEDs with Maxim chips.
- Messenger - for processing text-based messages from the computer
- Metro - help you time actions at regular intervals
- MsTimer2 - uses the timer 2 interrupt to trigger an action every N milliseconds.
- OneWire - control devices (from Dallas Semiconductor) that use the One Wire protocol.
- PS2Keyboard - read characters from a PS2 keyboard.
- Servo - provides software support for Servo motors on any pins.
- Servotimer1 - provides hardware support for Servo motors on pins 9 and 10
- Simple Message System - send messages between Arduino and the computer
- SSerial2Mobile - send text messages or emails using a cell phone (via AT commands over software serial)
- TextString - handle strings
- TLC5940 - 16 channel 12 bit PWM controller.
- X10 - Sending X10 signals over AC power lines
以上库文件都需要下载到编译环境(如下目录:arduino-0022\hardware\libraries)中才能使用。
Arduino语言介绍的更多相关文章
- R语言实战读书笔记1—语言介绍
第一章 语言介绍 1.1 典型的数据分析步骤 1.2 获取帮助 help.start() help("which") help.search("which") ...
- day02编程语言,Python语言介绍,Python解释器安装,环境变量,Python代码执行,pip,应用程序使用文件的三步骤,变量,变量的三大组成,比较,pycharm
复习 重点: 1.进制转换:二进制 与十六进制 2.内存分布:栈区 与堆区 # 二进制1111转换十六进制 => 8 4 2 1 => f 10101100111011 => 2a7 ...
- Arduino语言
Arduino语言 Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不 ...
- (转)expect命令脚本语言介绍及生产实践
原文:http://www.fblinux.com/?p=526 Expect介绍 expect是一个用来实现自动交互功能的软件套件,是用来实现自动和交互式任务程序进行通信,无需人的手工干预.比如SS ...
- Java众神之路(1)-语言介绍
Java语言介绍 1.Java的历史 我个人认为,学习一种技术,不止要关注技术本身,也应该去了解一下它的发展史,这一方面是对技术本身的尊重,另一方面也是希望能够通过该技术的发展历史推测出其未来可能的发 ...
- C语言基础 (3) C语言介绍
01回顾 02 语言介绍 语言是人和人交流,C语言是人和机器交流. 03_为什么学C语言 04_第一个C代码编译运行 #include <stdio.h> int main() { // ...
- Arduino学习笔记② Arduino语言基础
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- solidity语言介绍以及开发环境准备
solidity语言介绍以及开发环境准备 Solidity 是一门面向合约的.为实现智能合约而创建的高级编程语言.这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的 ...
- 尚学python课程---12、python语言介绍
尚学python课程---12.python语言介绍 一.总结 一句话总结: 1.操作简单:简便计算:允许通过单个“import”语句后跟一个函数调用来完成复杂的计算.虽慢 2.库丰富:比如人工智能和 ...
随机推荐
- WPF: 自动设置Owner的ShowDialog 适用于MVVM
原文:WPF: 自动设置Owner的ShowDialog 适用于MVVM 原文地址:http://www.mgenware.com/blog/?p=339 WPF中的Windows的ShowDialo ...
- python使用http、https代理
在国内利用Python从Internet上爬取数据时,有些网站或API接口被限速或屏蔽,这时使用代理可以加速爬取过程,减少请求失败,Python程序使用代理的方法主要有以下几种: (1)如果是在代码中 ...
- Emit动态代理.NetCore迁移之旅
[前言] 前面我们介绍了Aop 从静态代理到动态代理:https://www.cnblogs.com/7tiny/p/9657451.html 我们在.NetFramework平台下使用微软提供的Em ...
- AOP从静态代理到动态代理 Emit实现
[前言] AOP为Aspect Oriented Programming的缩写,意思是面向切面编程的技术. 何为切面? 一个和业务没有任何耦合相关的代码段,诸如:调用日志,发送邮件,甚至路由分发.一切 ...
- springboot项目利用Swagger2生成在线接口文档
Swagger简介. Swagger2是一款restful接口文档在线生成和在线调试工具.很多项目团队利用Swagger自动生成接口文档,保证接口文档和代码同步更新.在线调试.简单地说,你可以利用这个 ...
- Vue CLI 3使用:浏览器兼容性
package.json 文件里的 browserslist 字段 (或一个单独的 .browserslistrc 文件),指定了项目的目标浏览器的范围.这个值会被 @babel/preset-env ...
- 搭建Node.js的Web框架egg.js
1 egg.js的Request处理流程: 2. 使用nodejs下载egg.js框架 (1)现在nodejs中全局安装egg-init 即在nodejs安装根目录下执行 : d:cd nodejs ...
- SUCTF 2016 : dMd
这个题可以说是比较坑了(还不是我很弱...) Linux跑一下: 要输密码 ida打开看看: int __cdecl main(int argc, const char **argv, const c ...
- python 装饰器练习题
1.写出完整的装饰器(不用开了带参装饰器,就是普通装饰器)语法 2.有一个计算两个数和的方法,为其添加一个确保两个参数都是int或float类型的装饰器,保证运算不会抛异常 3.有一个一次性录入人名并 ...
- C#操作session的类实例(转)
using System.Web; namespace DotNet.Utilities { public static class SessionHelper2 { /// <summary& ...