Strange Bluetooth Problem
hi guys, thank time.
i'm building toy boat works 3 motors, 2 of them connected l298n bridge, , other 1 works transistor (it's located on of boat). however, problem when press direction on phone (it works bluetooth), motors start going backwards , after while right direction. here full code (skip first bit due it's music). i'd appreciate kind of suggestion. know ultrasonic sensor (hc-sr04), can't figure what. in code, "atras" function makes go backwards. thank you!
i'm building toy boat works 3 motors, 2 of them connected l298n bridge, , other 1 works transistor (it's located on of boat). however, problem when press direction on phone (it works bluetooth), motors start going backwards , after while right direction. here full code (skip first bit due it's music). i'd appreciate kind of suggestion. know ultrasonic sensor (hc-sr04), can't figure what. in code, "atras" function makes go backwards. thank you!
code: [select]
// altavoz
int speakerpin = 9;
//sensor ultrasonidos
const int trigpin = a2;
const int echopin = a4;
//iluminación (no tira led)
int ldr = a0;
int luz;
int ledldr = a5;
int ledder = 7;
int ledizq = 8;
softwareserial bt(2, 3);
// motor a
int ena = 6;
int in1 = 13;
int in2 = 12;
// motor b
int enb = 5;
int in3 = 11;
int in4 = 10;
// motor c
int btransistor = 4;
int vel = 190;
void gameofthrones() {
for(int i=0; i<4; i++) {
tone(speakerpin, note_g4);
delay(500);
notone(speakerpin);
tone(speakerpin, note_c4);
delay(500);
notone(speakerpin);
tone(speakerpin, note_ds4);
delay(250);
notone(speakerpin);
tone(speakerpin, note_f4);
delay(250);
notone(speakerpin);
}
/* for(int i=0; i<4; i++){
tone(speakerpin, note_g4);
delay(500);
notone(speakerpin);
tone(speakerpin, note_c4);
delay(500);
notone(speakerpin);
tone(speakerpin, note_e4);
delay(250);
notone(speakerpin);
tone(speakerpin, note_f4);
delay(250);
notone(speakerpin);
} */
}
void setup()
{
bt.begin(9600) ;
// declaramos todos los pines como salidas
pinmode (ena, output);
pinmode (enb, output);
pinmode (in1, output);
pinmode (in2, output);
pinmode (in3, output);
pinmode (in4, output);
pinmode (ledldr, output);
pinmode (ldr, input);
pinmode (ledder, output);
pinmode(speakerpin, output);
pinmode(ledizq, output);
pinmode(btransistor, output);
gameofthrones();
serial.begin(9600);
}
void loop()
{
luz = analogread(ldr);
if(luz<600){
digitalwrite(ledldr, high);
}
if(luz>600){
digitalwrite(ledldr, low);
}
long duration, dcm;
pinmode(trigpin, output);
digitalwrite(trigpin, low);
delaymicroseconds(2);
digitalwrite(trigpin, high);
delaymicroseconds(10);
digitalwrite(trigpin, low);
pinmode(echopin, input);
duration = pulsein(echopin, high);
dcm = microsecondstocentimeters(duration);
serial.print(dcm);
if(dcm<2){
atras();
}
if (bt.available()){
switch (bt.read())
{
case 'f':
adelante();
break;
case 'b':
atras();
break;
case 'r':
derecha();
break;
case 'l':
izquierda();
break;
case 's':
parar();
break;
}
}
delay(1);
}
void adelante ()
{
//direccion motor a
digitalwrite (in1, high);
digitalwrite (in2, low);
analogwrite (ena, vel); //velocidad motor a
digitalwrite(btransistor, high);
digitalwrite(ledder, low);
digitalwrite(ledizq, low);
//direccion motor b
digitalwrite (in3, high);
digitalwrite (in4, low);
analogwrite (enb, vel); //velocidad motor b
//direccion motor c
}
void atras ()
{
//direccion motor a
digitalwrite (in1, low);
digitalwrite (in2, high);
analogwrite (ena, vel); //velocidad motor a
digitalwrite(btransistor, low);
digitalwrite(ledder, low);
digitalwrite(ledizq, low);
//direccion motor b
digitalwrite (in3, low);
digitalwrite (in4, high);
analogwrite (enb, vel); //velocidad motor b
//direccion motor c
}
void derecha ()
{
//direccion motor a
digitalwrite (in1, low);
digitalwrite (in2, high);
analogwrite (ena, vel); //velocidad motor a
digitalwrite(btransistor, low);
digitalwrite(ledder, high);
digitalwrite(ledizq, low);
//direccion motor b
digitalwrite (in3, high);
digitalwrite (in4, low);
analogwrite (enb, vel); //velocidad motor a
}
void izquierda ()
{
//direccion motor a
digitalwrite (in1, high);
digitalwrite (in2, low);
analogwrite (ena, vel); //velocidad motor a
digitalwrite(btransistor, low);
digitalwrite(ledder, low);
digitalwrite(ledizq, high);
//direccion motor b
digitalwrite (in3, low);
digitalwrite (in4, high);
analogwrite (enb, vel); //velocidad motor a
}
void parar ()
{
//direccion motor a
digitalwrite (in1, low);
digitalwrite (in2, low);
analogwrite (ena, 0); //velocidad motor a
digitalwrite(btransistor, low);
digitalwrite(ledizq, low);
digitalwrite(ledder, low);
//direccion motor b
digitalwrite (in3, low);
digitalwrite (in4, low);
analogwrite (enb, 0); //velocidad motor a
}
long microsecondstocentimeters(long microseconds)
{
// speed of sound 340 m/s or 29 microseconds per centimeter.
// ping travels out , back, find distance of the
// object take half of distance travelled.
return microseconds / 29 / 2;
}
i suspect code call atras() function @ line 137 problem.
i reckon should serial data first thing in loop() , make decision based on serial data , variable dcm should happen.
as separate issue not style switch (bt.read()) because not allow view received value debugging. make 2 (or 4) separate lines in
you may @ serial input basics.
...r
i reckon should serial data first thing in loop() , make decision based on serial data , variable dcm should happen.
as separate issue not style switch (bt.read()) because not allow view received value debugging. make 2 (or 4) separate lines in
code: [select]
datareceived = bt,read()
// serial,print("bt value ");
// serial.println(datareceived);
switch(datareceived) you may @ serial input basics.
...r
Arduino Forum > Using Arduino > Programming Questions > Strange Bluetooth Problem
arduino
Comments
Post a Comment