| |
| | #1 (permalink) Top | |
| User Data registr.: 02-10-2019 Residenza: Orvieto
Messaggi: 388
| Citazione:
Inviato dal mio PRA-LX1 utilizzando Tapatalk | |
| | |
| | #2 (permalink) Top | |
| Guest Data registr.: 17-07-2013
Messaggi: 3.734
| Citazione:
Codice: #define Max_gain 85 //-- #define Slowlimit 1800 per vedelo partire devo mettere define Max_gain 15 con 10 non succede niente. per vederlo chiudere del tutto (con Slowlimit a 1800 che è abbastanza in alto sulla scala del grilletto del gas direi un 70% circa con l'occhiometro) devo metterlo a 160 allora è fermo al centro come se lo sterzo posteriore non ci fosse Ultima modifica di wrighizilla : 03 maggio 20 alle ore 22:14 | |
| | |
| | #5 (permalink) Top |
| User Data registr.: 03-05-2020 Residenza: milano
Messaggi: 47
|
eccolo ripulito... ![]() Prooooova #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 5 //-- if poor quality servo vibrates try 5 #define Max_gain 100 //-- gain steering reduction by throttle if reverse add - #define Slowlimit 1700 //-- slow forward without endpoint correction #include <Servo.h> Servo myservo; unsigned long Rxpulse;//pulsin restituisce un long unsigned long Gaspulse ; unsigned long Gain;//Giusto per.. mettiamo long signed long NewPos, OldPos; int Stato; byte debug = 1; unsigned int Course; void setup() { pinMode(7, INPUT); //-- throttle signal in pin pinMode(8, INPUT); //-- front servo signal in pin myservo.attach(10); //-- rear servo signal out pin Stato = 0; } void loop() { if (Stato == 0) { //lettura Rxpulse = pulseIn(8, HIGH); delay(2); Gaspulse = pulseIn(7, HIGH); } if (Stato == 1) { //Calcolo Gaspulse = constrain (Gaspulse, Neutral, Maxspeed);//riduce valori dal canale gas Gain = map(Gaspulse, Neutral, Maxspeed, 0, Max_gain); Course = (Postdx - Postsx) ; //corsa in gradi da dx a sx Course = Course * Gain / 100 ; //calcola i gradi di escursione in base all'accelleratore NewPos = map(Rxpulse, Antsx, Antdx, (Postsx + (Course / 2) ), (Postdx - (Course / 2))); } if (Stato == 2) { //scrittura if (abs(NewPos - OldPos) > Tolerance) { OldPos = NewPos; myservo.write(NewPos + Center); } } // Incrementa stato per il prossimo loop ++Stato; if (Stato == 3) { // riparte da 0 Stato = 0; } //ritardo esecuzione cicli/stati delay(1); } Ultima modifica di Smsteves : 04 maggio 20 alle ore 00:05 |
| | |
| | #6 (permalink) Top |
| Guest Data registr.: 17-07-2013
Messaggi: 3.734
|
con questo sketch che hai postato non esiste più Slowlimit.. lo sterzo inizia a chiudersi subito appena si da il gas. il punto massimo di chiusura è con Max_gain a 125 e resta quello anche cambiando valori a Slowlimit che di fatto non esiste più o non dimostra di fare nulla di preciso. Ultima modifica di wrighizilla : 04 maggio 20 alle ore 00:15 |
| | |
| | #7 (permalink) Top | |
| User Data registr.: 03-05-2020 Residenza: milano
Messaggi: 47
| Citazione:
Bene, ho preso l'ultimo codice e l'ho inserito nella macchina a stati. In aggiunta, ho inserito i lampeggi del led lento o veloce, a seconda di dove ci si trova con il Gas sopra o sotto il SlowLimit. Se mettiamo anche uno o due pulsanti potremmo fare la taratura... Smsteves ------------------------ #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 1000 // out rear servo sx endpoint if inverted with postdx it reverse #define Postdx 2000 //-- out rear servo dx endpoint if inverted with postsx it reverse #define Center 0 //-- add or subtract xx value to center steering #define Tolerance 5 //-- if poor quality servo vibrates try 5 #define Max_gain 950 //-- 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; signed int NewPos, OldPos; int Stato; int Stato_Led=0; boolean Cmd_Led = false; int Ledpin=13; int Led=0; void setup() { pinMode(7, INPUT); //-- throttle signal in pin pinMode(8, INPUT); //-- front servo signal in pin pinMode(Cmd_Led, OUTPUT); myservo.attach(10); //-- rear servo signal out pin Stato = 0; } void loop() { if (Stato == 0) { //lettura Rxpulse = pulseIn(8, HIGH); delay(2); Gaspulse = pulseIn(7, HIGH); } if (Stato == 1) { //Calcolo if (Gaspulse > Slowlimit) { Gain = map(Gaspulse, Slowlimit, Maxspeed, 0, Max_gain ); NewPos = map(Rxpulse, Antsx, Antdx, (Postsx + Gain), (Postdx - Gain)); Led=1; } else { NewPos = map(Rxpulse, Antsx, Antdx, Postsx, Postdx); Led=2; } } if (Stato == 2) { //scrittura if (abs(NewPos - OldPos) > Tolerance) { OldPos = NewPos; myservo.write(NewPos + Center); } } // Incrementa stato per il prossimo loop ++Stato; // Incrementa tempo led per il prossimo loop ++Stato_Led; if (Stato == 3) { // riparte da 0 Stato = 0; } //ritardo esecuzione cicli/stati delay(1); if (Led == 1) { //led veloce if (Stato_Led>20) { Cmd_Led= !Cmd_Led; Stato_Led=0; } digitalWrite(Ledpin, Cmd_Led); } if (Led == 2) { //led lento if (Stato_Led>60) { Cmd_Led= !Cmd_Led; Stato_Led=0; } digitalWrite(Ledpin, Cmd_Led); } } | |
| | |
![]() |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
| buggy da completare | BoBoPoP | Automodellismo Mot. Scoppio Off-Road | 41 | 18 maggio 16 17:56 |
| monster da completare...! | bronto_19 | Automodellismo Mot. Elettrico Off-Road | 2 | 22 giugno 10 17:35 |
| Sto costruendo uno schiumino (o tzagi), mi aiutate??? | crido96 | Aeromodellismo Principianti | 72 | 07 febbraio 10 02:26 |
| Come completare una associated B4? | ryan-j | Automodellismo Mot. Elettrico On-Road | 9 | 04 maggio 08 11:55 |