开启左侧

【培训作品】招财猫-王维

[复制链接]
发表于 2017-10-12 17:00:33 | 显示全部楼层 |阅读模式
本帖最后由 白拜 于 2017-10-12 17:11 编辑

招财猫

作品简介:

该作品主要通过Arduino UNO、i创学院扩展板、语音模块、超声波模块、超声波转接器、舵机控制整个招财猫系统。

作品功能:

当自远而近或者自近而远逐渐接近招财猫时,招财猫会来回摆动手臂,并且在距离达到10cm时,招财猫发出“您好”并减缓摆动速度;在距离达到20cm时,招财猫发出“请慢走”并且停止摆动。

作品照片:

zhaocaimao2.jpg zhaocaimao3.jpg zhaocaimao1.jpg

代码:

#include <Servo.h>
#include <Voice.h>

Voice voice(11, 12, 13);
Servo servoLeft;
Servo servoRight;


const int TrigPin = 3;
const int EchoPin = 2;
const int distMin = 10;
const int distMax = 20;
const int servoLeftPin = A1;
int distance;
int preDist = 0;
int nearOrLeft = 0;

void setup() {
  Serial.begin(9600);
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
  servoLeft.attach(servoLeftPin);
  servoLeft.write(90);
  delay(100);
}
void loop() {
  getDistance();
  Serial.println(distance);
  if ((distance <= distMax) && (distance >= distMin)) {
    if (preDist < distance) {
      nearOrLeft = 1;
    }
    else {
      nearOrLeft = 0;
    }
    if ((distance == distMin) && (nearOrLeft == 0)) {
      voice.VoiceWord(21);
      servoLeft.write(40);
      delay(200);
      servoLeft.write(140);
      delay(300);
    }
    else if ((distance == distMax) && (nearOrLeft == 1)) {
      voice.VoiceWord(50);
      voice.VoiceWord(25);
      servoLeft.write(40);
      delay(200);
      servoLeft.write(140);
      delay(300);
    }
    else { //
      servoLeft.write(140);
      delay(300);
      servoLeft.write(40);
      delay(200);
    }
    preDist = distance;
  }
}
void getDistance() {
  digitalWrite(TrigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);
  distance = pulseIn(EchoPin, HIGH) / 58.0;
}

zhaocaimao.ino (1.37 KB, 下载次数: 1)
回复

使用道具 举报

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

本版积分规则

精彩课程推荐

关于我们

帮助中心

商务合作

点击这里给我发消息

关注微信公众号

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