Skocz do zawartości

Modułem bluetooth - zachowanie po odłączeniu telefonu


kiker212

Pomocna odpowiedź

Witam, mam problem z modułem bluetooth. Zrobiłem samochód z arduino modułu bluetooth mostka h i przetwornicy na 5 V. Wszystko działa lecz chciałbym ten projekt udoskonalić. Kiedy rozłączam bluetooth od telefonu samochód wariuje. Co muszę dopisać do programu aby temu zaprzestać? Z góry dziękuję 

#include <avr/io.h> 
#define MOTOR1_PWM 6  //D6
#define MOTOR1_PWM_COR 0
#define MOTOR1_IN1 14 //A0
#define MOTOR1_IN2 15 //A1
#define MOTOR2_PWM 5  //D5
#define MOTOR2_PWM_COR 0
#define MOTOR2_IN1 16 //A2
#define MOTOR2_IN2 17 //A3
#define diodaright 11 //D11
#define diodaleft 12 //D12

char lastCode = ' ';
int pwmSpeed = 0;

void setup() {
  Serial.begin(9600);
  
TCCR0A = _BV(WGM01) | _BV(WGM00);
TCCR0B = _BV(CS01) | _BV(CS00);

OCR0A = 100; 
OCR0B = 100;
  
  pinMode(MOTOR1_PWM, OUTPUT);
  digitalWrite(MOTOR1_PWM, HIGH);

  pinMode(MOTOR1_IN1, OUTPUT);
  pinMode(MOTOR1_IN2, OUTPUT);

  pinMode(MOTOR2_PWM, OUTPUT);
  digitalWrite(MOTOR2_PWM, HIGH);

  pinMode(MOTOR2_IN1, OUTPUT);
  pinMode(MOTOR2_IN2, OUTPUT);
  lightOff();
  stop();
}

void loop() {
  analogWrite(MOTOR1_PWM, pwmSpeed);
  analogWrite(MOTOR2_PWM, pwmSpeed);

  if (Serial.available() > 0) {
    char code = Serial.read();

    if (code == 'F') {
      front();
    } else if (code == 'L') {
      left();
    } else if (code == 'R') {
      right();
    } else if (code == 'B') {
      back();
    }
    else if (code == 'S') {
      stop();
    }
    else if (code == '0') {
      setSpeed(0);
    }
    else if (code == '1') {
      setSpeed(1);
    }
    else if (code == '2') {
      setSpeed(2);
    }
    else if (code == '3') {
      setSpeed(3);
    }
    else if (code == '4') {
      setSpeed(4);
    }
    else if (code == '5') {
      setSpeed(5);
    }
    else if (code == '6') {
      setSpeed(6);
    }
    else if (code == '7') {
      setSpeed(7);
    }
    else if (code == '8') {
      setSpeed(8);
    }
    else if (code == '9') {
      setSpeed(9);
    }
    else if (code == 'q') {
      setSpeed(10);
    }
    else if (code == 'W') {
      lightOn();
    }
    else if (code == 'w'){
      lightOff();
    }
    lastCode = code;

    Serial.print("LastCode: ");
    Serial.println(lastCode);
  }

  if(lastCode == ' ') {
    stop();
  }
}

void right() {
  Serial.println("left");
        
  digitalWrite(MOTOR1_IN1, LOW);
  digitalWrite(MOTOR1_IN2, HIGH);

  digitalWrite(MOTOR2_IN1, HIGH);
  digitalWrite(MOTOR2_IN2, LOW);
}

void left() {
  Serial.println("righ");
        
  digitalWrite(MOTOR2_IN1, LOW);
  digitalWrite(MOTOR2_IN2, HIGH);

  digitalWrite(MOTOR1_IN1, HIGH);
  digitalWrite(MOTOR1_IN2, LOW);
}

void back() {
  Serial.println("back");
  
  digitalWrite(MOTOR1_IN1, HIGH);
  digitalWrite(MOTOR1_IN2, LOW);

  digitalWrite(MOTOR2_IN1, HIGH);
  digitalWrite(MOTOR2_IN2, LOW);
}

void front() {
  Serial.println("front");
  
  digitalWrite(MOTOR2_IN1, LOW);
  digitalWrite(MOTOR2_IN2, HIGH);

  digitalWrite(MOTOR1_IN1, LOW);
  digitalWrite(MOTOR1_IN2, HIGH);
}

