| |
| | #1 (permalink) Top |
| User Data registr.: 18-05-2013 Residenza: Chivasso (TO)
Messaggi: 2.352
|
considerando che non programmo con Arduino da un tot (non programmo da un tot in generale ) e che non ho mai usato la libreria servo..#include <Servo.h> Servo myServo, myInput; int newPos, oldPos; bool direzione; void setup() { myServo.attach(10); myInput.attach(ingresso_ch3); newPos = 90; oldPos = 90; direzione = true; myservo.write(pos); } void loop() { oldPos = newPos; if (myInput.read() < soglia_on_off_ch3) { newPos = 90; direzione = true; } else { if (direzione) { if (newPos < 220) NewPos++; else direzione = false; } else { if(newPos > -40) NewPos--; else direzione = true; } if ( (newPos != oldPos) AND (newPos <= 180) AND (newPos >=0) ) myservo.write(newPos); delay(25); } non so se sia giusta la routine di lettura dell'input, e anche non ricordo come dichiarare gli AND
__________________ v911 - mCPX - PRȎTOS - TRex 450 500 550 A959B - Q32 - DF03 - LRP TC2 - XB4 - M06 - B5(M) - T8E - X1 - T4 - XB2C - GF01 |
| | |
| | #2 (permalink) Top |
| User Data registr.: 18-05-2013 Residenza: Chivasso (TO)
Messaggi: 2.352
|
newPos e oldPos ti servono per capire che da un loop all'altro la posizione sia stata ricalcolata, quindi non dare comandi al servo non utili alla causa, direzione serve per ricordare da un loop all'altro dove stava muovendo e newPos oltre a 180 e inferiore a 0 ti servono per gestire i delay del servo fermo a dx o sx, tanto il controllo finale non li manderà al servo scritto così "a sensazione" eh
__________________ v911 - mCPX - PRȎTOS - TRex 450 500 550 A959B - Q32 - DF03 - LRP TC2 - XB4 - M06 - B5(M) - T8E - X1 - T4 - XB2C - GF01 |
| | |
| | #3 (permalink) Top | |
| Guest Data registr.: 17-07-2013
Messaggi: 3.734
| Citazione:
spiegami meglio questo sketch che hai scritto, così come lo vedo è già utilizzabile con una ricevente? il segnale d'ingresso della rx ch3 a quale piedino della nano lo dovrei collegare? lo decido io? ad esempio nella parentesi (ingresso_ch3) scrivo 8 e poi collego la rx al piedino 8? inoltre non ritrovo scritto un delay di 2 secondi sui fine corsa comunque dopo lo carico e lo studio meglio. Ultima modifica di wrighizilla : 25 aprile 20 alle ore 02:20 | |
| | |
| | #4 (permalink) Top |
| User Data registr.: 02-07-2004 Residenza: Ronchi dei Legionari (GO)
Messaggi: 5.709
|
Punto di partenza #include <Servo.h> Servo myservo; int rxpulse = 1500; int maxsx = 45; //-- tarare int maxdx = 135; //-- tarare int pservo = 90; void setup() { myservo.attach(9); pinMode(3, INPUT); //-- legge RX } void loop() { rxpulse = pulseIn(3, HIGH); if (rxpulse > 1700) { myservo.write(90); delay(200); } else { for (int n = maxsx; n <= maxdx; n++) { myservo.write(n); delay(50); } for (int n = maxdx; n >= maxsx; n--) { myservo.write(n); delay(50); } } }
__________________ Solo Aeromodelli - Autogiro Elicotteri Multirotori No grazie |
| | |
| | #5 (permalink) Top |
| Guest Data registr.: 17-07-2013
Messaggi: 3.734
| funziona, ho modificato i tempi di delay della corsa in movimento portandoli a 20 e i canali assegnati al servo e all'ingresso che sono diversi.. 10, 8 a questo punto mancherebbe solo una pausa di 2 secondi alle estremità dei fine corsa. grazie!! è quasi pronto ad essere impiegato, andrà corretta la posizione del servo alle 2 estremità del loop portandola ai gradi giusti della visuale che dovrò avere dalla cam ma il tuo sketch fa precisamente quello che vorrei ottenere. Ultima modifica di wrighizilla : 25 aprile 20 alle ore 12:30 |
| | |
| | #7 (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); } } |
| | |
| | #8 (permalink) Top | |
| User Data registr.: 02-07-2004 Residenza: Ronchi dei Legionari (GO)
Messaggi: 5.709
| Citazione:
ciao
__________________ Solo Aeromodelli - Autogiro Elicotteri Multirotori No grazie | |
| | |
| | #9 (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 |
| | |
| | #10 (permalink) Top | |
| Guest Data registr.: 17-07-2013
Messaggi: 3.734
| Citazione:
ho provato a inserire un valore numerico ma rimane l'errore myservo not declared abbi pazienza è certamente banale ma ancora non sono capace di passare oltre intanto sul serial monitor ho testato i valori ottenuti dalla nano dalla ricevente. le 2 posizioni del canale ausiliario sono 1100 e 1904 ora non so dire ancora quale delle 2 sarà il loop. al canale servo ho assegnato il piedino 10 mentre l'ingresso del segnale è al piedino 8 | |
| | |
![]() |
| 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 |