Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DIY综合交流区
[编辑转载]Arduino语言注解
发布于 2011-10-20 19:01:36 浏览:4347
订阅该版
[tocm] --- 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<
>=` (右移) 例如: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
- (大于)例如: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 为什么要定义变量?定义变量就相当于给存储地址取个名字。 ![img](https://oss-club.rt-thread.org/uploads/20220804/c1542cce3b50874703779f5932b8b1031b8061e2.jpg) ![img](https://oss-club.rt-thread.org/uploads/20220804/d45b16761b239df73ba4e8bd814209b3462ecbeb.jpg) ![img](https://oss-club.rt-thread.org/uploads/20220804/c5a38eb95537fad3066d1bc4e782d1abf0cb9cf0.jpg) ### 数据类型转换 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 语言 ------------ ### 结构:[/b] 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) 串口输出数据并带回车符。 链接:[http://blog.sina.com.cn/s/blog_6575a3c20100o58q.html](http://blog.sina.com.cn/s/blog_6575a3c20100o58q.html)
查看更多
2
个回答
默认排序
按发布时间排序
yuyi1005
2012-06-05
这家伙很懒,什么也没写!
`detachInterrupt(interrupt)` 中断开关, - `interrupt=1` 开, - `interrupt=0` 关。 这个是不是有点错。
撰写答案
登录
注册新账号
关注者
0
被浏览
4.3k
关于作者
wzc0066
这家伙很懒,什么也没写!
提问
14
回答
16
被采纳
0
关注TA
发私信
相关问题
1
[项目]搞个开源的硬件项目
2
硬件计划贴,及时更新,欢迎提意见
3
软件计划贴,及时更新,欢迎提意见::WMA,MOUNT,LWIP等问题急需解决.
4
MMS协议
5
定点的wma解压库-libwma
6
QQ群记录 [20090821]
7
STM32网络收音机PCB报名征集
8
第一版调试记录
9
第二版硬件讨论
10
RADIO项目相关模块规格--欢迎大家自己做板时规格与此兼容,减少重复劳动
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部