void stop() {
  Serial.println("stop");
  
  digitalWrite(MOTOR2_IN1, LOW);
  digitalWrite(MOTOR2_IN2, LOW);

  digitalWrite(MOTOR1_IN1, LOW);
  digitalWrite(MOTOR1_IN2, LOW);
}

void setSpeed(int speed) {
  pwmSpeed =      100 + speed * 15 ;
}


void lightOff() {
 light1(LOW);
 light2(LOW);
}

void lightOn() {
 light1(HIGH);
 light2(HIGH);
}

void light1(int status){
 pinMode(diodaleft, OUTPUT);
 digitalWrite(diodaleft, status);

}

 void light2(int status){

  pinMode(diodaright, OUTPUT);
  digitalWrite(diodaright, status);
  
 }

 

Link do komentarza
Share on other sites

Opisz konkretnie co sie dzieje i czy to "swirowanie" jest powtarzalne (w sensie zawsze tak samo?)

Ps...no i co bylo z tym mostkiem nie tak? Bo rozumiem ze doszedles do ladu...😉 

Jezeli uzywasz 

analogWrite()

to juz nie musisz sie bawic tym timerem zeby zrobic pwm (timer 0 jest zarezerwowany dla delay()/millis()/micros(), wiec z regoly sie go nie rusza)

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

 @farmaceuta Kręci się na boki powtarzalnie lecz chyba nie powtarzalnie.  A jeśli chodzi o te drugie pytanie to kupiłem silniki z przekładniami i kupiłem drukarkę 3D i zrobiłem obudowę  i użyłem innego mostka i normalnie jeździ 🙂. Mogę wysłać jak wygląda teraz auto.

 

Edytowano przez kiker212
Link do komentarza
Share on other sites

4 minuty temu, kiker212 napisał:

 @farmaceuta  to się wkurzyłem i kupiłem silniki z przekładniami i kupiłem drukarkę 3D i zrobiłem obudowę i użyłem innego mostka i normalnie jeździ 🙂.

Hahaha😁 no tak to czasem bywa😉 

 

5 minut temu, kiker212 napisał:

 @farmaceuta Kręci się na boki powtarzalnie.

Hmm..dobrze by bylo rozlaczyc pare majac podlaczony kabel usb i sprawdzic w IDE co tam sie na Serialu pojawia podczas rozlaczenia (a cos napewno sie pojawia)

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Przed chwilą, kiker212 napisał:

źle napisałem wcześniej, kręci się nie powtarzalnie 

To w sumie nie istotne...podczas rozlaczenia masz jakies "smieci" na blue...zrob jak wyzej napisalem i zobacz co sie wyswietla w monitorze portu..

  • Lubię! 1
Link do komentarza
Share on other sites

No to chyba to jest zwykly komunikat modulu ze zerwano lacze/ze jest gotowy do polaczenia "pairable" ...no to albo zastosujesz male litery (to rozwiaze twoj problem) lub cos pokombinowac ze jesli odczytasz "P" to kolejnych 7 znakow odrzucasz (czyli cala ta wiadomosc)

Edytowano przez farmaceuta
  • Lubię! 1
Link do komentarza
Share on other sites

2 minuty temu, kiker212 napisał:

 @farmaceuta 

 

i tam zamiast W to w?

Dokladnie...chociaz Ciebie akurat interesuja litery L,R,B bo sa w komunikacie i Ty ich uzywasz...lub mozesz sprubowac cos takiego... 

if (Serial.available() > 0) {
    char code = Serial.read();
 if (code == 'P') { 
   while (Serial.available()) { 
   char x = Serial.read();
     delay(5); //nie wiem czy konieczny
   }
     }
    
    

 

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)
12 minut temu, farmaceuta napisał:

Dokladnie...chociaz Ciebie akurat interesuja litery L,R,B bo sa w komunikacie i Ty ich uzywasz...lub mozesz sprubowac cos takiego... 



if (Serial.available() > 0) {
    char code = Serial.read();
 if (code == 'P') { 
   while (Serial.available()) { 
   char x = Serial.read();
     delay(5); //nie wiem czy konieczny
   }
     }
    
    

 

 @farmaceutaTu nie powinna być jeszcze jedna klamra ?

Edytowano przez kiker212
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.