2016-11-12 6 views
0

Ich habe Arduino UNO mit Bluetooth-Modul und Vibrationsmotor angebracht. Ich kann den Vibrator einschalten, aber ich kann ihn nicht ausschalten. Hier ist der CodeArduino schaltet keine Vibration nach der Eingabe 0

#include<SoftwareSerial.h>//import the serial library 

int vib=8; 
SoftwareSerial Genotronex(10,11);//RX,TX 
int BluetoothData;//the data given 

void setup() { 
Genotronex.begin(9600); 
Genotronex.println("Bluetooth on please press 1 to vibrate"); 
pinMode(vib,OUTPUT); 
// put your setup code here, to run once: 
} 

void loop() { 
if (Genotronex.available()){ 
BluetoothData=Genotronex.read();{ 
if(BluetoothData='1'){ 
    digitalWrite(vib,'1'); 
    Genotronex.println("Vibrator on"); 
    delay(500); 

    } 
    else if (BluetoothData='0'){ 
    digitalWrite(vib,'0'); 
    Genotronex.println("Vibrator off"); 
    delay(500); 

    } 
    } 
    } 
delay(100); 
// put your main code here, to run repeatedly: 
} 

im Bluetooth-Terminal, erklärte sie < 1> Vibrator auf wenn i Eingang '1' erklärte aber auch < 0) Vibrator auf wenn i Eingang '0', wenn es sein sollte Habe Vibrator ausgeschaltet.

schätzen alle Hilfe

+2

''0'' und'' 1'' sind nicht identisch mit '0' und' 1'. Die erste Menge ist eine Zeichenkette (oder char) und die zweite Menge ist eine ganze Zahl. Ihre 'BluetoothData'-Variable ist eine Ganzzahl, daher müssen Sie sie mit einem ganzzahligen Wert vergleichen. Das gleiche gilt für Ihre 'digitalWrite'-Funktionen. Sie sollten diese in Ganzzahlen ändern oder' HIGH' und 'LOW' verwenden. – TyloBedo

+0

@TyloBedo:' '1'' ist keine Zeichenkette. Es ist ein Charakter ('char' Typ). Und da dies das 'C++' ist, ist das Zeichen ein numerischer Datentyp. Es ist also kein Problem, char mit dem int zu vergleichen (es sei denn, es gibt keine zu lesenden Daten). Allerdings ein guter Punkt über 'digitalWrite (vib, '0')'. Dies wird ein anderes Problem sein. Nicht nur den Operator zuweisen, statt einen zu vergleichen – KIIV

+0

Gelöst! Vielen Dank :) – AFME

Antwort

2
if(BluetoothData='1'){ 
       ^

Einzel = Zuordnung ist. Verwenden Sie == für Vergleiche.

Auch BluetoothData sollte wahrscheinlich als lokale Variable in loop() definiert werden. Es funktioniert in beide Richtungen, aber kompiliert zu etwas effizienterem (und besser lesbarem!) Code.

+0

'BluetoothData' ist auch als ein int definiert und es wird versucht, mit einer Zeichenfolge verglichen werden. – TyloBedo

+0

Der Ausdruck 'digitalWrite (vib, '0');' wird ebenfalls zu logisch 1 führen. Die Fixierung der Aussage "immer wahr" ist nicht genug – KIIV

Verwandte Themen