实验一  教你的机器人“走路”
一、要求与目的
熟悉机器人用于走路的“脚”,要教你的机器人学会走路,同时你要掌握控制机器人走路的基本方法。
二、内容                                                     
1、机器人为什么会“走”
要想让机器人移动,就要控制电机的转动。控制机器人“行走”的基本指令是motor(x,y)函数和drive(x,y)函数。
2、驱动电机的函数
通过JC程序控制电机转动,使机器人行走的指令有两个,它们是motor(x,y)函数和drive(x,y)函数,介绍:
一、motor(x,y)函数
此函数是“启动”电机,x取值1、2,分别表示左右两个电机;y表示电机转速
两个电机同时以相同速度启动,意味着什么?机器人将怎样运动?
答:机器人将直走。
进一步讨论:如果将一侧电机速度改为0,机器人将会怎样运动?(顺时针、逆时针旋转)
答:左侧电机速度为零,则逆时针旋转;反之,则顺时针旋转。
实验题一:让机器人顺时针、逆时针旋转
(1)用vjc语言或者流程图让能力风暴顺时针走直径约1米的圆形路径;
程序:
void main()
{
    while(1)
    {
        motor( 1 , 80 );
        motor( 2 , 20 );
    }
    stop();
}
(2)用vjc语言或者流程图让能力风暴逆时针走约1米立方的正方形路径;
程序:
void main()
{
    while(1)
    {
        drive( 100 ,0);
        wait( 1.000000 );
        stop();
        motor( 1 , -20 );
        motor( 2 , 20 );
        wait( 0.500000 );
        stop();
    }
}
实验题二:首先机器人前进2秒,之后机器人逆时针旋转1.8秒,然后机器人前进1秒,最后停下来。小结:motor函数主要是实现旋转。
实验代码:
html矩形框代码怎么写        Void main()
        {
          Drive(60,0);
          Wait(2.000000);
          Stop();
          Drive(0,-60);
          Wait(1.800000);
          Stop();
          Drive(80,0);
          Wait(1.000000);
          Stop();
}
二、drive(x,y)函数
此函数是“直行”,x表示基准速度,y表示左右电机与基准速度的差。机器人左侧电机速度为x-y,右侧电机速度为x+y。
推断:drive函数既可以直行,也可以转弯。
试一试下面程序能够干什么?  答:可以画圆。
Void main()
{drive(60,-20);
wait(11.0);        ——参数11.0可以调整,调整的变化是什么?
stop(); }               
答:调整后所画圆弧弧度变小。
实验二  机器人“听令”出发
一、要求与目的
机器人的光敏传感器和红外传感器可以像人的眼睛一样,获取光线强弱的信息和周围障碍物体的信息。并且机器人还可以用声音传感器获取声音信息,在本次的项目中,将通过声音传感器为机器人发令。
二、内容
1、项目分析
能力风暴机器人的声音传感器实际上是一只可以接收声音大小的麦克风,通过该传感器,机器人可以“听到”发出的声音指令,并根据环境声音大小对机器人实现智能控制。
知识点提示:声音传感器(麦克风)函数MICROPHONE()用于检测声音传感器接收到的声音信息。函数对音量检测值的范围为0255的整数,函数值越大,声音越大。
环境声音信号的检测:通过下面的程序可以检测到周围环境的声音信息,同时也可以检测到发令的声音强度信息,并将发令声音信息记录下来,作为机器人“听令”出发的判断依据。
void main()
{    int micv;
while(1)
{    micv=microphone();
printf(“micv%d\n”,micv);
wait(0.3);
}
}
通过上面的程序获取环境声音的检测数据,并填入下面的空中以备项目实施时的应用:机器人所在场地的声音环境检测值是____15______,发令时的声音检测值是______70_______。
2、算法分析
通过反复判断环境声音信号的检测值来实现机器人的“听令”出发。
知识点提示:VJC系统的关系式:用能力风暴机器人的VJC系统编写程序时,循环控制和条件控制语句中都要用到条件判断,条件判断中的条件可以用VJC系统的关系表达式来表示。大于>,不等于!=,小于<,大于等于>=,等于= =,小于等于<=。
机器人“听令”出发程序的部分框图。
3、项目实施
机器人执行以下的项目程序时,会根据环境声音信号检测时的声音信号检测值(80),对发令声音信号进行判断来决定是否起跑。
Int mic1=0;
Void main()
{
while(mic1<80)
{
mic1=microphone();
printf(“mic1=%d\n”,mic1);
}
drive(80,0);
wait(2.0);
stop();
}
实验测试结果:188,机器人起跑
(1)能力拓展:机器人开始直线行走,机器人听到声音命令后,后退。
void  main()
{        int mic;
drive(20,0);
while(mic<70)
          {
              mic=microphone();
          printf("mic=%d\n",mic);
wait(0.5);
        }
drive(-20,0);
}
      实验测试数据:72, 机器人后退。
(2)高级应用:如何声控。击掌启动直行,击掌后退
void  main()
{  int b=1;int mic;
          while(1)
        {
mic=microphone();
          printf("mic=%d\n",mic);
            wait(0.5);
            if(mic>60) b=b*-1;
        if(b==1)  drive(20,0);
            if(b==-1)  drive(-20,0);
        }
}
    实验测试数据:72,机器人数据188
实验三 机器人唱歌
一、要求与目的
在机器人唱歌项目中,要“教会”机器人唱歌,然后掌握机器人发声的原理。
二、内容
(一)项目分析
机器人的主板上有一个喇叭,在VJC系统中用发声函数可以让喇叭发出声音。为了让机器人唱歌,可以如此设计。
编写机器人唱歌的程序算法分析:VJC系统的音频函数tone(float h,float t)用于产生一个音频为h赫兹,时间为t秒长的音频信号。函数中表示音频的变量h和表示时间的变量t都是实型变量。
VJC系统的音频函数beep()用于产生一段0.3秒500赫兹的音频信号。
(二)项目实施
1、编写机器人唱歌程序
给机器人编写简单发音程序的步骤:
A、从“控制模块库”拖出“永远循环”模块,置于“主程序”模块下,使机器人不停的重复唱同一首歌曲
B、从“执行器模块库”拖出“发音”模块,置于“永远循环”模块下的循环体中,实现唱歌功能
C、在“发音1”模块上右击鼠标,弹出“发音模块”对话框,在该对话框中可以修改发音频率或发音时间,以唱出优美的歌曲
2、能力拓展:“祝你生日快乐”乐曲的子程序。
知识点总结:
tone (261.6,0.25);  ——简谱dou的音
tone (293.6,0.25);  ——简谱rai的音
tone (329.6,0.25);  ——简谱mi的音
tone (349.2,0.25);  ——简谱fa的音
tone (391.6,0.25);  ——简谱sou的音
tone (440.0,0.25);  ——简谱la的音
tone (493.8,0.25);  ——简谱xi的音