用户工具

站点工具


learning

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
learning [2018/12/16 03:19] – [类库] 弘毅learning [2024/02/14 07:43] (当前版本) – [类库] 弘毅
行 1: 行 1:
 +~~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使用]]