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
''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
@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
Gelöst! Vielen Dank :) – AFME