极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18879|回复: 13

手势控制的小车

[复制链接]
发表于 2015-12-8 16:15:32 | 显示全部楼层 |阅读模式
本帖最后由 情仇 于 2015-12-21 17:14 编辑

Arduino+ Bluetooth + MPU6050 + L1298N的手势控制的小车。现在就差Bluetooth还没有接上了
Bluetooth应该怎么写呀?一个主一个从。



#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
MPU6050 accelgyro;
/**
* 定义小车LN298N接线
*/
#define ENA_A 4       //后边的电机使能,可以通过PWM调速
#define IN1_A 5
#define IN2_A 6
#define ENB_B 9
#define IN3_B 10
#define IN4_B 11

/**
* 定义小车操作函数
*/
void carBack(int carspeed);     //前进,带速度参数
void carGo(int carspeed);       //后退,带速度参数
void carStop();                 //停止
void carLeft(int carspeed2);    //左转弯,带参数
void carRight(int carspend2);   //右转弯,带参数
/**
* 变量定义
*/
int carspeed2 = 3;
int carspeed = 30;
int temp, maxs;
int x, y, z;
int16_t ax, ay, az;
int16_t gx, gy, gz;
/**
* 初始设置函数
*/
void setup() {
  /**
  * 电机A控制引脚输出模式
  */
  pinMode(ENA_A, OUTPUT);
  pinMode(IN1_A, OUTPUT);
  pinMode(IN2_A, OUTPUT);
  pinMode(ENB_B, OUTPUT);
  pinMode(IN3_B, OUTPUT);
  pinMode(IN4_B, OUTPUT);
  Wire.begin();
  Serial.begin(38400);
  Serial.println("Initializing I2C devices...");
  accelgyro.initialize();
  Serial.println("Testing device connections...");
  Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
}

void loop() {
  accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  x = abs(ax);
  y = abs(ay);
  z = abs(az);
  temp = max(x, y);
  maxs = max(temp, z);//取出x,y,z轴,最大的是哪个就处于哪个状态
  if (maxs == y) {//y轴控制前进和后退ay最大16500 pwm范围0-255 16500/255=64.7
    Serial.print("the max is y:"); Serial.println(ay / 65);
    delay(500);
    if (ay > 0) {//ay有正负,ay正的前进,负的后退,PWM调速值为abs(ay/65r)
      carGo(abs(ay / 65));
    } else {
      carBack(abs(ay / 65));
    }
  }
  else if (maxs == x){//控制小车转向
     Serial.print("the max is x:"); Serial.println(ax / 65);
     delay(500);
    if(ax>0){
      //ax有正负,ax正的前进,负的后退,PWM调速值为abs(ax/65r)
      carLeft(abs(ax/65));
      } else{
        carRight(abs(ax/65));
      }
    }
  else if (maxs == z) {//z轴控制小车停止
    Serial.print("the max is z:"); Serial.println(az / 65);
    delay(500);
    carStop();
  } else {
    Serial.print("the max is x:"); Serial.println(ax / 65);
  }
}
/**
* cargo(carspeed),carback(carspeed)
* 小车前进,后退,ENA高电平,
* IN1高电平,IN2低电平,电机正转
* IN1低电平,IN2高电平,电机反转
* PS:根据电机接线调整正反,正转可能是前进也可能是后退
*/
void carGo(int carspeed) {
  //analogWrite(ENA_A, carspeed);
  digitalWrite(ENA_A, HIGH);
  digitalWrite(IN1_A, HIGH);
  digitalWrite(IN2_A, LOW);
}
void carBack(int carspeed) {
  //analogWrite(ENA_A, carspeed);
  digitalWrite(ENA_A, HIGH);
  digitalWrite(IN1_A, LOW);
  digitalWrite(IN2_A, HIGH);
}
/**
* 小车停止
* ENA 高电平时,IN1与IN2相等,小车停止
* ENA 低电平时,IN1与IN2相等,IN1任意状态,小车停止
*/
void carStop() {
  digitalWrite(ENA_A, HIGH);
  digitalWrite(IN1_A, LOW);
  digitalWrite(IN2_A, LOW);
}

/**
* carLEft(carspeed2),carRight(carspeed2)
* IN3高电平,IN4低电平,电机正转
* IN3低电平,IN4高电平,电机反转
* PS:根据电机接线调整正反,正转可能是左转弯也可能是右转弯
*/
void carLeft(int carspeed2){
  digitalWrite(ENB_B,HIGH);
  digitalWrite(IN3_B,HIGH);
  digitalWrite(IN4_B,LOW);
  }

void carRight(int carspeed2){
  digitalWrite(ENB_B,HIGH);
  digitalWrite(IN3_B,LOW);
  digitalWrite(IN4_B,HIGH);
  }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-12-8 16:54:42 | 显示全部楼层
不行吧
回复 支持 反对

使用道具 举报

发表于 2015-12-8 23:48:59 | 显示全部楼层
哈哈,楼主还没了解78M05是什么东东
回复 支持 反对

使用道具 举报

发表于 2015-12-9 00:07:17 | 显示全部楼层
楼主搞错主角了,主角是背著散热片那颗
回复 支持 反对

使用道具 举报

发表于 2015-12-9 12:10:27 | 显示全部楼层
               
回复 支持 反对

使用道具 举报

发表于 2015-12-10 08:33:01 | 显示全部楼层
看到这个标题我就震惊了
回复 支持 反对

使用道具 举报

发表于 2015-12-10 09:27:59 | 显示全部楼层
ranqingfa 发表于 2015-12-8 16:54
不行吧

这个标题,我震惊了!
回复 支持 反对

使用道具 举报

发表于 2015-12-10 09:35:51 | 显示全部楼层
164335413 发表于 2015-12-10 09:27
这个标题,我震惊了!

看来你也不太懂
回复 支持 反对

使用道具 举报

发表于 2015-12-10 10:03:27 | 显示全部楼层
ranqingfa 发表于 2015-12-10 09:35
看来你也不太懂

我都不知道楼主是怎么个控制法,发哥现在在南方可好?
回复 支持 反对

使用道具 举报

发表于 2015-12-12 09:14:24 | 显示全部楼层
164335413 发表于 2015-12-10 10:03
我都不知道楼主是怎么个控制法,发哥现在在南方可好?

  看错了,以为你说我说的“不对吧”很震惊……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-16 20:14:21 | 显示全部楼层
呵呵,谢谢咯。现在做得差不多了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-22 08:13:44 来自手机 | 显示全部楼层
ranqingfa 发表于 2015-12-8 16:54
不行吧

现在应该怎么玩?
回复 支持 反对

使用道具 举报

发表于 2015-12-25 11:36:44 | 显示全部楼层
情仇 发表于 2015-12-22 08:13
现在应该怎么玩?

你不是电子专业的吧 或者没有搞过硬件电路吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-25 12:31:40 | 显示全部楼层
怎么说呢?我电子信息的
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 09:42 , Processed in 0.038200 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表