Arduino Polska Forum

Pełna wersja: Zapamiętanie poprzedniego stanu przycisku Bluetooth
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam.
Tworzę projekt do obsługi czujników przez Bluetooth i mam problem z zatrzymaniem stanu poprzedniego naciśnięcia przycisku w aplikacji. Mianowicie chciałbym, żeby po wybraniu danej opcji poprzednia dalej działa a nowa wykonała sie równocześnie. Mój kod wygląda tak:
Kod:
void loop() { 
  lcd.setCursor(9, 1);
  lcd.setCursor(0, 1);
  //lcd_key = Keypad_buttons();
  predkosc();
  delay(100);
    while(Bluetooth.available()){
    zmiana = Bluetooth.read();
    }
    if(digitalRead(12) == 1){
    lcd.clear();
    lcd.print("Bluetooth ");

    if(zmiana == 1){
      bt_rangefinder();
    }
    else if (zmiana == 0){
      bt_rangefinder_cal();
    }
    else if (zmiana == 3){
       Bluetooth.println("WYŁĄCZONY");
    }
    else if (zmiana == 4){
    czujnik_bt();
    }
    }
    else{
      lcd_rangefinder();
    }
 
}
Robisz sobie dwie zmienne i przepisujesz do nich wartości. Jak jest wciśnięty inny przycisk to przepisujesz z aktualnego do poprzedniego i od razu do aktualnego aktualnie wciśnięty.
W Twoim kodzie nie widać żadnej próby rozwiązania tego problemu, a używając delay() nie ma sensu robić programu, który ma szanse prawidłowo działać. Najpierw naucz się wykorzystywać millis().
Jak chcesz sterować Arduino z BT/UART to wysyłaj całą linijkę tekstu, odbieraj całą linię tekstu (do znaku końca linii lub nowej linii NL/CR), dopiero potem analizuj jakie polecenie otrzymałeś.