====== MASTER EDU主控离线模式 ====== ===== 事件 ===== {{:scratchob_ble05eduof_02_.png|}}\\ * 当Arduino启动 功能:本主控为Arduino兼容硬件。每个项目都需要加载本条指令,用于程序启动时调用Arduino的固件函数库\\ 语法:#include \\ ===== 控制 ===== {{:scratchob_ble05eduof_03_.png|}}\\ * 等待(1)秒 功能:使程序暂定设定的时间(单位秒)。一秒等于1000毫秒,也可以输入0.1,表示100ms。\\ 语法:delay(1 * 1000);\\ {{:scratchob_ble05eduof_04_.png|}}\\ * 重复执行(10)次\\ 功能:for语句用于重复执行一段在花括号之内的代码。通常使用一个增量计数器计数并终止循环。for语句用于重复性的操作非常有效,通常与数组结合起来使用来操作数据、引脚。\\ 语法: for (int index = 0; index < 10; index++) {};\\ {{:scratchob_ble05eduof_05_.png|}}\\ * 重复执行\\ 功能:void用来声明一个函数,该函数不会返回任何数据。模块内的全部代码会无限重复执行。\\ 语法:void loop() {};\\ 备注:如果不调用此模块,则全部代码都会出现在void setup()的{}里面,所有代码只会执行一次。\\ {{:scratchob_ble05eduof_06_.png|}}\\ * 如果<>那么...\\ 功能:if 语句与比较运算符一起用于检测某个条件是否达成,如某输入值是否在特定值之上等。\\ 语法:if (false) {};\\ {{:scratchob_ble05eduof_07_.png|}}\\ * 如果<>那么...否则...\\ 功能:if/else是比if更为高级的流程控制语句,它可以进行多次条件测试。比如,检测模拟输入的值,当它小于500时该执行哪些操作,大于或等于500时执行另外的操作。\\ 语法:if (false) {} else{};\\ {{:scratchob_ble05eduof_08_.png|}}\\ * 等待<>\\ 功能:while循环会无限的循环,直到括号内的判断语句变为假。必须要有能改变判断语句的东西,要不然while循环将永远不会结束。这在您的代码表现为一个递增的变量,或一个外部条件,如传感器的返回值。\\ 语法:while (!false) {};\\ {{:scratchob_ble05eduof_09_.png|}}\\ * 重复执行直到<>\\ 功能:while循环会无限的循环,直到括号内的判断语句变为假。必须要有能改变判断语句的东西,要不然while循环将永远不会结束。这在您的代码表现为一个递增的变量,或一个外部条件,如传感器的返回值。\\ 语法:while (!false) {};\\ 备注:代码层和指令等待<>是一样的,只不过这里可以嵌套更多的指令\\ ===== 运算 ===== {{:scratchob_ble05eduof_10_.png|}}\\ * ( 0 ) + ( 0 ) \\ 功能:将括号内的两个数相加\\ 语法:(0 + 0);\\ {{:scratchob_ble05eduof_11_.png|}}\\ * ( 0 ) - ( 0 ) \\ 功能:将括号内的两个数相减\\ 语法:(0 - 0);\\ {{:scratchob_ble05eduof_12_.png|}}\\ * ( 0 ) * ( 0 ) \\ 功能:将括号内的两个数相乘\\ 语法:(0 * 0);\\ {{:scratchob_ble05eduof_13_.png|}}\\ * ( 0 ) / ( 0 ) \\ 功能:将括号内的两个数相除\\ 语法:(0 / 0);\\ {{:scratchob_ble05eduof_14_.png|}}\\ * 在( 1 ) 和 ( 10 ) 之间取随机数\\ 功能:使用random()函数将生成介于1到10之间的随机数。\\ 语法:random(1, 10);\\ {{:scratchob_ble05eduof_15_.png|}}\\ * ( ) > ( 50 ) \\ 功能:判断输入值是否大于特定值。比较运算符常与if 语句配合一起用于检测某个条件是否达成。\\ 语法:(0 > 50);\\ {{:scratchob_ble05eduof_16_.png|}}\\ * ( ) < ( 50 ) \\ 功能:判断输入值是否小于特定值。比较运算符常与if 语句配合一起用于检测某个条件是否达成。\\ 语法:(0 < 50);\\ {{:scratchob_ble05eduof_17_.png|}}\\ * ( ) = ( 50 ) \\ 功能:判断输入值是否等于特定值。比较运算符常与if 语句配合一起用于检测某个条件是否达成。\\ 语法:(0 == 50);\\ {{:scratchob_ble05eduof_18_.png|}}\\ * < > 与 < >\\ 功能:只有两个运算对象为“真”,才为“真”。逻辑运算符常与if 语句配合一起用于检测某个条件是否达成。\\ 语法:(0 && 0);\\ {{:scratchob_ble05eduof_19_.png|}}\\ * < > 或 < >\\ 功能:只要一个运算对象为“真”,就为“真”。逻辑运算符常与if 语句配合一起用于检测某个条件是否达成。\\ 语法:(0 || 0);\\ {{:scratchob_ble05eduof_20_.png|}}\\ * < > 不成立\\ 功能:如果运算对象为“假”,则为“真”。逻辑运算符常与if 语句配合一起用于检测某个条件是否达成。\\ 语法:(!false);\\ {{:scratchob_ble05eduof_21_.png|}}\\ * 连接(苹果)和(香蕉)\\ 功能:将两个字符串合并到一起\\ 语法:(String("苹果") + String("香蕉");\\ {{:scratchob_ble05eduof_22_.png|}}\\ * (苹果)的第(1)个字符\\ 功能:输出当前字符串中的第N个字符\\ 语法:(String("苹果").charAt(0);\\ {{:scratchob_ble05eduof_23_.png|}}\\ * (苹果)的字符数\\ 功能:输出当前字符串的长度。\\ 语法:(String("苹果").length();\\ {{:scratchob_ble05eduof_24_.png|}}\\ * (苹果)包含(果)?\\ 功能:判断当前字符串内是否包含特定字符,常与if 语句配合一起用于检测某个条件是否达成。\\ 语法:(String("苹果").indexOf(String("果"));\\ {{:scratchob_ble05eduof_25_.png|}}\\ * (0)除以(0)的余数\\ 功能:一个整数除以另一个数,其余数称为模。它有助于保持一个变量在一个特定的范围(例如数组的大小)。\\ 语法:(0 % 0);\\ {{:scratchob_ble05eduof_26_.png|}}\\ * 四舍五入(0)\\ 功能:计算接近于给定参数的整数值。\\ 语法:(round(0);\\ {{:scratchob_ble05eduof_27_.png|}}\\ * 绝对值(0)\\ 功能:计算一个数的绝对值,此功能包含更多数学指令,详见下拉菜单中的选项。\\ 语法:(abs(0));\\ ===== 变量 ===== {{:scratchob_ble05eduof_28_.png|}}\\ * 建立一个变量 \\ 功能:建立一个类型为浮点数的变量,其名称为XXX。变量可以用于监控,非常方便。\\ 语法:float XXX ;\\ {{:scratchob_ble05eduof_29_.png|}}\\ * 建立一个列表 \\ 功能:Arduino代码生成器暂不支持此功能。\\ 语法:暂无\\ ===== 自制积木 ===== {{:scratchob_ble05eduof_30_.png|}}\\ * 制作新的积木 \\ 功能:void用来声明一个函数,该函数不会返回任何数据。函数可以添加各种不同输入项。\\ 语法:void _函数名称() {};\\ ===== 串口 ===== {{:scratchob_ble05eduof_31_.png|}}\\ * 串口启动波特率[9600] \\ 功能:用于控制板和一台计算机或主控制器之间的通信。串口又称作为UART或USART。它通过0(RX)和1(TX)数字引脚经过串口转换芯片连接计算机USB端口与计算机进行通信。因此,如果你使用这些功能的同时你不能使用引脚0和1作为输入或输出。\\ 本软件内置的串口监视器可与主控制器通信。监视器窗口在操作界面的右下角,可以点击小扳手图标进行特殊配置。需要在弹出菜单中的波特率选项中,设置与调用begin()函数相同的波特率。\\ 将串行数据传输速率设置为位/秒(波特)。与计算机进行通信时,常用的波特率:9600,57600或115200。当然,您也可以指定其他波特率。本指令通常放在loop循环指令上面,只需要运行一次即可。\\ 语法:Serial.begin(9600);\\ {{:scratchob_ble05eduof_32_.png|}}\\ * 串口打印(Hello OpenBlock)换行 \\ 选项:换行、不换行\\ 功能:打印数据到串行端口,输出人们可识别的ASCII码文本并回车 (ASCII 13, 或 '\r') 及换行(ASCII 10, 或 '\n')。此命令采用的形式与Serial.print ()相同 。\\ 语法:Serial.println("Hello OpenBlock");\\ {{:scratchob_ble05eduof_34_.png|}}\\ * (串口可读取字节数) \\ 功能:获取从串口读取有效的字节数(字符)。这是已经传输到,并存储在串行接收缓冲区(能够存储64个字节)的数据。 available()继承了 Stream类。\\ 语法:Serial.available();\\ {{:scratchob_ble05eduof_35_.png|}}\\ * (串口读取数据) \\ 功能:读取传入的串口的数据。read() 继承自 Stream 类。\\ 语法:Serial.read();\\ ===== 数据 ===== {{:scratchob_ble05eduof_36_.png|}}\\ * (映射( 50 )从( 1 , 100 )到( 1 ,1000 )) \\ 功能:将一个数从一个范围映射到另外一个范围。也就是说,会将 fromLow 到 fromHigh 之间的值映射到 toLow 在 toHigh 之间的值。\\ 不限制值的范围,因为范围外的值有时是刻意的和有用的。如果需要限制的范围, constrain() 函数可以用于此函数之前或之后。\\ 注意,两个范围中的“下限”可以比“上限”更大或者更小,因此 map() 函数可以用来翻转数值的范围。\\ 语法:map(50, 1, 100, 1, 1000);\\ {{:scratchob_ble05eduof_37_.png|}}\\ * (约束( 50 )介于( 1 , 1000 )) \\ 功能:将一个数约束在一个范围内。\\ 语法:constrain(50, 1, 100);\\ {{:scratchob_ble05eduof_38_.png|}}\\ * (转换( 123 )为[整数]) \\ 选项:整数、小数、字符串\\ 功能:将当前数值转换为整数、小数或者字符串。\\ 语法:String("123").toInt();\\ {{:scratchob_ble05eduof_40_.png|}}\\ * (转换(97)为ASC2字符) \\ 功能:将一个变量的类型变为ASC2字符。\\ 语法:String(char(97);\\ {{:scratchob_ble05eduof_41_.png|}}\\ * (转换(a)为ASC2编码) \\ 功能:将一个变量的类型变为ASC2编码。\\ 语法:toascii(String("a")[0]);\\ ===== 基础 ===== 基础为主控制器常用的硬件指令\\ {{:scratchob_ble05eduof_42_.png|}}\\ * 设置引脚[3]模式为[输入] \\ 功能:将指定的引脚配置成输入、输出或者输入上拉。其中输入上拉属于高级功能,用户在不熟悉硬件原理的情况下应谨慎使用。\\ 语法:pinMode(3, INPUT);\\ {{:scratchob_ble05eduof_43_.png|}}\\ * 设置引脚[3]输出为[高] \\ 功能:给一个数字引脚写入HIGH或者LOW。\\ 如果一个引脚已经使用pinMode()配置为OUTPUT模式,其电压将被设置为相应的值,HIGH为5V,LOW为0V。\\ 如果引脚配置为INPUT模式,使用digitalWrite()写入HIGH值,将使内部20K上拉电阻(详见数字引脚教程)。写入LOW将会禁用上拉。上拉电阻可以点亮一个LED让其微微亮,如果LED工作,但是亮度很低,可能是因为这个原因引起的。补救的办法是 使用pinMode()函数设置为输出引脚。\\ 语法:digitalWrite(3, HIGH);\\ {{:scratchob_ble05eduof_44_.png|}}\\ * 设置端口[A]脉冲为(255) \\ 功能:从一个端口输出模拟值(PWM),此端口会对应一个特定的引脚。可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。analogWrite()输出结束后,该引脚将产生一个稳定的特殊占空比方波,直到下次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。PWM信号的频率大约是490赫兹。 目前只有引脚3,5,6,9,10和11可以实现该功能。\\ analogWrite函数与模拟引脚、analogRead函数没有直接关系。\\ 语法:analogWrite(3, 255);\\ {{:scratchob_ble05eduof_45_.png|}}\\ * 设置端口[A]舵机为(90) \\ 功能:从一个端口输出模拟值(PWM),此端口会对应一个特定的引脚。可用于让舵机旋转到不同的角度。WM信号的频率大约是50赫兹。\\ 此指令会首先用#include调用舵机库,声明舵机变量,绑定引脚,并写入特定角度到舵机(对应特定PWM)。\\ 目前只有引脚3,5,6,9,10和11可以实现该功能。\\ 语法:#include Servo servo3;servo3.attach(3, 544, 2400);servo3.write(90);\\ {{:scratchob_ble05eduof_46_.png|}}\\ * 设置状态灯输出为[高] \\ 说明:V1版本暂不支持此指令:!: \\ 选项:高、低\\ 功能:点亮或熄灭状态指示灯,状态灯对应硬件引脚为13。\\ 语法:digitalWrite(13, HIGH);\\ {{:scratchob_ble05eduof_46_.png|}}\\ * 设置[绿灯]输出为[高] \\ 说明:点亮或熄灭状态指示灯,状态灯对应硬件引脚为13。开机默认绿灯常亮(适用于硬件V2,OB版本2.3.6,V1无状态灯,V1版本暂不支持此指令)\\ 选项1:绿灯、蓝灯\\ 选项2:高、低\\ {{:scratchob_ble05eduof_48_.png|}}\\ * <读取引脚[3]数字量> \\ 选项:3、5、6、9、10、11、A0、A1、A2、A3、A4、A5\\ 功能:读取指定引脚的值,HIGH或LOW。\\ 语法:digitalRead(3);\\ {{:scratchob_ble05eduof_50_.png|}}\\ * <当按钮[左]被按下> \\ 说明1:V1版本为软件上拉(适用于OB版本2.3.5),V2版本为硬件上拉(适用于OB版本2.3.6)。注意区分指令:!: \\ 说明2:长按5s中间按键开机、长按5s中间按键关机。开机默认绿灯常亮(适用于硬件V2,OB版本2.3.6,V1无状态灯)\\ 选项:左、中(长按5s开机)、右\\ 功能:读取指定引脚的值,HIGH或LOW\\ 语法:pinMode(4, INPUT_PULLUP);if (digitalRead(4)) {};\\ {{:scratchob_ble05eduof_52_.png|}}\\ * (读取端口[A]模拟量) \\ 功能:从指定的端口读取数据值。每个端口对应一个模拟引脚。它们分别是A0、A1、A2、A3、A4、A5、A6。 本控制器拥有6通道的10位模拟数字转换器。这意味着它将0至5伏特之间的输入电压映射到0至1023之间的整数值。这将产生读数之间的关系:5伏特/ 1024单位,或0.0049伏特(4.9 mV)每单位。输入范围和精度可以使用analogReference()改变。 它需要大约100微秒(0.0001)来读取模拟输入,所以最大的阅读速度是每秒10000次。\\ 语法:analogRead(A0);\\ * 下述指令在图形化编程界面已隐藏显示,不过硬件和代码编程是支持的。 {{:scratchob_ble05eduof_01_.png|}}\\ {{:scratchob_ble05eduof_53_.png|}}\\