|
|
就是我弄了一个履带底盘然后做了个遥控小车,现在各个功能基本都正常,用蓝牙HC06连安卓控制,app用的是 Bluetooth RC Controller,小车能正常走。一般的调速都没问题,但是把速度条拉到最大的话小车就会不动,然后再按键,比如应该是两个电机都正转,但是实际L298P接线柱之后的LED只会短暂闪一下,然后电机不会动。之后再把电池拔掉或者按Reset之后可以恢复正常。
app发送的信息也测试过,都是相互对应的。
这个问题是什么造成的呢?是程序写的有问题还是板子出问题了呢?
- int PWMA = 3;
- int PWMB = 11;
- int BREAKA = 9;
- int BREAKB = 8;
- int DIRA = 12;
- int DIRB = 13;
- int Vpwm = 0;
- int Vpwma = 0;
- int Vpwmb = 0;
- int dira = 0;
- int dirb = 0;
- void setup() {
- // put your setup code here, to run once:
- Serial.begin(9600);
- pinMode(PWMA,OUTPUT);
- pinMode(PWMB,OUTPUT);
- pinMode(DIRA,OUTPUT);
- pinMode(DIRB,OUTPUT);
- pinMode(BREAKA,OUTPUT);
- digitalWrite(BREAKA,LOW);
- pinMode(BREAKB,OUTPUT);
- digitalWrite(BREAKB,LOW);
- }
- void f(int n)
- {
- dira=0;
- dirb=0;
- if(n=='F')
- {
- Vpwma=Vpwm;
- Vpwmb=Vpwm;
- }
- else if(n=='G')
- {
- Vpwma=0;
- Vpwmb=Vpwm;
- }
- else if(n=='I')
- {
- Vpwma=Vpwm;
- Vpwmb=0;
- }
- }
- void b(int n)
- {
- dira=1;
- dirb=1;
- if(n=='B')
- {
- Vpwma=Vpwm;
- Vpwmb=Vpwm;
- }
- else if(n=='H')
- {
- Vpwma=0;
- Vpwmb=Vpwm;
- }
- else if(n=='J')
- {
- Vpwma=Vpwm;
- Vpwmb=0;
- }
- }
- void s(int n)
- {
- if(n=='S')
- {
- Vpwma=0;
- Vpwmb=0;
- dira=0;
- dirb=0;
- }
- else if(n=='L')
- {
- Vpwma=Vpwm;
- Vpwmb=Vpwm;
- dira=1;
- dirb=0;
- }
- else if(n=='R')
- {
- Vpwma=Vpwm;
- Vpwmb=Vpwm;
- dira=0;
- dirb=1;
- }
- }
- void sp(int n)
- {
- switch(n)
- {
- case'0':Vpwm=65;break;
- case'1':Vpwm=85;break;
- case'2':Vpwm=103;break;
- case'3':Vpwm=122;break;
- case'4':Vpwm=141;break;
- case'5':Vpwm=160;break;
- case'6':Vpwm=179;break;
- case'7':Vpwm=198;break;
- case'8':Vpwm=217;break;
- case'9':Vpwm=236;break;
- case'q':Vpwm=250;break;
- }
- }
- void choice(int n)
- {
- switch(n)
- {
- case'F':f(n);break;
- case'B':b(n);break;
- case'L':s(n);break;
- case'R':s(n);break;
- case'G':f(n);break;
- case'I':f(n);break;
- case'H':b(n);break;
- case'J':b(n);break;
- case'S':s(n);break;
- case'0':sp(n);break;
- case'1':sp(n);break;
- case'2':sp(n);break;
- case'3':sp(n);break;
- case'4':sp(n);break;
- case'5':sp(n);break;
- case'6':sp(n);break;
- case'7':sp(n);break;
- case'8':sp(n);break;
- case'9':sp(n);break;
- case'q':sp(n);break;
- }
- }
- void loop() {
- // put your main code here, to run repeatedly:
- if(Serial.available())
- {
- choice(Serial.read());
- }
- digitalWrite(DIRA,dira);
- digitalWrite(DIRB,dirb);
- analogWrite(PWMA,Vpwma);
- analogWrite(PWMB,Vpwmb);
- }
复制代码 |
|