Max探索者

个人简介

技术规格

零配件清单

MAX整机功能及配置总览

功能及配置总览

MAX整机功能及配置总览

重要更新!Scratch图形化编程

重要更新:MAX全新支持Scratch图形化编程,基于Scratch3.0的mind+平台 点击链接,火速下载mind+最新版本:http://mindplus.cc 教程在本网页后面,请往下翻。 Mind+主界面

上手指南

第一步:参考说明书组装MAX

中文版说明书

点击下载:中文版安装说明书PDF版本

英文版说明书

点击下载:英文版安装说明书PDF版本

视频教程

点击观看:开箱安装视频教程

组装好的MAX:File:MAX1.1.jpg|探索者MAX

第二步:玩MAX出厂内置4种程序

到下方的出厂固件中下载MAX的出厂程序

File:MAX-006.png|连线示意图

File:MAX-008.jpg|操作示意图

超声波避障

超声波避障使用步骤

使用方法:<br> ①确认连线都已正确连接<br> ②然后装上四节5号电池<br> ③打开电源开关,主板RGB灯显示红色转动<br> ④将MAX放在地上,MAX如果遇到前方30cm左右有障碍物,就会转弯往另外一边行驶<br> 点击观看:视频演示<br>

红外巡线

[[File:MAX-hwxx.jpg_ |红外巡线

]]

[[File:MAX-hwxxbz.jpg_ |红外巡线使用步骤

]]

使用方法: ①拿出附带的巡线地图,平铺在地板上<br> ②打开电源开关,按一次功能按键,主板顶部灯显示绿色转动<br> ③然后把MAX放到黑线上,MAX就会跟着黑线行驶<br> 点击观看:视频演示<br>

光敏追光

[[File:MAX-line.jpg_ |光敏

]]

[[File:MAX-line1.jpg_ |光敏追光使用步骤

]]

使用方法: ①打开电源,按两次功能按键,RGB灯显示蓝色转动,就是切换到了光敏追光模式<br> ②打开手机的手电筒功能,对着超声波旁边的光敏传感器照射,MAX就会跟着光线强的一方行驶<br> 点击观看:视频演示<br>

蓝牙遥控

[[File:goble01.png|下载goble

]]

[[File:MAX-ly.jpg|蓝牙控制使用步骤goble

]]

File:ROB0139_4.png|扫描二维码下载goble

使用方法: ①在苹果应用商店搜索或者扫描旁边的二维码下载“走你”蓝牙遥控程序<br> ②打开电源,按三次功能按键,主板4个RGB灯显示4种颜色,就会切换到蓝牙模式<br> ③将手机靠近MAX,蓝牙将会自动连接,连接成功后,MAX的主板LINK灯会亮,软件里面的蓝牙标识会变成绿色<br> ④操作右侧的方向按键,MAX就会前后左右行驶了<br> 点击观看:视频演示

第三步:准备学编程

编程前的准备工作

当我们打开MAX的电源开关,通过按功能按键切换,就可以实现巡线、避障、追光、蓝牙控制等功能....那这些神奇的功能是怎样实现的呢?从现在开始,我们就会逐一为你讲解机器人的程序控制。在学习开始之前,我们需要做一些准备工作。

请准备好以下工具

1、组装好的探索者MAX机器人一台,如下图。

File:MAX1.1.jpg|探索者MAX

2、PC电脑一台及A-B型USB数据线一条,如下图。 File:ROBO137-PC.png|PC电脑和USB数据线

下载和安装Arduino IDE软件

1.下载Arduino IDE 打开网页输入网址Arduino IDE 进入到页面后,找到如下图所示部分。File:1.6.12.png|1.6.12

Windows用户:点击下载Windows(ZIP file) Mac,Linux用户:选择相应的系统。 下载完成后,解压文件: 把整个Arduino 1.6.12文件夹放到你电脑熟悉的位置,便于你之后查找。打开Arduino 1.6.12文件夹,就是如下图的看到内容。File:Arduino1.6.12.png|解压后的文件

2.安装驱动 把USB一端插到MAX的主板上,另一端连到电脑。连接成功后,MAX板的红色电源指示灯ON亮起。然后,打开控制面板,选择设备管理器如下图。 File:Driver_2.png_ |设备管理

找到其它设备>Arduino-xx,右击选择更新驱动程序软件。如下图 File:Driver_3.png_ |更新驱动程序软件

在弹出的对话框中选择下面一项 -->手动查找并安装驱动程序软件。如下图File:MAX1.7.png_ |手动查找安�

打开到Arduino IDE安装位置,就是上面那个解压文件的位置,选择搜索路径到drivers(如下图),点击下一步。 File:MAX1.8.png_ |搜索路径drivers

选择始终安装此驱动程序软件(如图1),出现图2,说明驱动安装成功。

[[File:Driver_6.png_ |图1始终安装此驱动程序

]]

[[File:MAX1.10.png_ |图2已安装

]]

这时查看设备管理器端口会显示一个串口号(如下图)。 File:Driver_8.png_ |显示串口号

3、更改界面语言 打开Arudino IDE,就会出现Arduino IDE的编辑界面(如下图), File:1.6.12-1.png_ |更改语言编辑界面

一开始是英文的界面,如果你不习惯英文界面我们可以选择菜单栏File Preferences(如下图)。 File:Arduino12.png_ |更改语言编辑界面

然后选择Editor language简体中文(如下图),点击OK。再次重新打开Arduino IDE就是中文界面了。 File:MAX1.14.png_ |更改成简体中文

下载及安装MAX运行库

