导航:首页 > 编程语言 > mblockarduino编程教程

mblockarduino编程教程

发布时间:2023-02-09 08:39:28

A. Arino编程用的是什么方法

arino编程语言入门:

1. 关键字

语法符号:

;

;是一条语句结束的标志,供编译器识别,必须得有。

{}

{}将多条语句合成一个复合语句,能划分语句的作用域,增强整体整体的可读性。

//

//行注释,该行//后的所有语句,文字将不被编译器所编译、执行。相似的,还有,在中的所有语句,文字将不被编译器所编译、执行。

if(表达式)

{

语句A;

}

if(表达式1)

{

语句1;

}

else if(表达式2)

{

语句2;

}

...

else if(表达式n)

{

语句n;

}

else

{

语句n+1;

}

for(初始表达式;条件表达式;循环变量表达式)

{

循环体语句;

}

switch(表达式)

{

case 表达式常量1:语句序列1;

case 表达式常量2:语句序列2;

...

case 表达式常量i:语句序列i;

case 表达式常量n:语句序列n;

default:语句序列n+1;

}

while(条件表达式)

{

循环语句;

循环变量表达式;

}

do

{

循环体语句;

}while(条件表达式);

break;

continue;

return x;

goto 语句标号;



2. 数据类型:


3. 常量

HIGH | LOW 表示数字IO口的高低电平。HIGH 表示高电(1),LOW 表示低电平(0)。

INPUT | OUTPUT 表示数字IO口的方向,INPUT 表示输入(高阻态),OUTPUT 表示输出(AVR单片机能提供5V电压 40mA电流)。

true | false true 表示真(1),false表示假(0)。

4. 程序结构

声明变量及接口名称(例如:int i;int ledPin=13;)。

void setup() 函数在程序开始时使用,初始化变量,管脚模式,调用库函数等(例如:pinMode(ledPin,OUTUPT);)。

void loop() 在void setup()函数之后,即初始化之后,loop() 让你的程序循环地被执行。使用它来运转Arino。

5. 数字 I/O

以下型号为UNO

pinMode(pin, mode);

数字IO口输入输出模式定义函数,pin表示为0~13, mode表示INPUT或OUTPUT。

digitalWrite(pin, value) ;

数字IO口输出电平定义函数,pin表示为0~13,value表示为HIGH或LOW。

必须先定义为输入或输出模式digitalWrite才能生效。

int digitalRead(pin);

数字IO口读输入电平函数,pin表示为0~13,value表示为HIGH或LOW。比如可以读数

字传感器。

6. 模拟IO

int analogRead(pin);

模拟IO口读函数,pin表示为0~5(ArinoDiecimila为0~5,Arino nano为0~7)。比如可以读模拟传感器(10位AD,0~5V表示为0~1023)。

analogWrite(pin, value) - PWM

数字IO口PWM输出函数,Arino数字IO口标注了PWM的IO口可使用该函数通常在引脚的旁边标注~,pin表示3, 5, 6, 9,10, 11,value表示为0~255。比如可用于电机PWM调速或音乐播放。

7. 扩展 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输入为低电平时,停止计时,然后返回该时间。

8. 时间函数

unsigned long millis();返回时间函数(单位ms),该函数是指,当程序运行就开始计时并返回记录的参数,该参数溢出大概需要50天时间。

delay(ms);延时函数(单位ms)。

delayMicroseconds(us);延时函数(单位us)。

9. 数学函数

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);

10. 随机数函数

randomSeed(seed);随机数端口定义函数,seed表示读模拟口analogRead(pin)函数 。

long random(max);随机数函数,返回数据大于等于0,小于max。

long random(min, max);随机数函数,返回数据大于等于min,小于max。

11. 外部中断函数

