Witam. Buduję układ mający być sterowaniem w zdalnie sterowanym samochodzie. W skrócie: Sygnał z telefonu idzie do modułu bluetooth hc-06, arduino go odczytuje i daje napięcie i informację o prędkości do modułu l298n który napędza silnik. na podobnej zasadzie działa serwo. Całość zasilana jest z baterii 7,4v. Serwo jest podłączone do baterii przez regulator napięcia, który napięcie zmniejsza do 5v. Problem jest następujący: napisałem dwa osobne programy. Jeden do kontroli serwa, a drugi do silnika. Osobno oba działają jak należy, problem pojawił się gdy połączyłem je w jeden, wtedy działa tylko serwo. W załączonych plikach przesyłam zdjęcia układu jak i program. Z góry dziękuję za pomoc.
IMG_20240115_125738.jpg (Rozmiar: 507.06 KB / Pobrań: 1)
IMG_20240115_125748.jpg (Rozmiar: 462.47 KB / Pobrań: 0)
IMG_20240115_125750.jpg (Rozmiar: 667.14 KB / Pobrań: 1)
const int ENA = 8; // Pin PWM dla kanału A
const int IN1 = 7; // Pin IN1 dla kanału A
const int IN2 = 6; // Pin IN2 dla kanału A
#include &tServo.h&t
Servo myservo;
int pos = 0; // variable to store the servo position
int motor = 0;
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
Serial.begin(9600);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
Serial.print("Arduino control Servo Motor Connected OK");
Serial.print('\n');
}
char znak;
void loop() {
if (Serial.available() &t 0) {
znak = Serial.read();
}
if (znak == 'W') {
analogWrite(ENA, 128); // 50% z 255 (128 -9V())
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
}
if(znak == 'w'){
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}
{ motor = Serial.parseInt();
// do it again:
pos = Serial.parseInt();
// look for the newline. That's the end of your sentence:
if (Serial.read() == '\n') {
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
// print the three numbers in one string as hexadecimal:
Serial.print("Data Response : ");
Serial.print(motor, DEC);
Serial.print(pos, DEC);
}
}
}



const int ENA = 8; // Pin PWM dla kanału A
const int IN1 = 7; // Pin IN1 dla kanału A
const int IN2 = 6; // Pin IN2 dla kanału A
#include &tServo.h&t
Servo myservo;
int pos = 0; // variable to store the servo position
int motor = 0;
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
Serial.begin(9600);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
Serial.print("Arduino control Servo Motor Connected OK");
Serial.print('\n');
}
char znak;
void loop() {
if (Serial.available() &t 0) {
znak = Serial.read();
}
if (znak == 'W') {
analogWrite(ENA, 128); // 50% z 255 (128 -9V())
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
}
if(znak == 'w'){
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}
{ motor = Serial.parseInt();
// do it again:
pos = Serial.parseInt();
// look for the newline. That's the end of your sentence:
if (Serial.read() == '\n') {
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
// print the three numbers in one string as hexadecimal:
Serial.print("Data Response : ");
Serial.print(motor, DEC);
Serial.print(pos, DEC);
}
}
}