1、点击下载库文件[ https://github.com/DFRobot/DFRobot_MAX] 。如何安装库?。 2、将下载好的运行库解压后拷贝至ArduinoIDE安装包内的libraries文件夹内。

认识ArduinoIDE

Arduino IDE是Arduino产品的软件编辑环境。简单的说就是用来写代码,下载代码的地方。任何的Arduino产品都需要下载代码后才能运作。我们所搭建的硬件电路是辅助代码来完成的,两者是缺一不可的。如同人通过大脑来控制肢体活动是一个道理。如果代码就是大脑的话,外围硬件就是肢体,肢体的活动取决于大脑,所以硬件实现取决于代码。 File:MAX1.15.png_ |arduino编辑界面

Arduino IDE需要用到的已经在上图标示出来了,上图大部分的白色区域就是代码的编辑区,用来输入代码的。注意,输入代码时,要切换到英文输入法的模式。下面黑色的区域是消息提示区,会显示编译或者下载是否通过。

让MAX动起来

在上个章节里,我们准备好了MAX机器人、WINDOWS电脑、USB数据线、下载和安装好了ArduinoIDE,以及简单的熟悉了ArduinoIDE的界面和操作方法。那接下来我们就上传一个简单的程序来进一步的学习ArduinoIDE的编译和下载程序到MAX,让MAX跑起来。 File:MAX-P.png|

打开ArduinoIDE设置开发板和串口

1、点击图标,会打开如下图默认界面: File:MAX2.jpg|默认界面

2、在下载程序之前,我们要先告诉Arduino IDE板子型号以及相应的串口。 Arduino包括多种版本的主控器,其中比较常见的是Uno、Leonardo以及Mega系列的控制器。在板子一栏,你需要根据自己选择的主控硬件的固件类型来选择板卡。(样例中选用Uno为MAX的控制器) 工具 > 开发板 > Arduino Uno。 File:MAX2.1.jpg|设置开发板型号

3、工具 > 端口 > xx,这里的xx应选择和你的电脑设备管理器中看到的是一致。 File:MAX2.14.jpg|设置串口

编译并下载程序

1、将下面的代码输入到ArudinoIDE中(程序编写必须使用英文输入法,注意大小写)。

|


#include <DFRobot_MAX.h>
DFRobot_MAX myMax;
void setup() {
 myMax.begin();
 }
void loop() {
 myMax.forward (150,150);
 }

2、点击“验证”按钮编译程序下方会提示:编译完成(如下图1)。(如果有错误,程序将无法通过编译并提示错误(如下图2)。) [File:MAX2.2.png|图1编译完成

File:MAX2.3.png|图2编译错误

3、用USB线将MAX和电脑连接,如下图。 File:MAX-PC.jpg|将MAX连接到电脑端

4、按 <File:arduino-sc.png>“上传”按钮将程序上传到MAX机器人。 File:MAX2.7.png|上传成功

启动MAX

1、确认左右两个电机接入了主板的电机口(如下图3和图4)。

[[File:MAX2.8.png|图3两个电机

]]

[[File:MAX2.9.png|图4主板的电机口

]]

2、为MAX安装好4节AA电池(或者锂电池)并打开电源开关(如下图5和图6)。

[[File:MAX2.10.png|图5 电池

]]

[[File:MAX2.11.png|图6 电源开关

]]

打开开关,我们就能看见向前奔跑的MAX啦!

开始学编程

MAX的行走路线

File:6.1.jpg|MAX的行走路线

前情回顾:

在前面的上手指南中,我们已经对Arduino的下载和安装,程序的编译和下载有了简单的了解。

本章主要任务:

编写程序让MAX机器人的行驶路线为正方形。

本章学习内容:

1. 程序主要分几个部分;

  1. 函数的定义;
  2. setup()函数和loop()函数;
  3. 注释的使用;
  4. 延时函数的使用;

点击下载本章教程的详细内容:MAX的行走路线

MAX的炫彩RGB灯

File:6.2.jpg|MAX的炫彩RGB灯

前情回顾:

在上个章节里,学习了注释的使用、函数的定义、setup()函数和loop()函数、以及延时函数的使用。

本章主要任务:

让MAX在行驶过程中,循环点亮4个RGB灯。

本章学习内容:

1. 变量的定义;

  1. for循环语句的使用;
  2. RGB灯控制函数的使用;

点击下载本章教程的详细内容:MAX的炫彩RGB灯

使用按键点亮RGB灯

[[File:6.3.jpg|使用按键点亮RGB灯

前情回顾:

在上个章节里,我们了解了什么是变量,如何使用for循环语句和RGB灯控制函数。

本章主要任务:

实现按一次按键,点亮MAX背上的1个RGB灯。

本章学习内容:

1. 按键的原理;

  1. 如何使用if语句;
  2. “==”和“=”的区别;

点击下载本章教程的详细内容:使用按键点亮RGB灯

超声波测距

[[File:6.4.png|超声波测距

前情回顾:

在上个章节里,学习MAX的按键,if语句的使用。

本章主要任务:

使用超声波测距,用串口打印出距离数值。

本章学习内容:

1. 介绍超声波测距的原理;

  1. 超声波测距函数的使用;
  2. 学习使用串口打印的函数;
  3. Serial.print()和Serial.println()的区别;

点击下载本章教程的详细内容:超声波测距

音效播放

[[File:6.5.png|音效播放

前情回顾:

在上个章节里,学习了用超声波测距,并用串口打印出数值。

本章主要任务:

MAX在行驶的过程中,循环播放1到8号的音效和8号到1号音效。

本章学习内容:

1. 内置音效的介绍;

  1. 播放音效函数的使用;
  2. while和do...while...语句的使用;

点击下载本章教程的详细内容:音效播放

七音符音乐小车

[[File:6.6.jpg|七音符音乐小车

前情回顾:

在上个章节里,我们学习了音效函数的使用、16种内置音效和while、do...while...循环语句。

本章主要任务:

在110~40cm之间每个隔10cm播放一个音效,依次播放1~7号音效。

本章学习内容:

1. 学习if...else if...else判断语句;

  1. 学习逻辑运算符;

点击下载本章教程的详细内容:七音符音乐小车

避障机器人

[[File:6.7.png|MAX的炫彩RGB灯

前情回顾:

在上个章节里,我们学习了逻辑运算符、if...else if...else的用法。利用了超声波测距的原理实现了七音符音乐小车的功能

本章主要任务:

当MAX遇到障碍物时,实现向右、向左、原地掉头等避障功能,同时RGBled灯会分别亮蓝色、紫红色等颜色。

本章学习内容:

1. 随机函数random()的使用;

  1. myMax.swerve函数的使用;
  2. 学习switch...case语句;
  3. if、if...else if、switch...case语句的区别;

点击下载本章教程的详细内容:避障机器人

行走的表情包

[[File:6.8.png|行走的表情包

前情回顾:

在上个章节里,我们学习了switch...case语句、random随机函数和myMax.swreve函数的使用

本章主要任务:

MAX在行驶的过程中随机显示不一样的表情。

本章学习内容:

1. RGB表情板的介绍;

  1. myMax.showFace函数的使用;
  2. myMax.backward函数的使用;

点击下载本章教程的详细内容:行走的表情包

自定义表情板

[[File:6.9.jpg|自定义表情板

前情回顾:

在上个章节里,我们学习了RGB表情板内置了23种表情和怎么使用myMax.showFace、myMax.backward函数

本章主要任务:

自己定义表情的图案和颜色。

本章学习内容:

1. 学习表情板自定义的方法;

  1. 学习数组的用法;
  2. myMax.cusomFace函数的使用;

点击下载本章教程的详细内容:自定义表情板

MAX的小眼睛——光敏传感器

[[File:6.10.jpg|MAX的小眼睛——光敏传感器

前情回顾:

在上个章节里,我们学习了用数组自定义表情板。

本章主要任务:

使用光敏传感器来控制MAX背面的两颗RGB灯亮,同时在串口监视器里查看左右两侧光敏的亮度值。

本章学习内容:

1. 学习光敏传感器的原理;

  1. 学习怎么样用光敏传感器来控制RGB灯发光;

点击下载本章教程的详细内容:MAX的小眼睛——光敏传感器

追光机器人

[[File:6.11.png|追光机器人

前情回顾:

在上个章节里,我们学习了光敏传感器的原理以及怎样使用光敏传感器控制RGB灯发光。

本章主要任务:

做一个追光机器人,让MAX随着光线强的一方行驶。

本章学习内容:

如何设置光敏传感器的参数。

点击下载本章教程的详细内容:追光机器人

巡线机器人

[[File:6.12.png|巡线机器人

前情回顾:

在上个章节里,我们学习了让MAX随着光线强的一方行驶的追光机器人。

本章主要任务:

做一个巡线机器人,使用巡线传感器,让MAX跟着黑线行走。

本章学习内容:

1. 学习巡线传感器的使用方法及原理;

  1. 巡线灯的函数使用;
  2. 巡线传感器函数的使用;

点击下载本章教程的详细内容:巡线机器人

蓝牙控制机器人

[[File:6.13.png|蓝牙控制机器人

前情回顾:

在上个章节里,我们学习了巡线传感器和巡线灯函数的使用。

本章主要任务:

做一个蓝牙控制机器人,通过GoBLE软件(IOS版本)控制MAX前进,后退,左右转弯,原地旋转,停止等功能。

本章学习内容:

1. 学习GoBLE软件的使用方法;

  1. 学习如何在代码中设置GoBLE;
  2. 学习GoBLE.available()串口函数;

点击下载本章教程的详细内容:蓝牙控制机器人 点击下载GoBLE库文件:GOBLE库文件 点击下载红外库文件:红外库文件

声控机器人

[[File:6.14.png|声控机器人

前情回顾:

在上个章节里,我们学习了如何使用GoBLE软件控制MAX的行走方式。

本章主要任务:

学习用声音传感器的原理及函数的使用,并用声音控制MAX前进、后退、右转、停止。

本章学习内容:

1. 学习声音传感器的原理;

  1. 学习什么是子函数;
  2. 学习如何自定义子函数;
  3. 学习如何使用声音传感器的函数;

点击下载本章教程的详细内容:声控机器人

按键的拓展——功能切换

[[File:6.15.png|按键的拓展——功能切换

前情回顾:

在上个章节里,我们学习了声音传感器的原理及其函数的使用。

本章主要任务:

学习时间函数,利用按键切换追光、蓝牙控制、巡线灯功能。

本章学习内容:

1. 学习什么是时间函数;

  1. 学习怎么用按键切换功能;

点击下载本章教程的详细内容:按键的拓展——功能切换

MAX趣味应用编程

超声波音乐机器人

如何安装库?

|

/*
 * @程序功能:超声波音乐小车
 * @实验现象:MAX在行驶的过程中,根据前方障碍物的不同距离,会发出不同的音调。就像在弹奏音乐一样
 * @author [liulihua](lihua.liu@dfrobot.com)
 * @version  V1.0
 * @date  2017-11-22
 */

#include <DFRobot_MAX.h>
DFRobot_MAX myMax;
int u;                     //用于存放超声波距离值
int a[7]={1,1,1,1,1,1,1};  //用于给音乐播放做播放标志
void setup() {
  myMax.begin();             //初始化MAX系统
  myMax.forward(70,70);      //程序开始就让MAX前进
}
void loop() {
  u=myMax.distanceValue(); //读取超声波距离值
   if(u < 120 && u > 100 && a[0] == 1 ){        //如果距离在1.2米到1米之间,播放1号音效,并且标志置0,其余置1
      myMax.playSound(1);
      a[0]=0; a[1]=1; a[2]=1; a[3]=1; a[4]=1; a[5]=1; a[6]=1;
    }
    if(u < 100 && u > 90  && a[1] == 1 ){      //如果距离在1米到0.9米之间,播放2号音效,并且标志置0.其余置1
      myMax.playSound(2);
      a[0]=1; a[1]=0; a[2]=1; a[3]=1; a[4]=1; a[5]=1; a[6]=1;
    }
    if(u < 90 && u > 80 && a[2] == 1 ){        //如果距离在0.9米到0.8米之间,播放3号音效,并且标志置0.其余置1
      myMax.playSound(3);
      a[0]=1; a[1]=1; a[2]=0; a[3]=1; a[4]=1; a[5]=1; a[6]=1;
    }
    if(u < 80 && u > 70 && a[3] == 1 ){        //后面和前面的方式一致
      myMax.playSound(4);
      a[0]=1; a[1]=1; a[2]=1; a[3]=0; a[4]=1; a[5]=1; a[6]=1;
    }
    if(u < 70 && u > 60 && a[4]== 1 ){
      myMax.playSound(5);
      a[0]=1; a[1]=1; a[2]=1; a[3]=1; a[4]=0; a[5]=1; a[6]=1;
    }
    if(u < 60 && u > 50 && a[5]== 1 ){
      myMax.playSound(6);
      a[0]=1; a[1]=1; a[2]=1; a[3]=1; a[4]=1; a[5]=0; a[6]=1;
    }
    if(u < 50 && a[6]== 1 ){
      myMax.playSound(7);
      a[0]=1; a[1]=1; a[2]=1; a[3]=1; a[4]=1; a[5]=1; a[6]=0;
    }
}

|}

点击观看:视频演示

声光密码锁机器人

如何安装库?

|

/*
 * @程序功能:声光密码小车(如击掌两次,然后照亮左侧光敏,再照亮右侧光敏解锁)
 * @实验现象:利用声音传感器和两个光线传感器组成的密码小车
 * @只有输入正确的密码,小车才启动.可以有多重密码组合。
 * @author [liulihua](lihua.liu@dfrobot.com)
 * @version  V1.0
 * @date  2017-11-22
 */

#include <DFRobot_MAX.h>
DFRobot_MAX myMax;

void MicVal(int num)                //声音传感器检测的函数
{
  int micVal;
  int a=0;
  do{
    delay(1);                      //消除误差
    micVal=myMax.micValue();
    a= a + micVal;
  }while(a < (num * 600) || a == -1 );
  Serial.println("a=");
  Serial.println(a);
  myMax.rgbLed(0, 255, 0, 0);
  return;
}

void LightL()                  //左侧光敏检测的函数
{
  //int lightR;
  int lightL;
  do{
    lightL=myMax.lightValue(1);
    //lightR=myMax.lightValue(0);
  }while(lightL>70 || lightL < 2);
  Serial.println("lightL=");
  Serial.println(lightL);
  myMax.rgbLed(2, 0, 255, 0);
  return;
}

void LightR()                     //右侧光敏检测的函数
{
  int lightR;
  do{
    //lightL=myMax.lightValue(1);
    lightR=myMax.lightValue(0);
  }while(lightR>70 || lightR < 2);
  Serial.println("lightR=");
  Serial.println(lightR);
  myMax.rgbLed(1, 0, 0, 255);
  return;
}

void Motor()                      //电机驱动的函数
{
  myMax.forward(120,120);
  myMax.playSound(12);
  myMax.rgbLed(3, 0, 255, 255);
}

void setup() {
  myMax.begin();
  Serial.begin(9600);  //调试数据的时候用到,平时不用
}

void loop() {  //要更改密码,只需要更改三个传感器的顺序和数量

  MicVal(1);    //调用声音传感器的函数,有击掌声音的时候,才退出函数
  LightR();    //调用右侧光线传感器的函数,有光照的时候,才退出函数
  LightL();    //调用左侧光线传感器的函数,有光照的时候,才退出函数
  MicVal(2);   //调用声音传感器的函数,有2次击掌声音的时候,才退出函数
  Motor();     //调用电机驱动的函数,驱动小车前进,并亮灯和发出音效
}

|} 点击观看:视频演示

自动避险的火车

如何安装库?

|

/*
 * @程序功能:自动避险的火车
 * @实验现象:MAX在巡线的时候,可以及时判断前方是否有障碍物。如果在50cm内有障碍物,就发出音效,并原地打转或者掉头继续巡线,或者改变线路。
 * @author [liulihua](lihua.liu@dfrobot.com)
 * @version  V1.0
 * @date  2017-11-22
 */

#include <DFRobot_MAX.h>    //载入MAX库
DFRobot_MAX myMax;
int l,r,c,u;                 //定义变量,l表示左巡线传感器,r右巡线传感器,c中间传感器 u超声波距离
int i=1;                     //用于是否播放音效的标志

void setup() {
  myMax.begin();             //初始化MAX系统
 // Serial.begin(9600);
  myMax.forward(70,70);      //程序开始就让MAX前进
}

void loop() {
  l=myMax.lineValue(2);    //读取左侧巡线传感器的值
  c=myMax.lineValue(1);    //读取中间巡线传感器的值
  r=myMax.lineValue(0);    //读取右侧巡线传感器的值
  u=myMax.distanceValue(); //读取超声波距离
  //Serial.println(u);
  if(u > 50){                   //判断障碍物距离是否小于50cm,小于的话,就执行巡线功能
    i = 1;                      //这个标志置1,用于重启避障模式的音效播放
    if(l==1 && c==1 && r==1){   //如果三个巡线传感器都在黑色上的话,就慢速前进。
      myMax.forward(70,70);
    }else{
        if( l==0 && c==1 && r==0){   //否则,就判断中间传感器是否在黑线上,左右在白线上
          myMax.forward(70,70);      //是的话,就直线前进
        }else{
          if((l==0 && c==1 && r==1)||(l==0 && c==0 && r==1)){  //否则的话,就判断右侧两个传感器是否在黑线上或者右侧一个在黑线上,从而判断小车左偏了。
            myMax.forward(150,70);      //是的话,就让小车右转
            if(l==0 && c==0 && r==0){  //如果小车速度过快,冲出去了,前面没有检测到的话
              myMax.forward(130,70);   //依然继续让小车右转 从而避免误判断。
              }
          }else{
            if((l==1 && c==0 && r==0)||(l==1 && c==1 && r==0)){  //否则的话,再通过巡线传感器判断小车是否往右偏了
               myMax.forward(70,150);                            //是右偏的话,小车左转
               if(l==0 && c==0 && r==0){                         //如果小车速度过快,冲出去了,前面没有检测到的话
                 myMax.forward(70,150);                          //依然继续让小车左转 从而避免误判断。
                 }
               }
             }
          }
       }
    }
  else{                                //如果距离小于50cm的话,执行避障模式
    if(i==1){                          //先判断标志是否为1
        i=0;                           //再把标志置零,从而避免多次调用音效
        myMax.playSound(12);           //发出音效
        }
     myMax.forward(0,130);            //如果有障碍物就让小车左转
    }
}

|} 点击观看:视频演示

蓝牙遥控机器人

点击下载蓝牙GOBLE库文件GOBLE库文件如何安装库?

|

/*
 * @程序功能:使用IOS版本的GOBLE(中文名称:走你)蓝牙遥控程序遥控MAX前进,后退,左右转弯
 * @实验现象:打开走你软件,并且苹果设备打开蓝牙,靠近MAX,会自动连接上蓝牙,连接成功后MAX的LINK灯会亮起来,这时候,按下右边的上键
 * MAX前进,就可以开始遥控MAX了。
 * @author [liulihua](lihua.liu@dfrobot.com)
 * @version  V1.0
 * @date  2017-11-22
 */
#include <DFRobot_MAX.h>
#include <GoBLE.h>
DFRobot_MAX myMax;
int up,down,left,right; //定义四个按键

void setup() {
  myMax.begin();
  Serial.begin(115200);
}

void loop()
{
     if (Goble.available())   //如果判断接收到的蓝牙数据为有效数据的话,就将接收到的数据赋值给各个按键变量
       up     = Goble.readSwitchUp();
       down   = Goble.readSwitchDown();
       left   = Goble.readSwitchLeft();
       right  = Goble.readSwitchRight();
       if (up == LOW)      //如果上键被按下的话,MAX前进
         myMax.forward(100,100);
         else if(down == LOW)            //否则的话,看下键是否被按下,按下的话,就后退
           myMax.backward(100, 100);
           else if(left == LOW)       //否则,判断左键是否按下,按下的话,就左转
              myMax.forward(100,200);
             else if(right == LOW)    //否则,判断右键是否按下,是的话,就右转
               myMax.forward(200,100);

}

|} 点击观看:视频演示

在圈圈内急着打转的机器人

如何安装库?

|


/*
 *程序功能:在规定区域行驶的机器人
 *实验现象:用黑色胶带在白纸上贴一个大圆圈,MAX只在白纸内或者黑线内行驶,不会出界。遇到黑色线条,就会转弯或者掉头行驶。
 * @author [liulihua](lihua.liu@dfrobot.com)
 * @version  V1.0
 * @date  2017-11-10
 */

#include <DFRobot_MAX.h>
DFRobot_MAX myMax;
int L;  //定义左侧巡线传感器
int R;  //定义右侧巡线传感器
int M; //定义中间的巡线传感器
int D; //定义变量用于存放随机数
void setup() {
  myMax.begin();             //初始化MAX系统
  myMax.forward(70,70); //程序开始就让MAX前进。
}

void loop() {
    L=myMax.lineValue(0);   //读取左侧巡线传感器的值
    R=myMax.lineValue(1);  //读取右侧巡线传感器的值
    M=myMax.lineValue(2);  //读取中间巡线传感器的值
    if(L > 0||R > 0||M > 0){     //如果三个传感器当中,有一个传感器检测到黑线,就执行下面的动作
       myMax.playSound(8);    //播放音效
       myMax.backward(70,70);    //MAX后退1秒钟
       delay(1000);
       D=random (0,10); //生成一个0到10的随机数
       if(D<5){     //如果生成的随机数小于5的话,就执行下面的动作
       myMax.backward(0,70); //让MAX左转后退1秒
       delay(1000);
       }
       else
       {
        myMax.backward(70,0); //如果大于5的随机数就左转后退1秒钟
       delay(1000);
       }
    }
   myMax.forward(70,70); //MAX继续前进
}

|} 点击观看:视频演示

另外一种量尺寸的乐谱车

如何安装库?

|


/*
 *程序功能:乐谱小车
 *实验现象:根据超声波检测到的不同的距离,播放不同的乐谱。
 * @author [liulihua](lihua.liu@dfrobot.com)
 * @version  V1.0
 * @date  2017-11-21
 */

#include <DFRobot_MAX.h>
DFRobot_MAX myMax;
int u;
void setup() {
  myMax.begin();             //初始化MAX系统
  delay(150);
  //Serial.begin(9600);
  myMax.forward(70,70);      //程序开始就让MAX前进

}
void loop() {
    u=myMax.distanceValue(); //读取超声波距离值
    //Serial.println(u);
   switch(u){
      case 30:myMax.playSound(7);delay(20);break; //如果检测到距离为30cm,就播放对应的音乐,这句为播放7号乐谱。
      case 50:myMax.playSound(6);delay(20);break;
      case 70:myMax.playSound(5);delay(20);break;
      case 90:myMax.playSound(4);delay(20);break;
      case 110:myMax.playSound(3);delay(20);break;
      case 130:myMax.playSound(2);delay(20);break;
      case 150:myMax.playSound(1);delay(20);break;  //一共播放7种乐谱
    }
}

|}

声控MAX小车

如何安装库?

|

/*
 * @程序功能:声控小车
 * @实验现象:利用拍掌来控制小车前进和后退,击掌一次就前进,再次击掌就后退,如此循环
 * @author [liulihua](lihua.liu@dfrobot.com)
 * @version  V1.0
 * @date  2017-11-30
 */

#include <DFRobot_MAX.h>
DFRobot_MAX myMax;

int i=1;                    //定义标志,用于判断是让小车前进还是后退

void MicVal()                //声音传感器检测的函数
{
  int micVal;
  do{
    delayMicroseconds(10);                      //消除误差
    micVal=myMax.micValue();
  }while( micVal < 700 || micVal == -1 ); //如果声音小于700的话或者为-1的话,就为误判断
  i=!i;
  return;
}

void setup() {
  myMax.begin();
  Serial.begin(9600);
}

void loop() {

  MicVal();    //调用声音传感器的函数,有击掌声音的时候,才退出函数
  if(i==0){                 //如果标志为1的话,MAX前进,表情板显示蓝色笑脸
    myMax.forward(150,150);
    myMax.showFace(8, 5);
  }
    else{
      myMax.backward(150,150); //否则MAX后退,表情板显示绿色问号
      myMax.showFace(7, 3);
    }
}

|} 点击观看:视频演示

带醉鬼MAX回家

如何安装库?

|

/*
 * @程序功能:带醉鬼MAX回家
 * @实验现象:MAX喝酒喝醉了,左偏右偏的乱跑,做出各种稀奇古怪的表情,发出各种嗷嗷怪叫。
 * MAX的超声波眼睛还是不迷糊的,看到障碍物了会往一边走,看着东倒西歪的MAX,你确定能把醉鬼MAX带回家?
 * @author [liulihua](lihua.liu@dfrobot.com)
 * @version  V1.0
 * @date  2017-11-30
 */

#include <DFRobot_MAX.h>    //载入MAX库
DFRobot_MAX myMax;

int u;                 // u超声波距离
int r;                 // r存放随机数
long timeMode=0;       //存放系统运行时间

void setup() {
  myMax.begin();             //初始化MAX系统
}

void loop(){

  u=myMax.distanceValue();           //读取超声波距离

  if(u > 40){                        //判断前方有无障碍物
    if(millis()-1000 > timeMode)     //系统时间每1秒钟触发一次
    {
      timeMode=millis();
      r=random (1, 10);             //生成一个随机数
      if(r<6){                      //如果随机数小于6的话,就左转
        myMax.forward(75,150);
        myMax.showFace(1,2);         //表情板显示1号表情,2号颜色
      }else{                         //否则的话,就右转
        myMax.forward(150,75);
        myMax.showFace(3,6);        //表情板显示3号表情,6号颜色
      }
    }
  }

  else                      //如果距离小于40cm,前方有障碍物的话
  {
     r=random (1, 10);     //重新生成一个随机数
     if(r<6)               //如果随机数小于6,就左偏
     {
       myMax.forward(0,150);
       myMax.playSound(14);
       myMax.showFace(6,4);
       delay(850);
     }
     else                  //如果随机数大于等于6,就右偏
     {
       myMax.forward(150,0);
       myMax.playSound(15);
       myMax.showFace(5,7);
       delay(850);
     }
  }

}

|} 点击观看:视频演示

红外遥控机器人

点击下载红外库文件红外库文件如何安装库?

|

/*
 * @程序功能:红外控制(使用DFR0107红外套件,并将红外传感器接入DP1端口)
 * @实验现象:根据匹配不同的红外编码,让小车前进、后退、左转、右转、停止等操作。可以使用任何的红外遥控器,先在串口打印窗口查看对应按键的编码,然后来使用。
 * @author [liulihua](lihua.liu@dfrobot.com)
 * @version  V1.0
 * @date  2017-12-1
 */

#include <DFRobot_MAX.h>        //载入MAX库
#include <IRremote.h>            //载入红外库
DFRobot_MAX myMax;

IRrecv irrecv(DP1);              //定义红外接收端口为DP1
unsigned long IRVal;                 //用于存放红外编码

void setup() {
  myMax.begin();
  Serial.begin(9600);
  irrecv.enableIRIn();            // 开始红外接收
}

void loop() {
  IRrecv irrecv(DP1);
  decode_results results;
  IRVal=results.value;                //将红外编码赋值给变量IRVal
  if (irrecv.decode(&results)) {   //如果红外编码为有效值,就打印出编码
    Serial.println(IRVal);
    irrecv.resume();
  }
  switch (IRVal)                       //根据不同的编码值让MAX执行不同的动作
  {
  case 16613503: myMax.forward(150,150); break;  //按VOL+ 小车前进
  case 16617583: myMax.backward(150,150);break;  //按VOL- 小车后退
  case 16589023: myMax.forward(70,150);  break;  //按左键 小车左转
  case 16605343: myMax.forward(150,70);  break;  //按右键 小车右转
  case 16580863: myMax.forward(0,0);     break;  //按关机键,小车停止
  }
}

|} 点击观看:视频演示

Mind+(基于Scratch3.0)实例编程

MAX的行走路线

学习目标:掌握MAX的电机控制基本方法 程序效果展示:让MAX的行驶路线为正方形 Mind+ 图形化程序截图 行驶路径

流水灯

学习目标:掌握RGB灯的控制方法 程序效果展示:显示蓝色的流水灯 Mind+ 图形化程序截图 流水灯

声控开关

学习目标:掌握声音传感器的基本控制方法 程序效果展示:当声音的值>200,点亮RGB灯5s Mind+ 图形化程序截图 声控开关

超声波测距

学习目标:掌握超声波的基本用法 程序效果展示:用超声波测与障碍物的距离值,然后利用串口显示出来 Mind+ 图形化程序截图 超声波测距

避障机器人

学习目标:掌握超声波的基本用法 程序效果展示:当距离障碍物<=45cm时,左转。当距离障碍物<=15cm时,后退在右转。 Mind+ 图形化程序截图 避障机器人

音效播放

学习目标:学习MAX本身的16种音效 程序效果展示:播放MAX的所有音效。 Mind+ 图形化程序截图 音效播放

炫彩表情板

学习目标:学习使用内置的表情 程序效果展示:炫彩表情板,每隔一秒显示不一样的表情。 Mind+ 图形化程序截图 炫彩表情板

自定义表情板

学习目标:掌握自定义表情和表情颜色 程序效果展示:炫彩表情板,每隔一秒显示不一样的表情。 Mind+ 图形化程序截图 自定义表情板

追光小车

学习目标:掌握光敏传感器的使用 程序效果展示:利用光敏传感器控制MAX向左运行,向右运行。 Mind+ 图形化程序截图 追光小车

恢复出厂程序

Mind+中集成了一键恢复出厂程序功能: 操作方法: 1、2、切换“上传模式”下的“手动编辑”,鼠标右键单击空白处。 3、选择“max恢复出厂设置”,此时代码区会自动填充好出厂代码。 4、点击“上传到设备”,上传成功之后就恢复了出厂程序。 注意:之后如果想对max进行图形编程,切换到“自动生成” 自定义表情板

MAX专用函数集

MAX库文件

功能说明:必须载入的,每次使用MAX编程必须使用这两条语句

|

 #include <DFRobot_MAX.h>
 DFRobot_MAX myMax;

例: #include <DFRobot_MAX.h>  //载入MAX驱动库
     DFRobot_MAX myMax;      //载入MAX驱动函数

     void setup() {
     myMax.begin();
     }

     void loop() {


    }

|}

初始化MAX系统

功能说明:用于初始化MAX的程序,每次使用MAX编程必须在setup里写上这条代码

|

函数原型:myMax.begin();

例: void setup() {
     myMax.begin();         //初始化MAX
     Serial.begin(9600);    //初始化串口
   }

|}

小车前进

功能说明:控制小车左轮和右轮前进,左右轮可设置速度 参数: left speed:左轮速度,数值为0~255 right speed:右轮速度,数值为0~255 返回值:无

|

函数原型:myMax.forward(leftSpeed,rightSpeed);
例:  myMax.forward(100,150);  //让MAX左轮100,右轮150的速度前进

|}

小车后退

功能说明:控制小车左轮和右轮后退,左右轮可设置速度 参数: left speed:左轮速度,数值为0~255 right speed:右轮速度,数值为0~255 返回值:无

|

函数原型:myMax.backward(leftSpeed,rightSpeed);
例:  myMax.backward(100,150); //MAX左轮100,右轮150的速度后退

|}

播放音效

功能说明:播放内置的16种音效 参数: 数据类型:int 数值范围:1~16,分别代码16种不同的音效 返回值:�

|

函数原型:myMax.playSound(i);
例:  myMax.playSound(5); //播放序号为5的音效,音效为乐谱suo

|}

表情板图案显示

功能说明:显示表情板内置的表情 参数: i:取值范围为0~22 ,int类型 分别代表23种不同的图案 color:取值范围为1~7,int类型,代表7种颜色

|

函数原型:myMax.showFace(i,color);
例:  myMax.showFace(2,3); //设置表情板用黄色显示序号2的表情图案

|}

清除表情板图案

功能说明:清除表情板显示的图案 参数:无 返回值:�

|

函数原型:myMax.clearScreen();
例:  myMax.showFace(2,3);//设置表情板显示图案
      myMax.clearScreen();//清除图案

|}

自定义表情板图案显示

功能说明:显示自定义的表情图案 参数: myFace:自定义显示表情的数组名,static int8_t类型。 color: 取值范围1~7,int类型,代表7种颜色。 返回值:�

|

函数原型:myMax.customFace(myFace,color);

例:  static int8_t myFace[129]{        //自定义表情板点阵显示
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0
        0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0, //1
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //2
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //3
        0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0, //4
        0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0, //5
        0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0, //6
        0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0, //7
};
myMax.showFace(myFace,3);//用黄色显示自定义图案。

|}

读取超声波的距离

读取超声波传感器的值,单位cm 参 数:无 返回值: int,距离值,单位cm

|

函数原型:myMax.distanceValue();
例: int a;
     a=myMax.distanceValue(); //读取超声波的距离值,并赋值给变量a

|}

读取声音传感器的值

功能说明:读取声音传感器的数值 参数:无 返回值:int 0~1024,声音越大,值越大。

|

函数原型:myMax.micValue();
例: int a;
     a=myMax.micValue();//读取声音传感器的值,并赋值给变量a

|}

读取三个巡线传感器的值

功能说明:读取三个巡线传感器的值; 参数:i:为巡线头的序号,0为右侧巡线传感器,1为中间传感器,2为左侧传感器; 返回值:0或者1;黑色线条返回1,传感器指示灯亮。白色返回0,传感器指示灯灭;

|

函数原型:myMax.lineValue(i);
例:  int l,c,r;
      l=myMax.lineValue(2);    //读取左侧巡线传感器的值
      c=myMax.lineValue(1);    //读取中间巡线传感器的值
      r=myMax.lineValue(0);    //读取右侧巡线传感器的值

|}

数字口DP

功能说明:数字端口,一共3个数字口,分别为DP1、DP2、DP3;所占用的引脚分别为10、9、8

|

DP1、DP2、DP3

例: void setup{
          pinMode(DP1, INPUT);  //设置DP1为输入引脚
     }

    void loop() {
         val = digitalRead(DP1); // 读取DP1口的值,并将它赋值给val
    }

|}

模拟口AP

功能说明:模拟端口,一共3个模拟口,分别为AP1、AP2、AP3;所占用的引脚分别为A7、A6、A5

|

AP1、AP2、AP3

例: void loop() {
         int val = 0;
         val=analogRead(AP1);   //读取输入模拟端口AP1,并将值赋给val
         Serial.println(val);   //串口打印出模拟量的数值
     }

|}

舵机口SP

功能说明:舵机专用端口,独立供电,一共3个舵机专用口,分别为SP1、SP2、SP3;所占用的引脚分别为18、14、11

|

SP1、SP2、SP3

例:  myMax.servoControl(SP1, 90)  //舵机控制函数
      //上面的程序表示,舵机接在SP1口,舵机角度置90度

|} 如果还想了解舵机其他好用的函数,可以点击后面的连接,里面会有相关介绍的。:servo

巡线灯

功能说明:两种状态,亮或者灭,对应的参数是0或1 参数:0或者1 返回值:�

|

函数原型:myMax.lineLED(i)
例:  myMax.lineLED(1);//点亮巡线灯
      myMax.lineLED(0);//熄灭巡线灯

|}

板载RGB灯

功能说明:控制板载的四个RGB灯 参数: num:RGB灯的序号,为0~3号 r:红色值 取值范围uint8 0~255 g:绿色值 取值范围uint8 0~255 b:蓝色值 取值范围uint8 0~255 返回值:�

|

函数原型:myMax.rgbLed(uint8_t num, uint8_t r, uint8_t g, uint8_t b)

例:  myMax.rgbLed(2, 160, 32, 240);
      //上面的程序表示,让2号RGB灯按照红色160,绿色32,蓝色240的参数混色,经过混色后显示的颜色为紫色。

|}

板载按键

功能说明:获取板载按键的按下状态 参数:无 返回值:0或者1,0表示按键按下,1表示按键未按下

|

函数原型:myMax.buttonValue()

例:  int a;
     a=myMax.buttonValue();
     //上面的程序表示,获取按键的状态,并保存在变量a

|}

舵机控制

功能说明:控制舵机的角度 参数: io:舵机接入的IO口,取值为:SP1,SP2,SP3 ; angle:舵机的转动角度,取值范围为0~180度; 返回值:�

|

函数原型:myMax.servoControl(uint8_t io, uint8_t angle)

例:  myMax.servoControl(SP1, 90)
     //上面的程序表示,舵机接在SP1口,舵机角度置90度

|}

电机控制

功能说明:控制电机的运动方式; 参数: direction_l为左侧电机的运动方式,speed_l为左侧电机的运动速度; direction_r为右侧电机的运动方式,speed_r为右侧电机的运动速度; speed_l和speed_r取值范围:0~255 返回值:无

|

函数原型:myMax.swerve(uint8_t direction_l, uint8_t speed_l, uint8_t direction_r, uint8_t speed_r)

例:  myMax.swerve(ADVANCE_L, 140, RETREAT_R, 140);
      //左侧电机前进,左侧电机运动速度140;右侧电机后退,右轮电机运动速度140

|}

