两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 |
learning [2019/07/26 01:57] – [类库] 弘毅 | learning [2024/02/14 07:43] (当前版本) – [类库] 弘毅 |
---|
| ~~NOTOC~~ |
| ====== 入门 ====== |
| 当第一次开始使用OCROBOT品牌旗下的各款控制器时,请先阅读这里。 |
| - 查看[[learing:star:introduction|介绍]],通过阅读[[learing:star:introduction|介绍]]了解OCROBOT品牌旗下各款控制器的区别,选择适合自己的。 |
| - [[learing:star:Install USB Driver|安装USB驱动]]。 |
| - [[learing:star:Install IDE|安装集成开发环境]]。 |
| |
| |
| ====== 基本语法 ====== |
| |
| OCROBOT品牌旗下各款控制器的程序可以划分为三个主要部分:**结构**、**变量**(变量与常量)、**函数**,基础编程语言为C语言。 |
| |
| <WRAP group> |
| <WRAP quarter column> |
| ===== 结构部分 ===== |
| === 主函数 === |
| *[[reference:language:setup|setup()]] |
| *[[reference:language:loop|loop()]] |
| |
| === 结构控制 === |
| |
| *[[reference:language:if|if]] |
| *[[reference:language:else|if...else]] |
| *[[reference:language:for|for]] |
| *[[reference:language:switchcase|switch case]] |
| *[[reference:language:while|while]] |
| *[[reference:language:dowhile|do... while]] |
| *[[reference:language:break|break]] |
| *[[reference:language:continue|continue]] |
| *[[reference:language:return|return]] |
| *[[reference:language:goto|goto]] |
| |
| === 扩展语法 === |
| |
| *[[reference:language:semicolon|;(分号)]] |
| *[[reference:language:braces|{}(大括号)]] |
| *[[reference:language:comments|//(单行注释)]] |
| *[[reference:language:comments|/* */(多行注释)]] |
| *[[reference:language:define|#define]] |
| *[[reference:language:include|#include]] |
| |
| === 字符 === |
| |
| * [[reference:language:isAlphaNumeric()|isAlphaNumeric()]] |
| * [[reference:language:isAlpha()|isAlpha()]] |
| * [[reference:language:isAscii()|isAscii()]] |
| * [[reference:language:isWhitespace()|isWhitespace()]] |
| * [[reference:language:isControl()|isControl()]] |
| * [[reference:language:isDigit()|isDigit()]] |
| * [[reference:language:isGraph()|isGraph()]] |
| * [[reference:language:isLowerCase()|isLowerCase()]] |
| * [[reference:language:isPrintable()|isPrintable()]] |
| * [[reference:language:isPunct()|isPunct()]] |
| * [[reference:language:isSpace()|isSpace()]] |
| * [[reference:language:isUpperCase()|isUpperCase()]] |
| * [[reference:language:isHexadecimalDigit()|isHexadecimalDigit()]] |
| </WRAP> |
| |
| <WRAP quarter column> |
| ===== 运算部分 ===== |
| === 数学运算符 === |
| |
| * [[reference:language:assignment_operator|=(赋值运算符)]] |
| * [[reference:language:arithmetic|+(加)]] |
| * [[reference:language:arithmetic|-(减)]] |
| * [[reference:language:arithmetic|*(乘)]] |
| * [[reference:language:arithmetic|/(除)]] |
| * [[reference:language:modulo|%(模)]] |
| * [[reference:language:min|min()]] |
| * [[reference:language:max|max()]] |
| * [[reference:language:abs|abs()]] |
| * [[reference:language:constrain|constrain()]] |
| * [[reference:language:map|map()]] |
| * [[reference:language:pow|pow()]] |
| * [[reference:language:sqrt|sqrt()]] |
| * [[reference:language:ceil|ceil()]] |
| * [[reference:language:exp|exp()]] |
| * [[reference:language:fabs|fabs()]] |
| * [[reference:language:floor|floor()]] |
| * [[reference:language:fma|fma()]] |
| * [[reference:language:fmax|fmax()]] |
| * [[reference:language:fmin|fmin()]] |
| * [[reference:language:fmod|fmod()]] |
| * [[reference:language:ldexp|ldexp()]] |
| * [[reference:language:log()|log()]] |
| * [[reference:language:log10|log10()]] |
| * [[reference:language:round|round()]] |
| * [[reference:language:signbit|signbit()]] |
| * [[reference:language:sq|sq()]] |
| * [[reference:language:square|square()]] |
| * [[reference:language:trunc|trunc()]] |
| |
| === 三角函数 === |
| |
| * [[reference:language:sin|sin()]] |
| * [[reference:language:cos|cos()]] |
| * [[reference:language:tan|tan()]] |
| * [[reference:language:acos|acos()]] |
| * [[reference:language:asin|asin()]] |
| * [[reference:language:atan|atan()]] |
| * [[reference:language:atan2|atan2()]] |
| * [[reference:language:cosh|cosh()]] |
| * [[reference:language:degrees|degrees()]] |
| * [[reference:language:hypot|hypot()]] |
| * [[reference:language:radians|radians()]] |
| * [[reference:language:sinh|sinh()]] |
| * [[reference:language:tanh|tanh()]] |
| |
| === 比较运算符 === |
| |
| * [[reference:language:if|==(等于)]] |
| * [[reference:language:if|!=(不等于)]] |
| * [[reference:language:if|<(小于)]] |
| * [[reference:language:if|>(大于)]] |
| * [[reference:language:if|<=(小于等于)]] |
| * [[reference:language:if|>=(大于等于)]] |
| |
| === 布尔运算符 === |
| |
| * [[reference:language:boolean|&&(与)]] |
| * [[reference:language:boolean|||(或)]] |
| * [[reference:language:boolean|!(非)]] |
| |
| === 指针运算符 === |
| |
| * [[reference:language:pointer|* 取消引用运算符]] |
| * [[reference:language:pointer|& 引用运算符]] |
| |
| === 位运算符 === |
| |
| * [[reference:language:bitwiseand|& (bitwise and)]] |
| * [[reference:language:bitwiseand|| (bitwise or)]] |
| * [[reference:language:bitwiseand|^ (bitwise xor)]] |
| * [[reference:language:bitwisexornot|~ (bitwise not)]] |
| * [[reference:language:bitshift|<< (bitshift left)]] |
| * [[reference:language:bitshift|>> (bitshift right)]] |
| |
| === 复合运算符 === |
| |
| * [[reference:language:increment|++ (递增)]] |
| * [[reference:language:increment|-- (递减)]] |
| * [[reference:language:incrementcompound|+= (复合加)]] |
| * [[reference:language:incrementcompound|-= (复合减)]] |
| * [[reference:language:incrementcompound|*= (复合乘)]] |
| * [[reference:language:incrementcompound|/= (复合除)]] |
| * [[reference:language:bitwisecompoundand|&= (复合位与)]] |
| * [[reference:language:bitwisecompoundor||= (复合位或)]] |
| </WRAP> |
| |
| <WRAP quarter column> |
| ===== 变量部分 ===== |
| |
| === 常量 === |
| |
| *[[reference:language:constants|HIGH]]|[[reference:language:constants|LOW]] |
| *[[reference:language:constants|INPUT]]|[[reference:language:constants|OUTPUT]] |
| *[[reference:language:constants|true]] | [[reference:language:constants|false]] |
| *[[reference:language:integerconstants|integer constants]] |
| *[[reference:language:fpconstants|floating point constants]] |
| |
| === 数据类型 === |
| |
| * [[reference:language:void|void]] |
| * [[reference:language:booleanvariables|boolean]] |
| * [[reference:language:char|char]] |
| * [[reference:language:unsignedchar|unsigned char]] |
| * [[reference:language:byte|byte]] |
| * [[reference:language:int|int]] |
| * [[reference:language:unsignedint|unsigned int]] |
| * [[reference:language:word|word]] |
| * [[reference:language:long|long]] |
| * [[reference:language:unsignedlong|unsigned long]] |
| * [[reference:language:float|float]] |
| * [[reference:language:double|double]] |
| * [[reference:language:string|string - char array]] |
| * [[reference:language:stringobject|String - object(对象)]] |
| * [[reference:language:arrays|array -(数组)]] |
| |
| === 数据类型转换 === |
| |
| * [[reference:language:charcast|char()]] |
| * [[reference:language:bytecast|byte()]] |
| * [[reference:language:intcast|int()]] |
| * [[reference:language:wordcast|word()]] |
| * [[reference:language:longcast|long()]] |
| * [[reference:language:floatcast|float()]] |
| |
| === 变量作用域 & 修饰符 === |
| |
| * [[reference:language:scope|variable scope]] |
| * [[reference:language:static|static]] |
| * [[reference:language:volatile|volatile]] |
| * [[reference:language:const|const]] |
| |
| === 辅助工具 === |
| |
| * [[reference:language:sizeof|sizeof()]] |
| * [[reference:language:PROGMEM|PROGMEM]] |
| </WRAP> |
| |
| <WRAP quarter column> |
| ===== 函数部分 ===== |
| |
| === 数字 I/O === |
| |
| * [[reference:language:pinmode|pinMode()]] |
| * [[reference:language:digitalwrite|digitalWrite()]] |
| * [[reference:language:digitalread|digitalRead()]] |
| * [[reference:language:digitalToggle|digitalToggle()]] |
| |
| === 快速 I/O === |
| |
| * [[reference:language:fastioMode|fastioMode()]] |
| * [[reference:language:fastioWrite|fastioWrite()]] |
| * [[reference:language:fastioToggle|fastioToggle()]] |
| |
| === 模拟 I/O === |
| |
| * [[reference:language:analogreference|analogReference()]] |
| * [[reference:language:analogread|analogRead()]] |
| * [[reference:language:analogwrite|analogWrite() - PWM]] |
| * [[reference:language:analogReadResolution()|analogReadResolution()]] |
| * [[reference:language:analogWriteResolution()|analogWriteResolution()]] |
| |
| === 高级 I/O === |
| |
| * [[reference:language:tone|tone()]] |
| * [[reference:language:notone|noTone()]] |
| * [[reference:language:shiftout|shiftOut()]] |
| * [[reference:language:shiftin|shiftIn()]] |
| * [[reference:language:pulsein|pulseIn()]] |
| |
| === PWM增强 === |
| |
| * [[reference:language:pwmMode|pwmMode()]] |
| * [[reference:language:pwmResolution|pwmResolution()]] |
| * [[reference:language:pwmWrite|pwmWrite()]] |
| * [[reference:language:pwmFrequency|pwmFrequency()]] |
| |
| |
| === 时间 === |
| |
| * [[reference:language:millis|millis()]] |
| * [[reference:language:micros|micros()]] |
| * [[reference:language:delay|delay()]] |
| * [[reference:language:delaymicroseconds|delayMicroseconds()]] |
| |
| |
| |
| === 随机数 === |
| |
| * [[reference:language:randomseed|randomSeed()]] |
| * [[reference:language:random|random()]] |
| |
| === 位操作 === |
| |
| * [[reference:language:lowbyte|lowByte()]] |
| * [[reference:language:highbyte|highByte()]] |
| * [[reference:language:bitread|bitRead()]] |
| * [[reference:language:bitwrite|bitWrite()]] |
| * [[reference:language:bitset|bitSet()]] |
| * [[reference:language:bitclear|bitClear()]] |
| * [[reference:language:bit|bit()]] |
| |
| === 设置中断函数 === |
| |
| * [[reference:language:attachinterrupt|attachInterrupt()]] |
| * [[reference:language:detachinterrupt|detachInterrupt()]] |
| |
| === 开关中断 === |
| |
| * [[reference:language:interrupts|interrupts()]] |
| * [[reference:language:nointerrupts|noInterrupts()]] |
| |
| === 通讯 === |
| |
| * [[reference:language:serial|Serial]] |
| * [[reference:language:stream|Stream]] |
| </WRAP> |
| </WRAP> |
| |
| ====== 类库 ====== |
| |
| 程序使用类库提供额外的功能,如与硬件协同工作或操控数据等。在程序中使用类库,可以点击菜单中的“**程序 > 导入库**”进行操作。 |
| <WRAP group> |
| <WRAP half column> |
| ===== MCU标准库 ===== |
| |
| * [[reference:library:eeprom|EEPROM]] - 对EEPROM进行读和写 |
| * [[reference:library:spi|SPI]] - 与使用SPI(串行外设接口)总线的设备进行通信 |
| * [[reference:library:Wire|Wire]] - 与使用TWI/I2C(串行外设接口)总线的设备进行通信 |
| * [[reference:library:softwareserial|SoftwareSerial]] - 使用任何数字引脚进行串行通信 |
| |
| ===== 总线通信库 ===== |
| |
| * [[reference:library:ethernet|Ethernet]] - W5500/W5100用于通过以太网扩展板连接到互联网 |
| * [[reference:library:ethernet2|Ethernet2]] - 适用W5500/W5200/W5100的以太网库.性能大幅度提升. |
| * [[reference:library:ethercard|EtherCard]] - ENC28J60以太网扩展模块通信库 |
| * [[reference:library:Firmata|Firmata]] - 与电脑上应用程序通信的标准串行协议。 |
| * [[reference:library:modbus|MODBUS]] - MODBUS通讯协议库 |
| * [[reference:library:sdi-12|SDI-12]] - SDI-12总线协议库 |
| |
| ===== 显示屏驱动库 ===== |
| |
| * [[reference:library:liquidcrystal|LiquidCrystal]] - 控制1602液晶显示屏(LCD) |
| |
| |
| ===== 外设驱动库 ===== |
| * [[reference:library:sd|SD]] - 对 SD 卡进行读写操作 |
| * [[reference:library:Servo|Servo]] - 控制模拟舵机 |
| * [[reference:library:Stepper|Stepper]] - 控制步进电机 |
| * [[reference:library:accelstepper|AccelStepper]] - AccelStepper步进电机驱动库 |
| |
| ===== 看门狗与低功耗驱动库 ===== |
| * [[reference:library:sleepdog|SLEEPDOG]] - 使用看门狗定时器进行系统复位和低功耗休眠 |
| * [[reference:library:8f328p_pmu|PMU]] - LGT8F328P 低功耗休眠 |
| |
| ===== 专用控制器库 ===== |
| * [[reference:library:zigbee|Zigbee]] - HonyBee控制器的Zigbee无线通信库 |
| |
| ===== 其他 ===== |
| * [[reference:library:PID|PID]] - PID库 |
| |
| |
| </WRAP> |
| |
| <WRAP half column> |
| |
| </WRAP> |
| </WRAP> |
| |
| |
| ====== 例程 ====== |
| |
| 下面的例子是一些核心功能和扩展库的概述。 |
| |
| ===== 核心功能 ===== |
| |
| 使用核心功能,需要懂基本语法来进行一些简单的编程。 |
| |
| 以下例程,在IDE的"文件"---“示例"菜单中可以直接打开。 |
| |
| ==== 1.基础 ==== |
| |
| |
| * [[learing:examples:BareMinimum|BareMinimum]]: 程序运行所必须的代码. |
| * [[learing:examples:Blink|Blink]]: 单LED闪烁. |
| * [[learing:examples:DigitalReadSerial|DigitalReadSerial]]: 读取开关状态,输出状态信息到串口监视器. |
| * [[learing:examples:AnalogReadSerial|AnalogReadSerial]]: 读取电位状态,输出状态信息到串口监视器. |
| * [[learing:examples:Fade|Fade]]: 用模拟输出调节LED亮度. |
| * [[learing:examples:ReadAnalogVoltage|ReadAnalogVoltage]] : 读取模拟输入电压,输出电压到串口监视器. |
| |
| ==== 2.数字 ==== |
| |
| |
| * [[learing:examples:BlinkWithoutDelay|Blink Without Delay]]: 不使用delay来使LED闪烁。 |
| * [[learing:examples:Button|Button]]: 使用一个按钮来控制LED。 |
| * [[learing:examples:Debounce|Debounce]]: 获取按钮状态,过滤噪音。 |
| * [[learing:examples:ButtonStateChange|Button State Change]]: 统计按钮按下次数。 |
| * [[learing:examples:InputPullupSerial|Input Pullup Serial]]: 演示pinMode()使用INPUT_PULLUP参数。 |
| * [[learing:examples:Tone|Tone]]: 使用蜂鸣器播放一段旋律。 |
| * [[learing:examples:Pitch follower|Pitch follower]]: 使用模拟输入控制扬声器音高。 |
| * [[learing:examples:Simple Keyboard|Simple Keyboard]]: 基于3个压力传感器与扬声器的音乐键盘。 |
| * [[learing:examples:Tone4|Tone4]]:在多个扬声器上使用tone功能连续播放不同音乐 |
| |
| ==== 3.模拟 ==== |
| |
| |
| * [[learing:examples:AnalogInOutSerial|AnalogInOutSerial]]: 读取一个模拟输入,映射结果,使用映射的结果驱动LED变亮或者变暗。 |
| * [[learing:examples:AnalogInput|Analog Input]]: 使用电位器控制让LED闪烁 |
| * [[learing:examples:AnalogWriteMega|AnalogWriteMega]]:使用OCROBOT MEGA 板使12个LED一个个变色 |
| * [[learing:examples:Calibration|Calibration]]: 为期望得到的模拟传感器值定义最大最小值 |
| * [[learing:examples:Fading|Fading]]: 使用PWM使LED变色 |
| * [[learing:examples:Smoothing|Smoothing]]: 平滑模拟输入端的多个数据 |
| |
| ==== 4.通讯 ==== |
| |
| |
| 这些例程包含了使用OCROBOT和PROCESSING通讯的代码. 详见processing.org。 |
| * [[learing:examples:ReadASCIIString|ReadASCIIString]]:分析输入端的以逗号分隔的字符串来使LED变色 |
| * [[learing:examples:ASCIITable|ASCII Table]]: 使用集成开发环境的高级串口输出功能 |
| * [[learing:examples:Dimmer|Dimmer]]: 移动鼠标来改变LED亮度 |
| * [[learing:examples:Graph|Graph]]: 发送数据到电脑通过Processing把它画出来 |
| * [[learing:examples:PhysicalPixel|Physical Pixel]]: 从processing发送数据到arduino来使LED亮灭. |
| * [[learing:examples:SerialCallResponse|Serial Call Response]]: 使用握手协议发送变量. |
| * [[learing:examples:SerialEvent|SerialEvent]]: 演示SerialEvent()的使用. |
| * [[learing:examples:Midi|MIDI]]: 连续发送MIDI音符. |
| |
| ==== 5.控制 ==== |
| |
| |
| * [[learing:examples:IfStatement|If Statement (Conditional)]]: 使用if声明来基于输入条件改变输出状态 |
| * [[learing:examples:ForLoop|For Loop]]: 使用for loop控制多路LED |
| * [[learing:examples:Array|Array]]: for循环中的变量演示了数组的用法 |
| * [[learing:examples:WhileLoop|While Loop]]: 当读取到按键信息后,使用while循环来校准传感器 |
| * [[learing:examples:SwitchCase2|Switch Case 2]]: 基于串口接收到的字符作出不同的反应 |
| |
| |
| ==== 6. 字符串 ==== |
| |
| * [[learing:examples:Character Analysis|Character Analysis]]: 使用运算符来识别字符类型 |
| * [[learing:examples:String Addition Operator|String Addition Operator]]:多种将字符串合并的方法 |
| * [[learing:examples:String Append Operator|String Append Operator]]:使用+=运算符和 concat() 方法向字符串添加别的东西 |
| * [[learing:examples:String Case Changes|String Case Changes]]:改变字符的大小写 |
| * [[learing:examples:String Characters|String Characters]]:找到字符串里的字符 |
| * [[learing:examples:String Comparison Operators|String Comparison Operators]]: 比较字符串 |
| * [[learing:examples:String Constructors|String Constructors]]:初始化字符串对象. |
| * [[learing:examples:String Index Of|String Index Of]]:在字符串里寻找字符对象 |
| * [[learing:examples:String Length & String Length Trim|String Length & String Length Trim]]:去除空格符. |
| * [[learing:examples:String Replace|String Replace]]:替换字符串里的单个字符 |
| * [[learing:examples:String Start With Ends With|String Start With Ends With]]:检查字符串的起始符或者结束符. |
| * [[learing:examples:String Substring|String Substring]]:在给定的字符串里寻找短语 |
| * [[learing:examples:String To Int|String To Int]]:转换字符串为整型数字 |
| |
| ===== 进阶 ===== |
| [[learing:advanced:2016042501|01 深入了解setup()与loop()函数]] |
| \\ [[learing:advanced:2017050901|02 程序烧录自动复位深入研究]] |
| \\ [[learing:advanced:2018110601|03 ALPHA MEGA328P-U/MangoII 16M晶振频率误差测试方法]] |
| \\ [[learing:advanced:2019073101|04 树莓派GPIO详解]] |
| ===== ALPHA应用笔记 ===== |
| [[learing:alpha:2016042501|01 ALPHA 8F328P-U程序烧录]] |
| \\ [[learing:alpha:2017050901|02 8F328P的唯一ID使用]] |