Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 25 aprile 20, 01:10   #1 (permalink)  Top
User
 
L'avatar di madqwerty
 
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
madqwerty non è collegato   Rispondi citando
Vecchio 25 aprile 20, 01:14   #2 (permalink)  Top
User
 
L'avatar di madqwerty
 
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
madqwerty non è collegato   Rispondi citando
Vecchio 25 aprile 20, 02:11   #3 (permalink)  Top
Guest
 
Data registr.: 17-07-2013
Messaggi: 3.734
Citazione:
Originalmente inviato da madqwerty Visualizza messaggio
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
grazie 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
wrighizilla non è collegato   Rispondi citando
Vecchio 25 aprile 20, 11:53   #4 (permalink)  Top
User
 
L'avatar di italo.driussi
 
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
italo.driussi è collegato   Rispondi citando
Vecchio 25 aprile 20, 12:27   #5 (permalink)  Top
Guest
 
Data registr.: 17-07-2013
Messaggi: 3.734
Citazione:
Originalmente inviato da italo.driussi Visualizza messaggio
Punto di partenza
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
wrighizilla non è collegato   Rispondi citando
Vecchio 25 aprile 20, 12:39   #6 (permalink)  Top
Guest
 
Data registr.: 17-07-2013
Messaggi: 3.734
Italo, a cosa serve la stringa
myservo.write(90);
delay(200);

il 200 a cosa fa riferimento?
wrighizilla non è collegato   Rispondi citando
Vecchio 25 aprile 20, 13:05   #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);

}

}
wrighizilla non è collegato   Rispondi citando
Vecchio 25 aprile 20, 12:39   #8 (permalink)  Top
User
 
L'avatar di italo.driussi
 
Data registr.: 02-07-2004
Residenza: Ronchi dei Legionari (GO)
Messaggi: 5.709
Citazione:
Originalmente inviato da wrighizilla Visualizza messaggio
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.
La metti alla fine dei cicli for

ciao
__________________
Solo Aeromodelli -
Autogiro Elicotteri Multirotori No grazie
italo.driussi è collegato   Rispondi citando
Vecchio 25 aprile 20, 13:09   #9 (permalink)  Top
Guest
 
Data registr.: 17-07-2013
Messaggi: 3.734
Citazione:
Originalmente inviato da italo.driussi Visualizza messaggio
La metti alla fine dei cicli for

ciao
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
wrighizilla non è collegato   Rispondi citando
Vecchio 25 aprile 20, 12:09   #10 (permalink)  Top
Guest
 
Data registr.: 17-07-2013
Messaggi: 3.734
Citazione:
Originalmente inviato da madqwerty Visualizza messaggio
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
non mi compila il tuo sketch. mi da errore alla fine: myservo.write(newPos);
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
wrighizilla non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


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



Tutti gli orari sono GMT +2. Adesso sono le 17:40.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002