电机停止

功能说明:控制驱动电机停止转动; 参数:无 返回值:�

|

函数原型:myMax.stopMotor()

例:  myMax.stopMotor(); //控制两侧电机停止转动

|}

光线传感器

功能说明:读取光线传感器的值 参数:0或者1,0表示左侧光线传感器,参数1表示右侧光线传感器 返回值:int 0~1024

|

函数原型:myMax.lightValue(uint8_t num)

例:  int a,b;
     a = myMax.lightValue(0)  //读取左侧光线传感器的值,并赋值给a
     b = myMax.lightValue(1)  //读取右侧光线传感器的值,并赋值给b

|}

MAX表情板图案及颜色列表

MAX表情板图案列表

表情显示函数使用方法: myMax.showFace(表情序号0-22,颜色序号1-7); 例如:myMax.showFace(22,3);//用黄色显示22号表情File:face01.png|

表情板颜色列表

File:face02.png|

1:红色 2:绿色 3:黄色 4:蓝色 5:紫色 6:青色 7:白色 例如:要用蓝色显示12号表情,程序这样写:myMax.showFace(12,4);

MAX内置音效列表

音效调用方法:myMax.playSound(i); 其中i表示音效的序号,从1号~16号

音效列表

1:乐谱do <br> 2:乐谱re <br> 3:乐谱mi <br> 4:乐谱fa <br> 5:乐谱suo <br> 6:乐谱la <br> 7:乐谱xi <br> 8:乐谱高音节do <br> 9:刹车声 <br> 10:回弹的声音<br> 11:两次子弹的声音 <br> 12:拖长音的回声 <br> 13:哟嚯 <br> 14:俏皮的结束音 <br> 15:喔噢 <br> 16:机器人说话<br> 如要使用15号的“喔噢”音效:myMax.playSound(15);

