У меня проблема с моим кодом Arduino.
Код должен работать следующим образом: первый Arduino Uno получает данные из мобильного приложения через Bluetooth.Затем эти данные отправляются на другой Arduino Uno, который должен управлять двумя двигателями постоянного тока (их направлением и скоростью) с помощью H-моста.
Ниже приведен код только для одного двигателя.
Прием Arduino получает данные, нодвигатели не работают, только диод включен / выключен в соответствующие моменты.Когда я добавил код для двигателей, все работает, отправка данных работает намного медленнее.
Знаете ли вы, что не так в коде, что он не работает должным образом?
Код для Arduino, который отправляет данные:
#include <SoftwareSerial.h>
SoftwareSerial BT1(4,2); // RX, TX
SoftwareSerial port2(8,7); // RX, TX
char data;
void setup() {
Serial.begin(9600);
BT1.begin(9600);
port2.begin(9600);
}
void loop() {
BT1.listen();
if (BT1.available() > 0){
while (BT1.available() > 0) {
data = BT1.read();
port2.write(data);
}
}
}
Код для получения данных Arduino:
#include <SoftwareSerial.h>
SoftwareSerial port1(4,2);
char data = '0';
// Motor A
const int in1 = 10;
const int in2 = 9;
const int en1 = 11;
// Motor B
const int in3 = 6;
const int in4 = 5;
const int en2 = 3;
void setup() {
Serial.begin(9600);
port1.begin(9600);
//Enabling pins responsible for motor B and and setting them as output
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(en2, OUTPUT);
}
void demo1() {
/************** For motor B ****************/
//Set direction
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
//Set speed from 0 to 255
analogWrite(en2, 250);
delay(5000);
/************** For motor B ****************/
//Change direction
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(5000);
}
void stopMotor() {
//Stopping the motor B
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop() {
if (port1.available() > 0){
Serial.println("Data from other Arduino:");
data = port1.read();
Serial.println(data);
if (data == '1') {
demo1();
} else {
stopMotor();
}
}
}