关键字.docx
- 文档编号:8122268
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:28
- 大小:1.44MB
关键字.docx
《关键字.docx》由会员分享,可在线阅读,更多相关《关键字.docx(28页珍藏版)》请在冰豆网上搜索。
关键字
关键字:
∙if
∙if...else
∙for
∙switchcase
∙while
∙do...while
∙break
∙continue
∙return
∙goto
语法符号:
∙;
∙{}
∙//
∙/**/
运算符:
∙=
∙+
∙-
∙*
∙/
∙%
∙==
∙!
=
∙<
∙>
∙<=
∙>=
∙&&
∙||
∙!
∙++
∙--
∙+=
∙-=
∙*=
∙/=
数据类型:
∙boolean 布尔类型
∙char
∙byte 字节类型
∙int
∙unsignedint
∙long
∙unsignedlong
∙float
∙double
∙string
∙array
∙void
数据类型转换:
∙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语言的关键字和符号,有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(ArduinoDiecimila为0~5,Arduinonano为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的使能控制。
∙unsignedlong pulseIn(pin,value) 脉冲长度记录函数,返回时间参数(us),pin表示为0~13,value为HIGH或LOW。
比如value为HIGH,那么当pin输入为高电平时,开始计时,当pin输入为低电平时,停止计时,然后返回该时间。
时间函数
∙unsignedlong 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与fromHigh范围,对等转换至toLow与toHigh范围。
时常使用于读取类比讯号,转换至程式所需要的范围值。
∙,pow(base,exponent)开方函数,base的exponent次方。
∙sq(x) 平方
∙sqrt(x) 开根号
三角函数
∙sin(rad)
∙cos(rad)
∙tan(rad)
随机数函数
randomSeed(seed) randomSeed(seed)
事实上在Arduino里的乱数是可以被预知的。
所以如果需要一个真正的乱数,可以呼叫此函式重新设定产生乱数种子。
你可以使用乱数当作乱数的种子,以确保数字以随机的方式出现,通常会使用类比输入当作乱数种子,藉此可以产生与环境有关的乱数(例如:
无线电波、宇宙雷射线、电话和萤光灯发出的电磁波等)。
范例:
randomSeed(analogRead(5));//使用类比输入当作乱数种子
∙口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()判断缓冲器状态。
∙回传有多少位元组(bytes)的资料尚未被read()函式读取,如果回传值是0代表所有序列埠上资料都已经被read()函式读取。
∙
∙
∙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 -alibraryforkeepingtrackofthecurrentdateandtimeinsoftware.
∙Debounce -forreadingnoisydigitalinputs(e.g.frombuttons)
∙Firmata -forcommunicatingwithapplicationsonthecomputerusingastandardserialprotocol.
∙GLCD -graphicsroutinesforLCDbasedonthe KS0108 orequivalentchipset.
∙LCD -control LCDs (using8datalines)
∙LCD4Bit -control LCDs (using4datalines)
∙LedControl -forcontrollingLEDmatricesorseven-segmentdisplayswitha MAX7221 or MAX7219.
∙LedControl -analternativetotheMatrixlibraryfordrivingmultiple LEDs withMaximchips.
∙Messenger -forprocessingtext-basedmessagesfromthecomputer
∙Metro -helpyoutimeactionsatregularintervals
∙MsTimer2 -usesthetimer2interrupttotriggeranactioneveryNmilliseconds.
∙OneWire -controldevices(fromDallasSemiconductor)thatusetheOneWireprotocol.
∙PS2Keyboard -readcharactersfroma PS2 keyboard.
∙Servo -providessoftwaresupportforServomotorsonanypins.
∙Servotimer1 -provideshardwaresupportforServomotorsonpins9and10
∙SimpleMessageSystem -sendmessagesbetweenArduinoandthecomputer
∙SSerial2Mobile -sendtextmessagesoremailsusingacellphone(viaATcommandsoversoftwareserial)
∙TextString -handlestrings
∙TLC5940 -16channel12bitPWMcontroller.
∙X10 -SendingX10signalsoverACpowerlines
9、Serial.print(数据,数据的进制)——从串行端口输出数据。
Serial.print(数据)默认为十进制等于Serial.print(数据,DEC)。
Serial.print(75); //列印出"75"
Serial.print(75,DEC);//列印出"75"
Serial.print(75,HEX);//"4B"(75的十六进位)
Serial.print(75,OCT);//"113"(75in的八进位)
Serial.print(75,BIN);//"1001011"(75的二进位)
Serial.print(75,BYTE);//"K"(以byte进行传送,显示以ASCII
编码方式)
shiftOut(dataPin,clockPin,bitOrder,value)
把资料传给用来延伸数位输出的暂存器,函式使用一个脚位表示资料、一个脚位表示时脉。
bitOrder用来表示位元间移动的方式(LSBFIRST最低有效位元或是MSBFIRST最高有效位元),最后value会以byte形式输出。
此函式通常使用在延伸数位的输出。
范例:
shiftOut(dataPin,clockPin,LSBFIRST,255);
时间函数
控制与计算晶片执行期间的时间
arduino学习笔记25ADXL345加速度传感器实验
前两天我们做了温度传感器实验,大家一定还有印象。
今天我们来研究另外一种传感器加速度传感器。
什么是加速度传感器
加速度传感器,作用是测量在加速过程中产生的力。
最基本的如咱们平常所熟悉的是重力加速度,大小是1g。
加速度传感器一般用于什么地方
通过测量由重力引起的加速度,你可以计算出设备相对于水平面的倾斜角度。
通过分析动态加速度,你可以分析出设备的移动方式。
自平衡车中就是使用加速度传感器与陀螺仪进行卡尔曼滤波进行姿态矫正。
本次试验使用的ADXL345数字传感器,通过I2C或者SPI接口直接输出数字信号。
在1g的加速度下,输出数值为256.
2011-7-2822:
56:
15上传
下载附件(24.89KB)
下面是硬件连接图
2011-7-2922:
16:
48上传
下载附件(112.73KB)
2011-7-2915:
58:
16上传
下载附件(164.15KB)
2011-7-2822:
56:
16上传
下载附件(203.65KB)
下面是代码
1.#include
2.#include
3.
4.#defineRegister_ID0
5.#defineRegister_2D0x2D
6.#defineRegister_X00x32
7.#defineRegister_X10x33
8.#defineRegister_Y00x34
9.#defineRegister_Y10x35
10.#defineRegister_Z00x36
11.#defineRegister_Z10x37
12.
13.LiquidCrystallcd(12,11,10,9,8,7);//设置接口
14.
15.intADXAddress=0xA7>>1; //转换为7位地址
16.intreading=0;
17.intval=0;
18.intX0,X1,X_out;
19.intY0,Y1,Y_out;
20.intZ1,Z0,Z_out;
21.doubleXg,Yg,Zg;
22.
23.voidsetup()
24.{
25. lcd.begin(16,2); //初始化LCD
26. delay(100);
27. Wire.begin(); //初始化I2C
28. delay(100);
29. Wire.beginTransmission(ADXAddress);
30. Wire.send(Register_2D);
31. Wire.send(8);
32. Wire.endTransmission();
33.}
34.
35.voidloop()
36.{
37. Wire.beginTransmission(ADXAddress);
38. Wire.send(Register_X0);
39. Wire.send(Register_X1);
40. Wire.endTransmission();
41. Wire.requestFrom(ADXAddress,2);
42. if(Wire.available()<=2);
43. {
44. X0=Wire.receive();
45. X1=Wire.receive();
46. X1=X1<<8;
47. X_out=X0+X1;
48. }
49.
50. Wire.beginTransmission(ADXAddress);
51. Wire.send(Register_Y0);
52. Wire.send(Register_Y1);
53. Wire.endTransmission();
54. Wire.requestFrom(ADXAddress,2);
55. if(Wire.available()<=2);
56. {
57. Y0=Wire.receive();
58. Y1=Wire.receive();
59. Y1=Y1<<8;
60. Y_out=Y0+Y1;
61. }
62.
63. Wire.beginTransmission(ADXAddress);
64. Wire.send(Register_Z0);
65. Wire.send(Register_Z1);
66. Wire.endTransmission();
67. Wire.requestFrom(ADXAddress,2);
68. if(Wire.available()<=2);
69. {
70. Z0=Wire.receive();
71. Z1=Wire.receive();
72. Z1=Y1<<8;
73. Z_out=Y0+Y1;
74. }
75.
76. Xg=X_out/256.00;//把输出结果转换为重力加速度g,精确到小数点后2位。
77. Yg=Y_out/256.00;
78. Zg=Z_out/256.00;
79. lcd.clear();//清屏
80. lcd.print("X=");//使屏幕显示文字X=
81. lcd.print(Xg);
82. lcd.setCursor(8,0);
83. lcd.print("Y=");
84. lcd.print(Yg);
85. lcd.setCursor(0,1);
86. lcd.print("Z=");
87. lcd.print(Zg);
88. delay(500); //延时0.5秒,刷新频率这里进行调整
89.
90.}
复制代码
试验效果如下
附件为ADXL345中文手册
ADXL345中文PDF.pdf
在按键没有按下去的时候1,2号脚相连,3,4号脚相连。
按键按下去的时候,1,2,3,4号脚就全部接通。
arduino学习笔记231602液晶实验
本次试验使用arduino直接驱动1602液晶显示文字
1602液晶在应用中非常广泛,最初的1602液晶使用的是HD44780控制器,现在各个厂家的1602模块基本上都是采用了与之兼容的IC,所以特性上基本都是一致的。
1602LCD主要技术参数
显示容量为16×2个字符;
芯片工作电压为4.5~5.5V;
工作电流为2.0mA(5.0V);
模块最佳工作电压为5.0V;
字符尺寸为2.95×4.35(W×H)mm。
1602液晶接口引脚定义
接口说明:
1、两组电源一组是模块的电源一组是背光板的电源一般均使用5V供电。
本次试验背光使用3.3V供电也可以工作。
2、VL是调节对比度的引脚,串联不大于5KΩ的电位器进行调节。
本次实验使用1KΩ的电阻来设定对比度。
其连接分高电位与低电位接法,本次使用低电位接法,串联1KΩ电阻后接GND。
3、RS是很多液晶上都有的引脚是命令/数据选择引脚该脚电平为高时表示将进行数据操作;为低时表示进行命令操作。
4、RW也是很多液晶上都有的引脚是读写选择端该脚电平为高是表示要对液晶进行读操作;为低时表示要进行写操作。
5、E同样很多液晶模块有此引脚通常在总线上信号稳定后给一正脉冲通知把数据读走,在此脚为高电平的时候总线不允许变化。
6、D0—D78位双向并行总线,用来传送命令和数据。
7、BLA是背光源正极,BLK是背光源负极。
1602液晶的基本操作分以下四种:
下图就是1602液晶实物图
1602直接与arduino通信,根据产品手册描述,分8位连接法与4位连接法,咱们先使用8位连接法进行实验。
硬件连接方式如下图
代码如下
1.intDI=12;
2.intRW=11;
3.intDB[]={3,4,5,6,7,8,9,10};//使用数组来定义总线需要的管脚
4.intEnable=2;
5.
6.voidLcdCommandWrite(intvalue){
7.//定义所有引脚
8.inti=0;
9.for(i=DB[0];i<=DI;i++)//总线赋值
10.{
11. digitalWrite(i,value&01);//因为1602液晶信号识别是D7-D0(不是D0-D7),这里是用来反转信号。
12. value>>=1;
13.}
14.digitalWrite(Enable,LOW);
15.delayMicroseconds
(1);
16.digitalWrite(Enable,HIGH);
17.delayMicroseconds
(1); //延时1ms
18.digitalWrite(Enable,LOW);
19.delayMicroseconds
(1); //延时1ms
20.}
21.
22.voidLcdDataWrite(intvalue){
23.//定义所有引脚
24.inti=0;
25.digitalWrite(DI,HIGH);
26.d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关键字