Ciao a tutti, sono nuovo in questo forum e sono qui perché ho un problema con il mio circuito. Questo circuito consiste nel far muovere 3 servomotori grazie a 6 pulsanti (2 per ogni servomotore, uno che serve per aumentare l'angolo, l'altro per diminuirlo, molto semplice) ed è composto anche di uno schermo lcd 16,2 grazie al quale si può vedere in tempo reale l'ampiezza degli angoli descritti da ogni singolo motore. Per quanto riguarda l'alimentazione di questo circuito, lo ho diviso in 2 parti. La prima parte è alimentata da arduino stesso tramite un uscita 5V e va ad alimentare lo schermo lcd e i 6 pulsanti. Per quanto riguarda i 3 servomotori, che sono dei Gs-1723, sono alimentati da un portabatterie esterno da 6V. Il problema che riscontro è che quando io vado ad aumentare o a diminuire gli angoli dei motori, quest'ultimi vengo proiettati giusti nello schermo lcd ma i motorini non accennano a movimento, è capitato anche che delle si muovessero totalmente a caso.
Eccovi il codice che ho usato
#include <Servo.h>
Servo myServo1;
Servo myServo2;
Servo myServo3;
int Pin1 = 2;
int Pin2 = 3;
int Pin3 = 4;
int gradi1;
int gradi2;
int gradi3;
int var = 1;
int StatoBtn1;
int StatoBtn2;
int StatoBtn3;
int StatoBtn4;
int StatoBtn5;
int StatoBtn6;
void setup() {
myServo1.attach(Pin1);
myServo2.attach(Pin2);
myServo3.attach(Pin3);
Serial.begin(9600);
myServo1.write(0);
myServo2.write(0);
myServo3.write(0);
pinMode(32, INPUT);
pinMode(30, INPUT);
pinMode(28, INPUT);
pinMode(26, INPUT);
pinMode(24, INPUT);
pinMode(22, INPUT);
}
void loop() {
delay (50);
StatoBtn1 = digitalRead(32);
StatoBtn2 = digitalRead(30);
StatoBtn3 = digitalRead(28);
StatoBtn4 = digitalRead(26);
StatoBtn5 = digitalRead(24);
StatoBtn6 = digitalRead(22);
if (StatoBtn1 == 1){
gradi1 = gradi1 + var;
myServo1.write(gradi1);
Serial.println(gradi1);
}
if (StatoBtn2 == HIGH){
gradi1 = gradi1 - var;
myServo1.write(gradi1);
Serial.println(gradi1);
}
if (StatoBtn3 == HIGH){
gradi2 = gradi2 + var;
myServo2.write(gradi2);
}
if (StatoBtn4 == HIGH){
gradi2 = gradi2 - var;
myServo2.write(gradi2);
}
if (StatoBtn5 == HIGH){
gradi3 = gradi3 + var;
myServo3.write(gradi3);
}
if (StatoBtn6 == HIGH){
gradi3 = gradi3 - var;
myServo3.write(gradi3);
}
}
P.s: questo non è il codice che ho usato per controllare anche lo schermo, qui ci sono sono i servo e i pulsanti. Avevo fatto la prova a escludere lo schermo perché magari il problema era lui, ma non è cosi.
Vi lascio in allegato anche lo schema
Grazie a tutti in anticipo e scusate se ho commesso un errore banale.