attachInterrupt(interrupt, , mode;外部中断只能用到数字IO口2和3,interrupt表示中断口初始0或1,表示一个功能函数,mode:LOW低电平中断,CHANGE有变化就中断,RISING上升沿中断,FALLING 下降沿中断。

detachInterrupt(interrupt);中断开关,interrupt=1 开,interrupt=0 关。

interrupts();中断使能函数,用于使能中断。

noInterrupts();中断禁止函数,禁止中断。

12. 串口收发函数

Serial.begin(speed);串口定义波特率函数,speed表示波特率(串行每秒传输数据位数的速率),如9600,19200等。

int Serial.available() 判断缓冲器状态。

int Serial.read();读串口并返回收到参数。

Serial.flush();清空缓冲器。

Serial.print(data);串口输出数据。Serial.print(数据,数据的进制) 默认为十进制(DEC)

Serial.println(data);串口输出数据并带回车符。

13. 重要

以上列举了一些较常用的函数,事实上,在Arino的安装目录下的libraries还有众多函数可以根据需要进行调用和学习。

也可以自己编写函数然后按照libraries目录下其他函数的格式打包好。放置在libraries目录下,然后自己就可以在IDE环境下调用自己编写的函数了。

通过以上介绍,其实大家可以看到arino编程语言入门并不难,以上内容分享出来给大家作为参考,想要了解更多更专业的arino编程语言教程可以去DF创客社区Arino教程专栏学习。

B. mBlock & Arino(6)使用蜂鸣器来打节拍

在〈mBlock & Arino(5)可变电阻、ADC 与节拍器〉中,我们利用 mBlock 中的“弹奏鼓声…”方块来发声,这样的话,你的 Arino 就得一直连接着电脑,这个节拍器才能使用,如果要能够不连接电脑(之后会介绍),那么 Arino 上就得有自己的发声器,像是蜂鸣器。

声音基本上来自振动,蜂鸣器基本上可分为压电式与电磁式。

压电式蜂鸣器使用压电材料,这类具有 压电效应 ,简单来说,就是被施以压力时会产生电荷,将机械能转换为电能,这称之为“正压电效应”,如果对压电材料施以电场,材料会产生形变,将电能转换为机械能,这称之为“逆压电效应”,压电式蜂鸣器透过对压电材料外加电压的大小、频率等控制,来达到震动的效果,因而能产生声音。电磁式蜂鸣器则是利用电磁方式,透过通电与否将金属膜吸下或放开来达到振动的效果。

知道蜂鸣器的基本原理,就可以自己写个小程式来发声了,接脚有正负之分,你可以如下衔接电路(其实就只要连接正负极就可以了,够简单吧!):

如上图连接的话,透过简单地让脚位 D7 在高低电位间切换,就可以听到蜂鸣器发出声音了:

“播放脚位…”方块

当然,因为受到“等待”方块的限制,这样实际上能发出的频率有限,在 mBlock 的机器人模块中,其实有个“播放脚位…”方块:

这个方块可以指定哪个数位脚位以指定频率、节拍数驱动蜂鸣器,相当于使用 Arino 官方语言时,可呼叫的tone函式,只不过,在这边频率的设定,直接使用音阶名称 C2 到 D8 的下拉选单,省去你查询音阶对应的频率,如果你只要是播放几个音阶的话,使用这个是还蛮简单的,只不过,如果你想自行输入频率的话,就没办法了,想做个简单的电子琴或歌曲播放,也会麻烦许多,就像 mBlock 内建的“音乐演奏”范例就落落长:

你可以直接开启范例执行看看,听听看蜂鸣器的效果。真的要做比较有弹性的歌曲播放,或者是电子琴也不是不行,就是要对“播放脚位…”方块做点封装,有兴趣可以自己试试 … XD

(mBlock 2.1 之后,“播放脚位…”方块就可以使用下拉选单或自行指定数值了,这样就有弹性的多了。)

使用“播放脚位…”方块来为〈mBlock & Arino(5)可变电阻、ADC 与节拍器〉中的节拍器打节拍,程式上撰写倒是还蛮简单的,你可以先如下连接电路:

修改一下〈mBlock & Arino(5)可变电阻、ADC 与节拍器〉的节拍器程式,如果将来打算可以让 Arino 可以不连接电脑执行程式,与桌面环境中资源控制的方块要移除,像是控制猫咪的相关方块:

接着试着执行看看程式吧!看看效果如何!

感谢CodeData用户: caterpillar 的贡献 着作权归作者所有

整理:宁波家电物联网云平台,中科极动云

C. arino uno怎么编程

你好
只要将Uno的USB线插入电脑,并且下载Arino IDE 软件。创建一个新的编写程序。
之后在里面写入你的程序就可以了。基本上所有的Arino都是用它自己的软件编写的。
这个软件在官网就能下载到。你如果是问具体怎么编程,这个涉及的东西太多了,由简单到复杂。但是相比于一般的直接给处理器写硬件编程的东西而已,Arino的软件已经给你创造了一个舒适的环境能够试用很多简单的编程,比如你可以直接控制连接的端口的电压输出等。
如果你一点没有接触编程,你可以载入Arino软件里的编程例子去看。里面比如有blink等,简单又能理解,而且官网还给你配了图片,告诉你怎么进行连接。我觉得Arino是一种C和C++的混编,所以如果有的代码你不明白可以具体的复制到网上搜索。
你可以追问或者留言告诉我你更多的困难,或者你需要我出示一个例子的话,你可以给我讲。

D. mBlock & Arino(19)通过网络调节 LED 亮度

小小云提示:教程作者 caterpillar是来自台湾的programmer,所以在一些专有名词的使用上会和我们这边使用的不太一样啦,不过作者也有标注出英文名称,大家自行转换哟(⁎⁍̴̛ᴗ⁍̴̛⁎)

Arino Uno 板子没有衔接网络模组,是无法进行网络连线的,不过 mBlock 具有网路连接功能,两台电脑分别开启 mBlock,就可以进行网络通信,也就是说,你可以通过网络控制另一头连接的 Arino,反之亦然。

要使用 mBlock 建立网络连线,两台电脑都必须开启 mBlock,接着在其中一台执行“网络连接/自定义连接”后,输入另一台电脑的 IP:

按下“连接”按钮,如果连线成功的话,两台电脑上的 mBlock 都会呈现“网络连接 已连接”的字样:

记得!一定要按下“连接”按钮,直接按下 Enter 键是不会有反应 … XD

接下来就可以写个简单的通讯啦!例如,在其中一台不断地发送计时器的信息:

而另一台不断接收信息并显示:

按下两个 mBlock 的绿旗,你就会看到另一个 mBlock 接到信息并显示出来:

接下来示范一下,如果通过网络调节 LED 亮度,在两台电脑上分别连接上 Arino,并记得在 mBlock 上分别指定好“串口连接”,当然,也得记得如上通过网络连线两个 mBlock。

接着,其中一台 Arino 如下连接一个可变电阻:

另一台 Arino 如下连接电阻与 LED:

因为要通过 Arino 调节 LED 亮度,别忘了要接在有 PWM 功能的脚位上,因此在上头我是接在 D11 脚位。

接着,连接着可变电阻的电脑上,在 mBlock 上撰写如下的程式:

这会不断地读取类比脚位的电压值并通过网络送出,而在另一台连接着 LED 的电脑上,在 mBlock 中撰写如下的程式:

别忘了,Arino 类比脚位的输入值是 0 ~ 1023,而通过有 PWM 功能的脚位模拟类比电压时,可指定的值是 0 ~ 255,因此,必须通过计算作转换,“读取一行数据”并不会阻断程式流程,因此我们必须检查值是否为 0 到 1023。

在上头的程式中,“当收到数据时”方块会在“读取一行数据”方块完成后触发执行,你也可以将“如果”方块的部份,直接放在“不停重复”之中,两种写法都可以!

接下来分别执行程式,并试着转动可变电阻,你会发现另一台 Arino 上的 LED 会随着可变电阻的转动而有不同的明亮。

感谢CodeData用户: caterpillar 的贡献 着作权归作者所有

整理:宁波家电物联网云平台,中科极动云

CONTACT US: http://www.iot-jd.com/

E. 如何搭建mblock开发环境

Arino的作用是能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。
下面对Arino的特色与功能介绍:
特色。可开放源代码的电路图设计,程序开发接口免费下载,也可依个人需求自己修改。是使用低价格的微处理控制器(AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。Arino支持ISP在线烧,可以将新的“bootloader”固件烧入AVR芯片。有了bootloader之后,可以通过串口或者USB to RS232线更新固件。可依据官方提供的Eagle格式PCB和SCH电路图简化Arino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:红外线,超音波,热敏电阻,光敏电阻,伺服马达,…等)。支持多种互动程序,如:Flash、Max/Msp、vvvv、PD、C、Processing等。应用方面,利用Arino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。
功能。可以快速使用Arino与Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider等软件结合,作出互动作品。 Arino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。 Arino也可以独立运行,并与软件进行交互,例如: Macromedia Flash, Processing, Max/MSP, Pure Data, VVVV或其他互动软件…。 Arino的IDE界面基于开放源代码,可以免费下载使用,开发出更多令人惊艳的互动作品。

F. mBlock编程如何做小熊碰撞

1、写一个碰撞处理函数。2、在游戏循环GameLoop尾部中加入检测边界函数。
1、碰撞的定义。2、碰撞侦测。3、编程实践。
碰撞侦测在scratch编程中应用十分广泛,大部分游戏编程都会用到,值得深入学习和探究。

G. mBlock & Arino(16)控制步进电机

小小云提示:教程作者 caterpillar是来自台湾的programmer(kinda),所以在一些专有名词的使用上会和我们这边使用的不太一样啦,不过作者也有标注出英文名称,大家自行转换哟(⁎⁍̴̛ᴗ⁍̴̛⁎)

步进电机这东西的学问真不少,就结论而言,控制步进电机最好的方式,就是找到与手边步进电机可以配合的程式库来使用。Arino IDE 不是有 Stepper 程式库可以使用吗?嗯!它是可以用一些步进电机上,不过,不见得能完全发挥步进电机应有的控制能力,控制某些电机则会有些问题,正巧,我手上这颗 28BYJ-48 5V DC 就是!… XD

在 Arino 官方网站的 Arino – Stepper 文件中,谈到了步进电机的两个基本分类:单极步进电机(Unipolar Stepper)与双极步进电机(Bipolar Stepper)。那么就从这两个分类开始认识!

单极步进电机是提供单一方向的电流来驱动电机,例如:

在上图中,可以看到线圈各有一个共同接点,通常接电源,只要改变其他接点的电压讯号,就可以产生电流,而电流都是固定的方向,而由于有四个线圈,这样的电机被称为四相(Phase)电机。

双极步进电机的电流则是双向的,例如:

这类电机在驱动时,需要改变电流的方向来达到不同激磁的效果,而由于有两个线圈,这样的电机被称为二相电机。

电机的相数除了二向、四相之外,还有单相、三相、五相等,这是为了达到不同程度的控制,电机的控制是运用电流通过线圈会产生磁场,并与另一永久磁铁产生作用,来达到转动的效果,以四相步进电机为例:

如果做为定子的线圈激磁后,面对转子一面是 S 极,就会吸引转子的 N 极,只要依顺序对各相线圈激磁,就会产生转动效果,像上面这种一次激磁一个线圈的方式,称为一相激磁,因为每次只激磁一个线圈,电力消耗小,不过缺点是振动大、转距小。

常见的激磁方式是二相激磁,顾名思义,一次激磁两相,由于有两相用以吸引住转子,因此振动小、转距大:

也有一相、二相轮流激磁,称为一/二相激磁,顺序其实就是上面两张图的结合:

可以看出这种激磁方式,每次转动的角度为一相或二相激磁的一半,可以得到更精确的控制。

步进电机需要比较高的电压或电流驱动,在 Arino 官方网站的 Arino – Stepper 文件中,有 Unipolar Steppers 及 Bipolar Steppers 两个页面,介绍了如何连接出能驱动步进电机的电路,分别有可以接成两个控制脚位与四个控制脚位的方式。

其中会用到的 IC 是达灵顿阵列(Darlington Array),如先前〈mBlock & Arino(15)认识晶体管与继电器〉谈到的,若想运用晶体管提供更大的电流来驱动电机,可以使用两个或多个晶体管的组合,达灵顿阵列中有多组达灵顿电路,以 ULN2003APG 来说,里头有七组达灵顿电路。

如果不想那么麻烦地自己接电路,那么可以依使用的步进电机来搭配现成的步进电机驱动模组:

这个步进电机驱动模组,左上四个脚位可以接到 Arino 的数位输出脚位,下方有 +、- 两个脚位,分别接 Vcc 与 GND,右上白色插槽用来连接我手边这颗五线四相的 28BYJ-48 5V DC,上图步进电机驱动模组中的 ULN2003APG,可搭配 28BYJ-48 5V DC 这个步进电机:

28BYJ-48 5V DC 这个步进电机,其中红线是接 5V 电源,各线的连接是:

如果搭配 ULN2003,要对 28BYJ-48 5V DC 步进电机做激磁,那么 ULN2003 的输入脚位 4、3、2、1,提供电位以进行激磁的顺序为…

一相激磁:1000-0100-0010-0001

二相激磁:1100-0110-0011-1001

一/二相激磁:1000-1100-0100-0110-0010-0011-0001-1001

如果想要体验一下步进电机转动,那么可以简单地如下实作,脚位 D8 到 D11 分别对应至澄、黄、粉、蓝,例如一相激磁:

执行程式之后,你可以见到步进电机缓慢的转动,将顺序改为 S4 到 S1,就会看到电机缓慢的逆转,这边没有设任何的工作时间延迟,这是因为 mBlock 执行速度的关系,直接使用 Arino 积木方块,只能是这个速度了。

类似地,以下是二相激磁:

以下是一/二相激磁:

如果想更进一步试试步进电机控制,可以使用 Arino IDE 中的 Stepper 范例,它们使用到 Arino 的 Stepper 程式库,不过,如果你手边是 28BYJ-48 5V DC 步进电机,就要注意一下了,以 stepper_oneRevolution 范例为例:

直接执行的话,你的电机只会有一个方向的转动,无法逆转,这是因为 28BYJ-48 5V DC 的接线顺序,与 Stepper 程式库预期的不同,如果你的 28BYJ-48 5V DC 的接线顺序由澄、黄、粉、蓝分别是接至 D8 到 D11,那么有两个方式可以解决,一个方式是在 Arino 上将 D9 与 D10 接线对调,另一个方式是在建立Stepper时,9与10对调:

再来是stepsPerRevolution必须设定为你的电机实际上一圈会有多少步,如果是 28BYJ-48 5V DC 的话,查询到的规格上写着,步进角为5.625 / 64,因此这电机转一圈需要的步数是360 / (5.625 / 64),也就是4096步,不过,这是一/二相激磁才会有的步数,如果你查看Stepper 程式库原始码,会发现,它是采二相激磁的实作方式,因此,使用这个 Stepper 程式库,你实际上要设的stepsPerRevolution必须是2048步。

不过,如果你改了脚位也将stepsPerRevolution设为2048,步进电机还是不会动,这是因为 Stepper 程式库中setSpeed函式的关系:

这是以毫秒为单位来设置step_delay,如果你设为2048步,那number_of_steps就是2048,那么step_delay就会是29.296875 / whatSpeed,如果whatSpeed设为60,那结果就会是0.48828125,然而step_delay是unsigned long,也就是实际上结果只会储存0,那么step函式中millis() - this->last_step_time >= this->step_delay该行,就会一直是成立的,也就是完全没给工作时间,这么一来电机就不会动了。

因此,如果你直接使用 Stepper 程式库,设为 2048 步之后,那么速度就不能设太高,例如以下就可以正常正反转了:

如果你会使用 Arino 官方语言的话,改写 Stepper 应该不是难事,可以试着实作一/二相激磁,并令其能支援 28BYJ-48 5V DC 的4096步与高转速,懒的话,网路上是也有人已经实作或改写好的版本,不过,想要精确控制的话,重点还是在于,认识你的步进电机与程式库!

感谢CodeData用户: caterpillar 的贡献 着作权归作者所有

整理:宁波家电物联网云平台,中科极动云

H. Mbloc K程序怎么上传

软件中上传。
1、首先,打开Mblock软件程序。
2、然后,在编辑菜单中选择arino模式。
3、然后,选择主控板和串口。
4、最后,点击完成,即可进行上传。

I. mBlock & Arino(26)Me 动作、光线感应器实作小夜灯

小小云提示:教程作者 caterpillar是来自台湾的programmer,所以在一些专有名词的使用上会和我们这边使用的不太一样啦,不过作者也有标注出英文名称,大家自行转换哟(⁎⁍̴̛ᴗ⁍̴̛⁎)

在〈mBlock & Arino(14)使用人体动作感应器〉中谈过 PIR 动作感应器,Makeblock 提供有 PIR 动作感应器模组,以及光线感应器模组,结合这两个,你就可以轻易地作出一个小夜灯。

Me PIR 动作感应器可以侦测到周围六公尺左右的人体移动,范围可以借由 PIR 上方的可变电阻器来调整,这个动作感应器在 D3 有个 LED,当侦测到人体红外线时,LED 会亮起:

这个动作感应器也可以设定是否可重复触发,仔细看看感应器上可外接的脚位,或者是 RJ25 端口旁的脚位标示,可以发现有个 Mode 脚位,当你给这个 Mode 脚位高电位时,就是可重复触发模式,也就是当感测到红外线变化,在延迟时间内若持续感测到红外线变化,那么“人体红外线感应器方块”就会持续传回 1,直到不再感测到红外线变化后一段延迟时间,才会传回 0,这通常用于判断,人体是否有持续动作(或太久没动静)的场合。

不可重复触发,是当感测到红外线变化而“人体红外感应器方块”传回 1,无论延迟时间内有无感测到红外线变化,时间一到就会先传回 0。

因此,根据你将 RJ25 连接至哪个端口,查出 Mode 脚位是对应至哪个数位脚位,给予高或低电压,就可以设定为可重复触发或不可重复触发模式。

Me 光线感应器可以侦测光线强弱,由于是借由类比脚位得到数值,因此光线强弱变化值由 0 到 1023:

从上面的照片中可以看到,这个感应器还可以侦测灰阶变化,这其实是利用反射光的强弱来达成,为了要能侦测灰阶变化,你必须点亮照片中标示为 D3 的 LED,然后让光线感应器很接近被侦测的平面,但不是接触该平面,由于黑色会吸收光线,因此,越黑的平面,反射光进入光线感应器就会越少,侦侧得到数值就会越低。

侦测灰阶变化的应用,常见于循迹车,在平面上画条黑线,车子上的光线感应器靠近黑线的一侧:

如果黑线是在感应器的右方,当车子越往左偏离黑线,反射光会越大,在大于某个值时可使其偏右接近黑线,如果车子越偏右进入黑线,为避免它整个往右超出黑线,可在反射光小至某个值时,让车子偏左,像这样始终让感应的反射光维持在某个范围内,保持黑线在感应器的右方,就可让车子延着划下的轨道前进。

当然,这样的方式只适合不交叉的黑线,如果轨道有交叉,就要使用两个感应器夹住黑线,如此在两个感应器反射光都小于某个值时,就表示目前处于交叉点。

那么,该怎么点亮标示为 D3 的 LED 呢?这个 LED 是借由标示为 DI 的脚位控制,当高电位时就会点亮 LED,不过光线感应器只能使用于连接端口 6、7、8,查看这些连接端口对应的脚位,都是类比输入脚位,怎么输出高电压?

其实类比脚位也可以用来作为扩充的数位脚位,以 Arino Uno 为例,A0 到 A5,也可以当作 D14 到 D19 数位脚位来使用,因此,查看你的连接端口,就可以知道要令哪个号码的数位脚位为高电位了,例如,若连接在连接端口 6,其脚位为 A2,那么就是设置数位脚位 15 为高电位,就可以点亮 LED。

如果有兴趣,你也可以使用光线感应器实作个扫瞄器喔!可以参考〈 EV3 Tutorial(7)使用颜色感应器实作扫描器 〉,道理是相同的!

接下来就实作个小夜灯吧!需求是,这个小夜灯只在够暗的时候,才会感应是否有人接近而启用,小夜灯的部份,我们就直接使用光线感应器上的 LED,为了方便调节什么样的光线明亮程度才会感应是否有人接近,我们使用 Me 可变电阻器,并将调整好的数值显示于七段显示器上。

我将 PIR 动作感应器连至端口 3,七段显示器连至端口 4,光线感应器连至端口 6,而可变电阻器连至端口 7。

首先处理侦测人体移动的部份,当侦测到人体靠近时,LED 会点亮:

由于光线感应器连至端口 6,为了控制 LED 明亮,必须使用脚位 A2 充当数位脚位 D16,你可以调整 PIR 动作感应器上的可变电阻,设定好你想要感应的距离范围。

接下来,利用程式设定 PIR 动作感应器为可重复触发模式且先关闭光线应器上的 LED:

程式会每一秒钟将可变电阻器的输入值,设定给七段显示器显示,并作为判断光线门槛值的依据,你可以测试看看小夜灯是否如预期运作。

当然,我们不能老是开着电脑,使用 mBlock 来控制小夜灯,以上测试没有问题的话,可以在“Arino mode”中,将程式上传至板子上:

记得,上传前要改用“Arino 主程式”方块,并将自订方块的名称部份改成英文,上传完毕之后,你就可以将小夜灯装在想要的地方,将板子连接上外部电源,板子上的电源开关,就是你要不要启用小夜灯的开关了!

感谢CodeData用户: caterpillar 的贡献 着作权归作者所有

整理:宁波家电物联网云平台,中科极动云

CONTACT US: http://www.iot-jd.com/

J. mBlock & Arino(13)使用摇杆控制

摇杆这东西,经常可见到它的应用,电玩设备就不用说了,我前阵子刚挂掉的行车记录器,上头也有个小摇杆,主要用来上下左右操控选单,以及按下摇杆确认选项 … XD

不同厂商制作的类比摇杆,脚位与标示上可能会有所不同,不过基本上会有五个脚位,分别为电源、GND、X 轴、Y 轴、开关,以我手中的 Keyes_Sjoys 来说:

从左至右的接脚顺序与标示分别是 GND、+5V、VRx、VRy、SW,SW 就是开关输出的意思,在接好 +5V 与 GND,而摇杆不按下的情况下,Keyes_Sjoys 的 SW 会有电压输出,按下摇杆的话,SW 会是 0V。

至于 VRx 与 VRy 输出,是以类别电压输出来表示目前摇杆的方向状态,在未操作摇杆的情况下,VRx 与 VRy 大致是在 2.5V,如果在 X 方向移动,VRx 会有 0 到 5V 变化,如果在 Y 方向移动,VRy 也是有 0 到 5V 变化。

因此,可以将 VRx 与 VRy 接到 Arino 的类别脚位,依摇杆操作的方向,我实际量得 Arino 的类比输入值变化为:

在 Fritzing 中有个通用的摇杆元件,接脚顺序与标示则分别是 VCC、VERT、HORZ、SEL、GND,SEL 就是选择,其实也就是开关的意思:

因此,如果要使用摇杆控制猫咪,可以如下衔接电路,VCC、VERT、HORZ、SEL、GND,SEL 等脚位,就对应至你实际使用的摇杆模组脚位即可:

我要使用摇杆来控制猫咪的上、下、左、右移动,而按下摇杆,猫咪会发出“喵”一声,为了符合操作习惯,以向右为 X 正方向,而向上为 Y 正方向,因此,我用 488 减去 Arino 从 Keyes_Sjoys 的 VRy 量得的值:

你也可以挑战使用摇杆来控制 3D 立方体旋转喔!

这是自己用“画笔”绘制的,一点点电脑图学的应用,最主要的是,知道 x-y-z 三维座标中某个点,如何绕轴旋转,这部份可参考〈 三维直角座标之绕轴旋转 〉。

然后,正立方体以 (0, 0, 0) 为中心,订出八个顶点,这部份可参考〈 顶点索引阵列 〉,只要看第一张图就可以了,我没有用顶点索引阵列,因为在 Scratch(mBlock) 中没办法,因为它的程式元素太少,难以实作顶点索引阵列,因此,我简化了绘图,用最简单(但重复)的方法,直接跑一维清单而已 … 就只是程式码重复了四次,理论上是要跑六个面,不过,跑四个面,每个边就都至少画过一次了 … XD

有兴趣研究一下电脑图学的,可以参考一下我的〈 电脑图学入门 〉文件。

感谢CodeData用户: caterpillar 的贡献 着作权归作者所有

整理:宁波家电物联网云平台,中科极动云

阅读全文

与mblockarduino编程教程相关的资料

热点内容
app上续保车险用什么方式付款 浏览:479
wps如何把pdf转成PPT 浏览:62
以太网pdf 浏览:193
泰国剧罪孽父亲出海 浏览:7
叶天明柳韵txt 浏览:825
bch主流算法 浏览:767
免费在线国产片 浏览:200
苹果平板为什么连接服务器错误 浏览:89
穿越东晋成为王凝之 浏览:958
手机里的文件夹怎么拉出来 浏览:281
饥荒怎么输入ip进服务器 浏览:470
美国恐怖三极片 浏览:995
四川虚拟主机云服务器 浏览:780
母乳喂养真人版电影 浏览:396
免费看片链接 浏览:492
编程将中断类型号 浏览:597
数字编程学院 浏览:95
程序员不时尚 浏览:746
不付费看网站 浏览:230