(SKU:ROB0137) 探索者MAX机器人

来自DFRobot Product Wiki
跳转至: 导航搜索
探索者MAX

目录

个人简介

  • 姓名:MAX
  • 年龄:8岁
  • 性别:男孩
  • 家族:探索者家族
  • 性格:活泼、开朗、好动
  • 爱好:探险、编程、音乐
  • 喜欢的颜色:红色、橙色、蓝色
  • 装备:铝合金机身、Arduino内核主板、单总线接口、带补光巡线传感器、超声波光敏二合一传感器、声音传感器、彩色表情面板、高品质音效模块、蓝牙通信、RGB灯×4。
  • 可扩展装备:金属舵机、金属顶盖、数字口传感器、模拟口传感器......
  • 技能:巡线机器人、避障机器人、光控机器人、声控机器人、竞赛机器人、跳舞机器人、灭火机器人、 Scratch图形化编程、ArduinoIDE编程......
  • 个性签名:探索机器人的奥秘!
  • 重要更新:MAX全新支持Scratch图形化编程,基于Scratch3.0的mind+平台,请点击链接下载最新版本:http://mindplus.cc


技术规格

  • 工作电压 :3.7V至6V(4节5号干电池或3.7V锂电池)
  • 包装尺寸 :长230mm×宽180mm×高135mm
  • 组装好的尺寸:长170mm×宽143mm×高110mm
  • 接口类型 :B型USB口
  • 持续使用时间:大于2小时(因电池类型、测试环境等因素,实际使用时间可能有出入)
  • 通信方式 :USB、蓝牙4.0
  • 处理器 :ATMEGA328P
  • 开发平台 :ArduinoIDE mind+



零配件清单

MAX整机功能及配置总览


功能及配置总览

MAX整机功能及配置总览

重要更新!Scratch图形化编程

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

Mind+主界面




上手指南

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

中文版说明书


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

英文版说明书


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

视频教程

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

组装好的MAX:

探索者MAX


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

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


连线示意图

操作示意图

超声波避障

超声波
超声波避障使用步骤





















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

红外巡线

红外巡线

红外巡线使用步骤


















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

光敏追光

光敏

光敏追光使用步骤




















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

蓝牙遥控

下载goble

蓝牙控制使用步骤goble

扫描二维码下载goble

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



第三步:准备学编程


编程前的准备工作

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

请准备好以下工具

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

探索者MAX


2、PC电脑一台及A-B型USB数据线一条,如下图。

PC电脑和USB数据线


下载和安装Arduino IDE软件


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

1.6.12


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

解压后的文件


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

设备管理


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

更新驱动程序软件


在弹出的对话框中选择下面一项 -->手动查找并安装驱动程序软件。如下图

手动查找安装


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

搜索路径drivers


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

图1始终安装此驱动程序

图2已安装

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

显示串口号


3、更改界面语言
打开Arudino IDE,就会出现Arduino IDE的编辑界面(如下图),

更改语言编辑界面


一开始是英文的界面,如果你不习惯英文界面我们可以选择菜单栏File Preferences(如下图)。

更改语言编辑界面


然后选择Editor language简体中文(如下图),点击OK。再次重新打开Arduino IDE就是中文界面了。

更改成简体中文


下载及安装MAX运行库


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

认识ArduinoIDE


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

arduino编辑界面


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

让MAX动起来


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


打开ArduinoIDE设置开发板和串口


1、点击Arduino.png图标,会打开如下图默认界面:

默认界面


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

设置开发板型号


3、工具 > 端口 > xx,这里的xx应选择和你的电脑设备管理器中看到的是一致。

设置串口


编译并下载程序


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


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

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

图1编译完成


图2编译错误


3、用USB线将MAX和电脑连接,如下图。

将MAX连接到电脑端


4、按 Arduino-sc.png“上传”按钮将程序上传到MAX机器人。

上传成功


启动MAX

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

图3两个电机

图4主板的电机口


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

图5 电池

图6 电源开关


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

MAX2.12.png

开始学编程

MAX的行走路线


MAX的行走路线

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 程序主要分几个部分;
2. 函数的定义;
3. setup()函数和loop()函数;
4. 注释的使用;
5. 延时函数的使用;


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

MAX的炫彩RGB灯


MAX的炫彩RGB灯

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 变量的定义;
2. for循环语句的使用;
3. RGB灯控制函数的使用;

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





使用按键点亮RGB灯


使用按键点亮RGB灯

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 按键的原理;
2. 如何使用if语句;
3. “==”和“=”的区别;

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






超声波测距


超声波测距

前情回顾:

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

本章主要任务:

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

本章学习内容:

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

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





音效播放


音效播放

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 内置音效的介绍;
2. 播放音效函数的使用;
3. while和do...while...语句的使用;

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





七音符音乐小车


七音符音乐小车

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 学习if...else if...else判断语句;
2. 学习逻辑运算符;

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

避障机器人


MAX的炫彩RGB灯

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 随机函数random()的使用;
2. myMax.swerve函数的使用;
3. 学习switch...case语句;
4. if、if...else if、switch...case语句的区别;

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




行走的表情包


行走的表情包

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. RGB表情板的介绍;
2. myMax.showFace函数的使用;
3. myMax.backward函数的使用;

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





自定义表情板


自定义表情板

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 学习表情板自定义的方法;
2. 学习数组的用法;
3. myMax.cusomFace函数的使用;

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

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


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

前情回顾:

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

本章主要任务:

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

本章学习内容:

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

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



追光机器人


追光机器人

前情回顾:

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

本章主要任务:

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

本章学习内容:

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

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





巡线机器人


巡线机器人

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 学习巡线传感器的使用方法及原理;
2. 巡线灯的函数使用;
3. 巡线传感器函数的使用;

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



蓝牙控制机器人


蓝牙控制机器人

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 学习GoBLE软件的使用方法;
2. 学习如何在代码中设置GoBLE;
3. 学习GoBLE.available()串口函数;

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



声控机器人


声控机器人

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 学习声音传感器的原理;
2. 学习什么是子函数;
3. 学习如何自定义子函数;
4. 学习如何使用声音传感器的函数;
点击下载本章教程的详细内容:声控机器人




按键的拓展——功能切换


按键的拓展——功能切换

前情回顾:

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

本章主要任务:

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

本章学习内容:

1. 学习什么是时间函数;
2. 学习怎么用按键切换功能;
点击下载本章教程的详细内容:按键的拓展——功能切换






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号表情



表情板颜色列表



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

MAX内置音效列表

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

音效列表

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


恢复MAX出厂固件

mind+恢复方法:










































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






























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商城购买链接

个人工具
名字空间

变换
操作
导航
工具箱