Skocz do zawartości

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


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 to post
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 to post
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 to post
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 to post
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 to post
Share on other sites
(edytowany)

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 to post
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 to post
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 to post
Share on other sites

Tak...tylko ze masz to wkleic do swojego kodu dokladnie jak jest teraz, czyli trzeci nawias masz na samym dole swojego kodu

  • Lubię! 1
Link to post
Share on other sites
  • Gieneq zmienił tytuł na: Modułem bluetooth - zachowanie po odłączeniu telefonu

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.