Bar riadený Arduinom
Napsal: 03 kvě 2019, 12:44
Zdravím, pracujem na Bare ktorý je riadený cez Arduino pomocou Bluetooth komunikácie. V smartfóne mám Bluetooth Terminál v ktorom mám vytvorené tlačidlá. Mám 3 tlačidlá a každé posiela inú informáciu pri zatlačení, sú to tlačidlá s jednou stabilnou polohou (button). Tlačidlo 1. po zatlačení posiela '1', Tlačidlo 2. posiela '2', Tlačidlo 3. posiela '3'. Problém nastáva keď stlačím tlačidlo 2 alebo viac krát za sebou, akoby sa doradu do pamäte nahrali znaky čo odošlem a potom to robí to že mi pumpy napumpujú drink a po dokončení programu začnú znovu podľa toho čo som zatlačil predtým. Čiže ak zatlačím za sebou tlačidlá 1, 2, 3 tak sa za sebou 3x pustí program a pohár mi už tým pádom prepĺňa. Je nejaký spôsob na vymazanie bluetooth buffera/pamäte alebo dá sa to nejak jednoducho ošetriť ? Za odpovede vopred ďakujem. Prikladám aj program.
Kód: Vybrat vše
#include <SoftwareSerial.h> // knižnica pre sériovú komunikáciu
#include <Servo.h> // knižnica pre servo
SoftwareSerial BT(10, 11); // 10 - RX, 11 - TX
int BluetoothData; // premenná pre BluetoothData
const int motorPin1 = 2; // zadefinovanie pumpy1
const int motorPin2 = 3; // zadefinovanie pumpy2
const int motorPin3 = 4; // zadefinovanie pumpy3
const int piezo = 5; // zadefinovanie piezo reproduktora
const int servoPin = 6; // zadefinovanie pinu pre servo
//------------------ SETUP -----------------------------------------------------------------------
void setup() {
Serial.begin(9600);
BT.begin(9600);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(piezo, OUTPUT);
}
//-----------------LOOP---------------------------------------------------------------------------
void loop() {
if (BT.available()){
BluetoothData=BT.read();
//--------------------DRINK 1---------------------------------------------------------------------
if(BluetoothData=='1'){ // ak sú prijaté dáta od bluetooth '1', začne robiť drink číslo 1.
Serial.println("Robím drink číslo 1.");
delay(1000);
digitalWrite(motorPin1, HIGH);
delay(2000);
digitalWrite(motorPin1, LOW);
delay(1000);
digitalWrite(motorPin2, HIGH);
delay(2000);
digitalWrite(motorPin2, LOW);
delay(1000);
digitalWrite(motorPin3, HIGH);
delay(2000);
digitalWrite(motorPin3, LOW);
delay(1000);
Serial.println("Drink číslo 1. dokončený");
}
//--------------------DRINK 2---------------------------------------------------------------------
if (BluetoothData=='2'){ // ak sú prijaté dáta od bluetooth '2', začne robiť drink číslo 2.
Serial.println("Robím drink číslo 2.");
delay(1000);
digitalWrite(motorPin3, HIGH);
delay(2000);
digitalWrite(motorPin3, LOW);
delay(1000);
digitalWrite(motorPin2, HIGH);
delay(2000);
digitalWrite(motorPin2, LOW);
delay(1000);
digitalWrite(motorPin1, HIGH);
delay(2000);
digitalWrite(motorPin1, LOW);
delay(1000);
Serial.println("Drink číslo 2. dokončený");
}
//--------------------DRINK 3---------------------------------------------------------------------
if(BluetoothData=='3'){ // ak sú prijaté dáta od bluetooth '3', začne robiť drink číslo 3.
Serial.println("Robím drink číslo 3.");
delay(1000);
digitalWrite(motorPin2, HIGH);
delay(2000);
digitalWrite(motorPin2, LOW);
delay(1000);
digitalWrite(motorPin1, HIGH);
delay(2000);
digitalWrite(motorPin1, LOW);
delay(1000);
digitalWrite(motorPin3, HIGH);
delay(2000);
digitalWrite(motorPin3, LOW);
delay(1000);
Serial.println("Drink číslo 3. dokončený");
}
}
}