极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 血阳

从菜鸟到完美掌控arduino蓝牙小车

  [复制链接]
发表于 2015-6-19 10:18:05 | 显示全部楼层
帮我改进改进阿 ,吐槽一下验证马真难看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-19 11:38:55 | 显示全部楼层
libinbin112233 发表于 2015-6-19 10:18
帮我改进改进阿 ,吐槽一下验证马真难看

{:3_57:}{:3_57:}
天啦噜,这么多!好腻害{:3_41:}。。。。。
我现在看不啦,考期到了,复习复习,考完试再一起研究探讨吧,我也不一定会啊,就相互探讨吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-19 11:41:37 | 显示全部楼层
libinbin112233 发表于 2015-6-19 10:18
帮我改进改进阿 ,吐槽一下验证马真难看

还有啊,你小车的图能发下不?这样方便理解你的程序。
回复 支持 反对

使用道具 举报

发表于 2015-6-26 20:02:42 | 显示全部楼层
#define IN1 9
#define IN2 6//定义IN1接arduino4号引脚,IN2接5号引脚
#define IN3 11
#define IN4 10//定义IN3接arduino6号引脚,IN4接7号引脚
#define EchoPin A1
#define TrigPin A2
float distance;
void setup()
{
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(IN3,OUTPUT);
  pinMode(IN4,OUTPUT);
  pinMode(EchoPin,INPUT);
  pinMode(TrigPin,OUTPUT);
  Serial.begin(9600);
}
void loop()
{
  RCW();
  distance = pulseIn(EchoPin,HIGH)/58.00;
if(distance>30)
  {
    forward();
  }
  else
  {
  do
  {
    turnLeftOrigin();
    delay(10);
  }
  while(distance>30);
  }
}   

  void RCW()
  {
  digitalWrite(TrigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin,LOW);
  }
  void forward()//前进
{
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);//左轮前进
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);//右轮前进
}
void back()//后退
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);//左轮后退
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);//右轮后退
}
void turnLeft()//前左转
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);//左轮停止
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);//右轮前进
}
void turnRight()//前右转
{
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);//左轮前进
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);//右轮停止
}
void turnBackLeft()//后左转
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);//左轮后退
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);//右轮停止
}
void turnBackRight()//后右转
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);//左轮停止
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);//右轮后退
}
  void turnLeftOrigin()//原地左转
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);//左轮后退
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);//右轮前进
}
void turnRightOrigin()//原地右转
{
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);//左轮前进
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);//右轮后退
}
void _stop()
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);//左轮停止
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);//右轮停止
}
哈哈 今天用UNTIL循环改进了一下
回复 支持 反对

使用道具 举报

发表于 2015-7-3 15:02:01 | 显示全部楼层
very good ..
回复 支持 反对

使用道具 举报

发表于 2015-7-3 15:02:32 | 显示全部楼层
就是视屏不能看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-4 02:23:43 | 显示全部楼层
tomylver 发表于 2015-7-3 15:02
就是视屏不能看

可以看到啊,你换个浏览器试试。
还有其实视频也没啥,就是操控小车跑了一小段距离而已。
回复 支持 反对

使用道具 举报

发表于 2015-7-4 22:02:41 | 显示全部楼层
。。。好把,希望多多分享。感谢回复
回复 支持 反对

使用道具 举报

发表于 2015-7-8 18:49:41 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2015-7-21 17:13:31 | 显示全部楼层
我的小车转的太快 我想控制他的转速  也就是在手机上设置个加速 和减速项   具体就是我通过蓝牙发射个数字过去  他接收到以后就把转速提高一点  减速原理也是这样  可是我不知道如何用PWM写这个程序   求帮助
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-21 17:23:11 | 显示全部楼层
艾弗森闯天涯 发表于 2015-7-21 17:13
我的小车转的太快 我想控制他的转速  也就是在手机上设置个加速 和减速项   具体就是我通过蓝牙发射个数字过 ...

不是有一个L298N的驱动模块吗?
你把那个ENA,和ENB的短接冒去掉。然后两个同时连线引到arduino有PWM的一个引脚(就是引脚号前面有~或者其他符号的引脚)
然后,写一个函数,用annalogWrite来写一个控制速度的函数,给这个引脚,就行了。
然后用在loop里,判断,当接受信号为A时,赋值某个速度,当接受信号为B时,赋值某个速度。
大概就这样子··
回复 支持 反对

使用道具 举报

发表于 2015-7-22 14:10:20 | 显示全部楼层
血阳 发表于 2015-7-21 17:23
不是有一个L298N的驱动模块吗?
你把那个ENA,和ENB的短接冒去掉。然后两个同时连线引到arduino有PWM的一 ...

#define IN1 11
#define IN2 12 //定义In1接arduino的4引脚,In2接5引脚
#define EN1 9//用PWM控制电机速度接13端口
rvoid forward();
void back();
void _stop();//这里是把我们用到的函数都声明一遍

void setup()
{
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(13,OUTPUT);//
  Serial.begin(9600);
}
int i;
void loop()
{
  if(Serial.available())
  {
    i=Serial.read();
    switch(i)
    {
      case'2':
    {forward();break;}
      case'8':
     {back();break;}
      case'5':
     {_stop();break;}
     case'1':
     {analogWrite(9,250);break;}
     case'3':
     {analogWrite(,100);break;}
    }
  }
}
void forward()
{
   digitalWrite(IN1,HIGH);      
   digitalWrite(IN2,LOW);         //左轮前进        
}

void back( )
{
   digitalWrite(IN1,LOW);      
   digitalWrite(IN2,HIGH);        //左轮后退

}
void _stop()

{
   digitalWrite(IN1,LOW);      
   digitalWrite(IN2,LOW);         //左轮静止不动

}
你看这样行不?另外,我单纯的给电机analogWrite(9,--)随便赋不同的值,他的转速还是没有变???还有你给L298N供电用的是什么?我找不到合适的无线电源
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-22 17:19:01 | 显示全部楼层
艾弗森闯天涯 发表于 2015-7-22 14:10
#define IN1 11
#define IN2 12 //定义In1接arduino的4引脚,In2接5引脚
#define EN1 9//用PWM控制电机 ...

你的EN1 是9引脚,结果在setup里写成13啦。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-22 17:23:06 | 显示全部楼层
艾弗森闯天涯 发表于 2015-7-22 14:10
#define IN1 11
#define IN2 12 //定义In1接arduino的4引脚,In2接5引脚
#define EN1 9//用PWM控制电机 ...

给L298N供电,我是直接接在arduino板子的5v电压口那的。供电给arduino板子5~9V都行。
回复 支持 反对

使用道具 举报

发表于 2015-7-22 22:12:01 | 显示全部楼层
EN  天辣   好吧  谢谢啦!另外,Arduino 板子上有3.3V和5V端口,3.3V我给蓝牙板子供电了,5V我给L298N芯片供电了,但是L298N板子上还有12V的接口那是用来给电机驱动的,那个12V 我找不到合适的无线电源。之前把他连在Arduino板子上的5V端口结果板子不能正常工作了
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-7-4 02:08 , Processed in 0.097744 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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