开启左侧

【培训作品】猜拳机_郝凡静

[复制链接]
发表于 2017-10-12 11:15:33 | 显示全部楼层 |阅读模式
作品简介:
       该作品主要通过Arduino UNO、i创学院扩展板、超声波传感器,三个舵机和其他辅助材料完成,当超声波感应到人出拳后,随机驱动一个代表剪刀、包袱或者锤子的舵机对决。
作品照片:
IMG_20171012_103150_HDR.jpg IMG_20171012_103207_HDR.jpg
程序源代码
#include <Servo.h>
const int trig = 11;//设定超声波针脚
const int echo = 12;
int choice;
int uvalue;
Servo servo1;//规划舵机
Servo servo2;
Servo servo3;
int delayTime = 1000;
void setup() {
  Serial.begin(9600);
  servo1.attach(3);
  servo1.write(0);
  servo2.attach(4);
  servo2.write(0);
  servo3.attach(5);
  servo3.write(0);

}

void loop() {
  uvalue = ultrasonic();//读取超声波返回的距离值
  Serial.println(uvalue);//打开串口监视
  if  (uvalue <= 30) {//随机驱动舵机
    choice = random(3, 5);
    switch (choice) {
      case 3: {
          servo1.write(90);
          delay(delayTime);
          servo1.write(0);
          break;
        }
      case 4: {
          servo2.write(90);
          delay(delayTime);
          servo2.write(0);
          break;
        }
      case 5: {
          servo3.write(90);
          delay(delayTime);
          servo3.write(0);
          break;
        }

    }
  }
}

int ultrasonic()//超声波测量
{
  int cm;
  //给Trig发送一个低高低的短时间脉冲,触发测距
  digitalWrite(trig, LOW); //给Trig发送一个低电平
  delayMicroseconds(2);    //等待 2微妙
  digitalWrite(trig, HIGH); //给Trig发送一个高电平
  delayMicroseconds(10);    //等待 10微妙
  digitalWrite(trig, LOW); //给Trig发送一个低电平
  float distance = float(pulseIn(echo, HIGH)); //存储回波等待时间,
  cm = distance / 58; //把回波时间换算成cm
  return (cm);
  delay(100);
}
hfjhomework.ino (1.45 KB, 下载次数: 0)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩课程推荐

关于我们

帮助中心

商务合作

点击这里给我发消息

关注微信公众号

Copyright © 2016-2017 i创学院 - 上海享渔教育科技有限公司 Powered by Discuz!     ( 沪ICP备16033954号-1 )