標(biāo)題:
arduino紅外小車在運(yùn)行時(shí)只有一側(cè)的兩個(gè)輪子運(yùn)行,且都是正轉(zhuǎn),怎么調(diào)都不管用
[打印本頁]
作者:
一龍大師
時(shí)間:
2018-1-19 20:45
標(biāo)題:
arduino紅外小車在運(yùn)行時(shí)只有一側(cè)的兩個(gè)輪子運(yùn)行,且都是正轉(zhuǎn),怎么調(diào)都不管用
我在運(yùn)行時(shí)只有一側(cè)的兩個(gè)輪子運(yùn)行,且都是正轉(zhuǎn),怎么調(diào)都不管用,求大神請(qǐng)教
#include <IRremote.h>
IRrecv irrecv(11);//定義的引腳
decode_results result;
#define dir1pinA 4
#define dir2pinA 5
#define speedpinA 3
#define led 8
#define dir1pinB 6
#define dir2pinB 7
#define speedpinB 9
void setup() {
Serial.begin(9600);
Serial.println("ABCD");
irrecv.enableIRIn();
delay(100);
pinMode(dir1pinA,OUTPUT);
pinMode(dir2pinA,OUTPUT);
pinMode(speedpinA,OUTPUT);
pinMode(dir1pinB,OUTPUT);
pinMode(dir2pinB,OUTPUT);
pinMode(speedpinB,OUTPUT);
pinMode(led,OUTPUT);
}
void loop() {
if(irrecv.decode(&result))
{
Serial.println(result.value);
switch(result.value)
{
case 16738455: //按鍵0
forward();
break;
case 16724175://按鍵1
allstop();
break;
case 16718055://按鍵2
turnright();
break;
case 16743045://按鍵3
turnleft();
break;
case 16716015: //按鍵4
daotui();
break;
default:
delay(500);
}
irrecv.resume();//接受下一個(gè)值
}
}
void allstop()
{ digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
digitalWrite(dir1pinA,LOW);
digitalWrite(dir2pinA,LOW);
digitalWrite(dir1pinB,LOW);
digitalWrite(dir2pinB,LOW);
analogWrite(speedpinA,0);
analogWrite(speedpinB,0);
delay(100);
}
//自定義函數(shù)
void forward()
{
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
digitalWrite(dir1pinA,HIGH);
digitalWrite(dir2pinA,LOW);
digitalWrite(dir1pinB,HIGH);
digitalWrite(dir2pinB,LOW);
analogWrite(speedpinA,80);
analogWrite(speedpinB,80);
delay(100);
}
void turnleft()
{
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
digitalWrite(dir1pinA,LOW);
digitalWrite(dir2pinA,LOW);
digitalWrite(dir1pinB,HIGH);
digitalWrite(dir1pinB,LOW);
analogWrite(speedpinA,0);
analogWrite(speedpinB,100);
delay(100);
}
void turnright()
{
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
digitalWrite(dir1pinA,HIGH);
digitalWrite(dir2pinA,LOW);
digitalWrite(dir1pinB,LOW);
digitalWrite(dir1pinB,LOW);
analogWrite(speedpinA,100);
analogWrite(speedpinB,0);
delay(100);
}
void daotui()
{
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
digitalWrite(dir1pinA,LOW);
digitalWrite(dir2pinA,HIGH);
digitalWrite(dir1pinB,LOW);
digitalWrite(dir1pinB,HIGH);
analogWrite(speedpinA,100);
analogWrite(speedpinB,100);
delay(100);
}
復(fù)制代碼
作者:
shuyu
時(shí)間:
2018-1-20 17:22
自己做的,用了lm358,L298n,不知道你是不是自己焊接的,358連接的就是紅外傳感器,程序如下,希望對(duì)你有用。
#include <STC89C5xRC.H>
#define uint unsigned int
#define uchar unsigned char
/************定義358信號(hào)口引腳**************/
sbit left358=P1^0; //(注意P要大寫)
sbit right358=P1^1;
/***********定義車子前進(jìn)后退引腳***********/
sbit leftgo=P0^0; //左邊輪子前進(jìn)
sbit leftback=P0^1; //左邊輪子后退
sbit rightgo=P0^2; //右邊輪子前進(jìn)
sbit rightback=P0^3; //右邊輪子后退
void delay_ms(uint xms)
{
uchar x=0,y=0;
for(x=xms;x>0;x--)
{
for(y=110;y>0;y--);
}
}
void forward() //車子前進(jìn)
{
leftback=1; //1、0代表高低電平
leftgo=0;
rightback=1;
rightgo=0;
}
void turnright() //車子右轉(zhuǎn)
{
leftback=1;
leftgo=0;
rightback=0;
rightgo=1;
}
void turnleft() //車子左轉(zhuǎn)
{
leftback=0;
leftgo=1;
rightback=1;
rightgo=0;
}
void stop() //停車
{
leftback=1;
leftgo=1;
rightback=1;
rightgo=1;
}
void main() //主函數(shù) (單片機(jī)所要執(zhí)行的部分)
{
if(left358==1&&right358==1) //當(dāng)左358為高電平且右358為高電平時(shí),小車前進(jìn)
{
forward();
delay_ms(50);
}
if(left358==0&&right358==0) //當(dāng)左358為低電平且右358為低電平時(shí),小車前進(jìn)
{
forward();
delay_ms(50);
}
if(left358==1&&right358==0) //當(dāng)左358為高電平且右358為低電平時(shí),小車右轉(zhuǎn)
{
turnright();
delay_ms(50);
}
if(left358==0&&right358==1) //當(dāng)左358為低電平且右358為高電平時(shí),小車左轉(zhuǎn)
{
turnleft();
delay_ms(50);
}
}
作者:
煙花笑
時(shí)間:
2018-1-22 08:41
注意電機(jī)驅(qū)動(dòng)板接線
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1