恢复MAX出厂固件

mind+恢复方法:File:恢复出厂程序mind+.png|

ArduinoID恢复方法: 如下图操作,打开arduino软件→文件→示例→DFRobot_MAX→MAXdemo,点击MAXdemo,然后将程序上传至MAX;这样就恢复了出厂设置 File:恢复出厂程序.png|

MAX运行库及出厂固件下载地址:https://github.com/DFRobot/DFRobot_MAX

常见问题

'''Q1. '''在上传的时候,总是出现上传项目错误?

- '''A. '''一般在上传项目的时候,应该是处于掉电的情况下上传;如果已经关闭电源开关,上传项目还是出错,这时应该检查串口是否连接好。

'''Q2. '''蓝牙控制的串口波特率一定要设置成115200吗?

- '''A. '''是的,因为手机蓝牙的波特率默认设置为115200。

'''Q3. '''出厂程序中的16号音效播放失败?

- '''A. '''出厂程序中只有15种音效,没有8号高音节do的音效。

'''Q4. '''为什么在巡线转弯的时候,MAX会偏离到地图外?

- '''A. '''与MAX相关的所有巡线程序都是在电量充足的情况下测试的;如果MAX在巡线的过程中会出现偏离的状态,说明电量不够,导致轮子的转速不够,这时候需要调节两轮的转速 / 更换电池来实现功能。

'''Q5. '''4节电池能用多长时间呢?

- '''A. '''亲测,用新的电池一直做巡线运动,能不停的跑两个小时左右。

'''Q6. '''连接电机的时候,有左右区分吗?

- '''A. '''有的,将MAX背对自己。左侧电机连接M1接口,右侧电机连接M2接口。如果电机接反了,MAX前进会变成后退。

'''Q7. '''为什么重新下载程序后,不能正常执行功能?

- '''A. '''有时可能会遇见同一段程序,以前能执行,后面重新下载后不能正常执行;这种情况下可能是电池没有电了,需要更换新的电池了。

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接