开启左侧

【培训作品】消防车(警鸣+闪烁)_张瑞

[复制链接]
发表于 2017-10-12 10:48:30 | 显示全部楼层 |阅读模式
本帖最后由 Mic张瑞 于 2017-10-12 11:09 编辑

       消防车(警鸣+闪烁)作品简介:
    主要器材:Arduino UNO,i创学院扩展板,电机驱动模块,红外遥控模块,LED灯模块,蜂鸣器模块。
    功能:       红外遥控消防车移动(前进后退左转右转),发出警笛鸣叫声,警灯交替闪烁。
作品照片:



程序源代码:
#include <IRremote.h>  //引用红外库

const int leftPin1 = 7; //AIN1连接引脚8
const int leftPin2 = 8; //AIN2连接引脚7
const int rightPin3 = 3; //BIN1连接引脚4
const int rightPin4 = 4; //BIN2连接引脚3
const int leftSpeed = 6; //PWA连接引脚6
const int rightSpeed = 5; //PWB连接引脚5
const int irPin = A0;  //红外遥控传感器信号引脚连接主板引脚A0
const int maxspeedPwm = 255;  //PWM 最大值
const int minspeedPwm = 80;  //PWM 最小值
const int speedStep = 10;  //加速或减速时PWM的增减幅度
int intSpeedPwm = 150; //设置小车运行的初始速度
int potVal;

IRrecv irRecv(irPin);  //定义红外库对象irRecv
decode_results irResults;  //定义红外数据对象irResults

void setup() {
  // put your setup code here, to run once:
  pinMode(leftPin1, OUTPUT),pinMode(leftPin2, OUTPUT),pinMode(rightPin3, OUTPUT),pinMode(rightPin4, OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(13,OUTPUT);
  irRecv.enableIRIn(),Serial.begin(9600);
}
void loop() {
  alarm();
  if (irRecv.decode(&irResults)) {  //❶
    Serial.println(irResults.value, HEX);
    switch (irResults.value) {
      case 0xFF10EF :    //1左转
        turnLeft();
        break;
      case 0xFF5AA5 :   //右转
        turnRight();
        break;
      case 0xFF18E7:    //前进
        forward();
        break;
      case 0xFF4AB5:    //后退
        backward();
        break;
      case 0xFF38C7:     //停止
        pause();
        break;
      case 0xFFA25D:     //1 减速
        if (intSpeedPwm - speedStep < minspeedPwm) {
          intSpeedPwm = minspeedPwm;
        }
        else {
          intSpeedPwm -= speedStep;
        }
        break;
      case 0xFF629D:    //2 加速
        if (intSpeedPwm + speedStep > maxspeedPwm) {
          intSpeedPwm = maxspeedPwm;
        }
        else {
          intSpeedPwm += speedStep;
        }
        break;
      case 0xFFE21D:    //3 全速
        intSpeedPwm = maxspeedPwm;
        break;
    }
    analogWrite(leftSpeed, intSpeedPwm); //设定左侧电机的速度
    analogWrite(rightSpeed, intSpeedPwm); //设定右侧电机的速度
    irRecv.resume(); // 接收下一个值
  }

}
//================================================================================
//警报器
//================================================================================
void alarm(){
    for(int i=0;i<=170;i++){
   digitalWrite(11,HIGH);
   delay(1);
   digitalWrite(11,LOW);
   delay(1);
   }
   digitalWrite(12,HIGH);
   digitalWrite(13,LOW);
   delay(10);
  for(int i=0;i<=85;i++){
   digitalWrite(11,HIGH);

   delay(2);
   digitalWrite(11,LOW);
   delay(2);
   }
   digitalWrite(12,LOW);
   digitalWrite(13,HIGH);
   delay(10);
}
//===============
// 前进
//===============
void forward() {
  digitalWrite(leftPin1, 1);
  digitalWrite(leftPin2, 0);
  digitalWrite(rightPin3, 1);
  digitalWrite(rightPin4, 0);
}
//===============
// 后退
//===============
void backward() {
  digitalWrite(leftPin1, 0);
  digitalWrite(leftPin2, 1);
  digitalWrite(rightPin3, 0);
  digitalWrite(rightPin4, 1);
}
//===============
// 左转
//===============
void turnLeft() {
  digitalWrite(leftPin1, 0);
  digitalWrite(leftPin2, 0);
  digitalWrite(rightPin3, 1);
  digitalWrite(rightPin4, 0);
}
//===============
// 右转
//===============
void turnRight() {
  digitalWrite(leftPin1, 1);
  digitalWrite(leftPin2, 0);
  digitalWrite(rightPin3, 0);
  digitalWrite(rightPin4, 0);
}
//===============
// 原地左转
//===============
void rotateLeft() {
  digitalWrite(leftPin1, 0);
  digitalWrite(leftPin2, 1);
  digitalWrite(rightPin3, 1);
  digitalWrite(rightPin4, 0);
}
//===============
// 原地右转
//===============
void rotateRight() {
  digitalWrite(leftPin1, 1);
  digitalWrite(leftPin2, 0);
  digitalWrite(rightPin3, 0);
  digitalWrite(rightPin4, 1);
}
//===============
// 停止
//===============
void pause() {
  digitalWrite(leftPin1, 0);
  digitalWrite(leftPin2, 0);
  digitalWrite(rightPin3, 0);
  digitalWrite(rightPin4, 0);
}

xiaofangche.ino (3.83 KB, 下载次数: 0)
861433670593275984.jpg
339547263057154116.jpg
866678510938987358.jpg
回复

使用道具 举报

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

本版积分规则

精彩课程推荐

关于我们

帮助中心

商务合作

点击这里给我发消息

关注微信公众号

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