ciao ragazzi
per quelli che mi conoscono sul forum sono lieto di dire che ho risolto tutti i problemi relativi al post pilotare scheda motori
ovviamente ho fatto da solo seguendo varie guide illustrative sui vari comandi
volevo dei consigli sul codice che vi posto
dove ho apportato diverse modifiche perche il programma funzionava ma era molto lento alla risposta dei comandi
adesso va decisamente meglio dopo le modifiche
pero volevo lo stesso un controllo da parte vostra se possibile
e una domanda che mi preme farla e' : e possibile renderlo ancora piu' reattivo ?
grazie anticipatamente
#include <SoftwareSerial.h>
#include <Servo.h>
char val;
int pinDIR = 12; // Pin 12 - dir
int pinPWM = 11; // Pin 11 - pwm
SoftwareSerial mySerial(9, 10); // imposto i pin per la comunicazione seriale
// Collegare i pin nel seguente modo: RX=>10 TX=>9
int valoreFade = 0;
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
unsigned long time;
unsigned long letturadati;
void setup()
{
mySerial.begin(38400); // open serial port to receive data
myservo.attach(5); // attaches the servo on pin 9 to the servo object
// steering in central position
myservo.write(90);
time=millis();
servotime1=millis();
mototime1=millis();
letturadati=millis();
// initialize the digital pins as output
pinMode(pinDIR, OUTPUT);
pinMode(pinPWM, OUTPUT);
}
// look for the newline. That's the end of your sentence:
void loop()
{
time=millis();
if(time>servotime1+100){
val = mySerial.read(); // read it and store it in 'val'
switch(val){
case 'a' :
myservo.write(120); // tell servo to go to position in variable 'pos'
break;
case 'b' :
myservo.write(150); // tell servo to go to position in variable 'pos'
break;
case 'c' :
myservo.write(180); // tell servo to go to position in variable 'pos'
break;
case 'd' :
myservo.write(60); // tell servo to go to position in variable 'pos'
break;
case 'e' :
myservo.write(30); // tell servo to go to position in variable 'pos'
break;
case 'f' :
myservo.write(0); // tell servo to go to position in variable 'pos'
break;
case '0' :
myservo.write(90); // tell servo to go to position in variable 'pos'
break;
case 'ST':
analogWrite(pinPWM, 0); //
break;
case 'F':
digitalWrite(pinDIR, HIGH);
analogWrite(pinPWM, 100); // dove x = valore da 0 a 255 ( 0=fermo , 255=max velocità )
break;
case 'B':
digitalWrite(pinDIR, LOW);
analogWrite(pinPWM, 100); // dove x = valore da 0 a 255 ( 0=fermo , 255=max velocità )
break;
letturadati=millis();
}
}
}