Visualizza messaggio singolo
Vecchio 03 maggio 20, 18:39   #59 (permalink)  Top
wrighizilla
Guest
 
Data registr.: 17-07-2013
Messaggi: 3.734
aspetta..
discutendone con un altro modellista mi ha dato dei suggerimenti importanti che fanno avanzare di parecchio il risultato

Codice:
#define Neutral 1500 // -- minimum forward signal
#define Maxspeed 2000 // -- maximum forward signal
#define Antsx 1000 // -- in front servo signal sx
#define Antdx 2000 // -- in front servo signal dx
#define Postsx 5 // out rear servo sx endpoint if inverted with postdx it reverse
#define Postdx 175 //-- out rear servo dx endpoint if inverted with postsx it reverse
#define Center 0 //-- add or subtract xx value to center steering
#define Tolerance 4 //-- if poor quality servo vibrates try 5
#define Max_gain 170 //-- gain steering reduction by throttle if reverse add -
#define Slowlimit 1800 //-- slow forward without endpoint correction
#include <Servo.h>
Servo myservo;
unsigned int Rxpulse;
unsigned int Gaspulse ;
unsigned int Gain;
unsigned int NewPos, OldPos;
void setup() {
myservo.attach(10); //-- rear servo signal out pin
pinMode(8, INPUT); //-- front servo signal in pin
pinMode(7, INPUT); //-- throttle signal in pin
}
void loop(){
Rxpulse = pulseIn(8, HIGH);
Gaspulse = pulseIn(7, HIGH);
if (Gaspulse > Slowlimit) {
Gain = map(Gaspulse, Slowlimit, Maxspeed, 0, Max_gain);
NewPos = map(Rxpulse, Antsx, Antdx, (Postsx + Gain), (Postdx - Gain));
}
else {
NewPos = map(Rxpulse, Antsx, Antdx, Postsx, Postdx);
}
if (abs(NewPos - OldPos)> Tolerance) {
OldPos = NewPos;
myservo.write(NewPos + Center);
}
}
in questo modo gli end point non si allargano più anche cambiando i valori di Slowlimit e Max_gain

l'unica cosa che succede adesso è che queste 2 variabili sono in relazione tra loro

la prova la faccio sempre cercando di ottenere il servo fermo al massimo del gas
ad esempio slowlimit 1600 e Max_gain 115 ho il servo nuovamente fermo al centro a tutto gas.
ma aumentando slowlimit a 1800 devo mettere Max_gain a 170
ad ogni modo mi pare certamente il risultato migliore trovato fino ad adesso.

ora provo il codice nel tuo ultimo post

----------edit------------

no, anche il code nel post 58 da come risultante il servo che gira da una parte all'altra ma non sente effetti tirando o spingendo il grilletto del gas.

Ultima modifica di wrighizilla : 03 maggio 20 alle ore 18:46
wrighizilla non è collegato   Rispondi citando