25 aprile 20, 12:39 | #11 (permalink) Top | |
User Data registr.: 02-07-2004 Residenza: Ronchi dei Legionari (GO)
Messaggi: 5.690
| Citazione:
ciao
__________________ Solo Aeromodelli - Autogiro Elicotteri Multirotori No grazie | |
25 aprile 20, 13:05 | #12 (permalink) Top |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
|
ho provato ad aggiungere alla fine dello sketch la stringa } delay(2000); ottengo la pausa di 2 secondi ma solo su uno dei finecorsa, ora vedo se riesco ad assegnare la pausa anche all'altro.. se copio la stessa stringa anche all'altro delay poco sopra mi perdo la posizione al centro e cicla in entrambe le posizioni radio, quindi l'ho cancellato. in pratica così fa quasi tutto quello che desidero eccetto la pausa anche sull'altro fine corsa. #include <Servo.h> Servo myservo; int rxpulse = 1500; int maxsx = 45; //-- tarare int maxdx = 135; //-- tarare int pservo = 90; void setup() { myservo.attach(10); pinMode(8, INPUT); //-- legge RX } void loop() { rxpulse = pulseIn(8, HIGH); if (rxpulse > 1800) { myservo.write(90); delay(200); } else { for (int n = maxsx; n <= maxdx; n++) { myservo.write(n); delay(20); } for (int n = maxdx; n >= maxsx; n--) { myservo.write(n); delay(20); } delay(2000); } } |
25 aprile 20, 13:09 | #13 (permalink) Top |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
| non proprio, se cpio la stessa stringa al "primo for" poi cicla sempre in entrambe le posizioni di aux, anzi, quella che dovrebbe essere ferma al centro cicla solo metà corsa con la pausa di 2 secondi poi recupera velocemente fino al centro e riparte il loop. l'altra posizione funziona invece benissimo con la pausa di 2 secondi in entrambi i fine corsa.. andrebbe anche bene inserendo le 2 stringhe di delay perchè i fine corsa ora hanno entrambi la pausa ma dovrei ritrovare la posizione ferma avanti come nel primo sketch che hai postato Ultima modifica di wrighizilla : 25 aprile 20 alle ore 13:16 |
25 aprile 20, 13:39 | #14 (permalink) Top |
User Data registr.: 14-02-2006 Residenza: provincia VT
Messaggi: 3.672
|
Cioè hai un interruttore sulla Tx con cui vorresti mandare la telecamera ai due estremi e all'occorrenza anche al centro..? Se e' così e ci hai il fail safe banalmente lo programmi per portare il servo al centro se spegni la tx, e vai in saccoccia ad arduino... |
25 aprile 20, 13:45 | #15 (permalink) Top | |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
| Citazione:
sto cercando di ottenere un loop programmabile sia come velocità di scorrimento che come punto di end point nei quali si ferma, compresa la durata della pausa.. ovvio che il più delle volte serve solo la posizione al centro ma non potendo dare un occhiata da entrambi i lati mi sembra una soluzione sensata programmare una nano per fare una panoramica in loop. lo sketch proposto da Italo va benissimo, manca solo la pausa di 2 secondi agli end point. per adesso non riesco ad ottenere il loop con le pause agli end point senza che nella posizione aux 2 il servo cicli ugualmente metà corsa con pausa.. sicuramente è una banalità ma appunto sto cercando di capirne la logica. a dire il vero credo di aver capito che il problema potrebbe essere nel valore for (int n = maxsx; n <= maxdx; n++) che genera il loop indesiderato nella posizione aux nella quale la cam dovrebbe rimanere ferma.. ma non so ancora scriverlo Ultima modifica di wrighizilla : 25 aprile 20 alle ore 13:54 | |
25 aprile 20, 14:06 | #16 (permalink) Top |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
|
credo di aver capito che inserendo le 2 stringhe delay il problema potrebbe essere nel valore for (int n = maxsx; n <= maxdx; n++) che genera il loop indesiderato anche nella posizione aux2 nella quale la cam dovrebbe rimanere invece ferma.. il passaggio adesso è questo, così corretto con le stringhe delay in posizione aux1 il loop è meraviglioso, funziona tutto benissimo. for (int n = maxsx; n <= maxdx; n++) { myservo.write(n); delay(20); } delay(2000); } for (int n = maxdx; n >= maxsx; n--) { myservo.write(n); delay(20); } delay(2000); } ma purtroppo non so ancora scriverlo per correggerlo, per adesso sono solo al livello di copiare e analizzare sintassi e funzioni, posso capire la logica quando la vedrò scritta e potrò confrontare cosa mancava vabè, comunque alla quinta ora mi va benissimo di essere messo così |
25 aprile 20, 16:16 | #17 (permalink) Top |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
|
ho risolto! grazie davvero, era solo una questione di parentesi mancanti, un amico mi ha datto questa dritta di incorporare assieme le funzioni di else ed è bastato. questo è lo sketch con tutto funzionante. https://pastebin.com/embed_js/CiB7LMY1 #include <Servo.h> Servo myservo; int rxpulse = 1500; int maxsx = 45; //-- taratura fine corsa sx int maxdx = 135; //-- taratura fine corsa dx int pservo = 90; void setup() { myservo.attach(10); pinMode(8, INPUT); //-- piedino che legge RX } void loop() { rxpulse = pulseIn(8, HIGH); if (rxpulse > 1600) { myservo.write(90); //-- taratura centratura del servo su canale aux1 delay(200); } else { { for (int n = maxsx; n <= maxdx; n++) { myservo.write(n); delay(20); //-- velocità di rotazione loop su aux2 } delay(2000); //-- tempo di pausa endpoint } for (int n = maxdx; n >= maxsx; n--) { myservo.write(n); delay(20); //-- velocità di rotazione loop su aux2 } delay(2000); //tempo di pausa endpoint } } vi ringrazio tantissimo, stasera sarà sul camion questo sketch adesso permette di usare una radio con aux con deviatore 2 posizioni e avere un loop programmabile su una delle 2 posizioni. permette inoltre: - centrarsi su un certo grado di rotazione a piacimento per la posizione dove il servo sta fermo. - decidere la velocità e la corsa del loop - impostare a piacimento una pausa ai fine corsa (1sec. = 1000) lo trovo utilissimo, vi ringrazio ancora |
25 aprile 20, 16:44 | #18 (permalink) Top | |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
| Citazione:
mi spaventava un pò questa roba ma alla fine è molto interessante.. anche sbagliando si scoprono ugualmente alcune cose utili. | |
25 aprile 20, 18:14 | #19 (permalink) Top | |
User Data registr.: 18-05-2013 Residenza: Chivasso (TO)
Messaggi: 2.352
| Citazione:
l'unico vantaggio del mio è che che non ha delay lunghi nel main loop (li spezzetta in piccoli delay sempre lunghi uguali) quindi se torni al centro con l'interruttore ch3 non devi attendere un tempo random da 0 a 2 secondi del delay alla fine dei cicli for , però non l'ho nemmeno passato al compilatore, di sicuro contiene errori grammaticali (gli AND verso il fondo) e anche la lettura del ch3, vedendo come fa lo sketch dopo il mio, ma può servirti per fare un po' di palestra
__________________ v911 - mCPX - PRȎTOS - TRex 450 500 550 A959B - Q32 - DF03 - LRP TC2 - XB4 - M06 - B5(M) - T8E - X1 - T4 - XB2C - GF01 | |
25 aprile 20, 18:15 | #20 (permalink) Top |
User Data registr.: 02-07-2004 Residenza: Ronchi dei Legionari (GO)
Messaggi: 5.690
|
Prova questo #define LPAUSA 2000 //-- pausa laterale #define CPAUSA 2000 //-- pausa centrale #define maxsx 45 //-- corsa max sx #define maxdx 135 //-- corsa max dx #define centro 90 //-- centro servo #define VelSer 60 //-- velocita servo #define PinSer 9 //-- pin servo #define PinRX 8 //-- pin legge RX #include <Servo.h> Servo myservo; int rxpulse = 1500; int n = 90; void setup() { myservo.attach(PinSer); pinMode(PinRX, INPUT); } void loop() { rxpulse = pulseIn(PinRX, HIGH); Serial.println(rxpulse); if (rxpulse > 1700) { myservo.write(centro); delay(200); } else { ruota(); } } void ruota() { //-- da centro a sx for (n = centro; n >= maxsx; n--) { myservo.write(n); delay(VelSer); } delay(LPAUSA); //-- torno al centro for (n = maxsx ; n <= centro; n++) { myservo.write(n); delay(VelSer); } delay(CPAUSA); //-- da centro a dx for (n = centro; n <= maxdx; n++) { myservo.write(n); delay(VelSer); } delay(LPAUSA); //-- torno al centro for (n = maxdx ; n >= centro; n--) { myservo.write(n); delay(VelSer); } delay(CPAUSA); }
__________________ Solo Aeromodelli - Autogiro Elicotteri Multirotori No grazie |
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 |