- Messaggi: 527
- Ringraziamenti ricevuti 86
Collegare un pulsante su RC4
9 Anni 7 Mesi fa - 9 Anni 7 Mesi fa #16
da alfa75
Risposta da alfa75 al topic Collegare un pulsante su RC4
ciao toni
prima di progettare il software devi essere sicuro della sequenza nella quale vengono oscurate le forcelle dalla lama
es sto girando in senso orario...
FORCELLA1 oscurata,FORCELLA2 libera
continuo a girare....
FORCELLA1 libera,FORCELLA2 libera
continuo a girare....
FORCELLA2 oscurata,FORCELLA1 sempre libera
continuo....
FORCELLA2 libera,FORCELLA1 libera
solo così puoi ragionare come un automa a stati finiti
prima di progettare il software devi essere sicuro della sequenza nella quale vengono oscurate le forcelle dalla lama
es sto girando in senso orario...
FORCELLA1 oscurata,FORCELLA2 libera
continuo a girare....
FORCELLA1 libera,FORCELLA2 libera
continuo a girare....
FORCELLA2 oscurata,FORCELLA1 sempre libera
continuo....
FORCELLA2 libera,FORCELLA1 libera
solo così puoi ragionare come un automa a stati finiti
Ultima Modifica 9 Anni 7 Mesi fa da alfa75.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alfa75
- Platinum Member
Riduci
Di più
9 Anni 7 Mesi fa #17
da toni
Risposta da toni al topic Collegare un pulsante su RC4
Ciao alfa
il ragionamento che hai fatto è perfetto, ed e proprio così, e per essere sicuro della sequenza ho testato le forcelle collegandole a due led, i quali si accendono in modo alternato.
Quello che non capisco ed non riesco a fare è il bloccare il secondo sensore, ho provato a portarlo a 1 "a 0 incrementa" ma non va, ho provato ad invertire il bits cosi(LATCbits.LATC4 = ~LATCbits.LATC4) ma neanche cosi non va,
mentre con il compilatore HI-TECH e stato sufficiente vare while (sens_dec == prersed); ed il sensore e disinibito,
con questo compilatore non riesco a trovargli il codice.
Sarà che son datato e un po' duro
Toni
il ragionamento che hai fatto è perfetto, ed e proprio così, e per essere sicuro della sequenza ho testato le forcelle collegandole a due led, i quali si accendono in modo alternato.
Quello che non capisco ed non riesco a fare è il bloccare il secondo sensore, ho provato a portarlo a 1 "a 0 incrementa" ma non va, ho provato ad invertire il bits cosi(LATCbits.LATC4 = ~LATCbits.LATC4) ma neanche cosi non va,
mentre con il compilatore HI-TECH e stato sufficiente vare while (sens_dec == prersed); ed il sensore e disinibito,
con questo compilatore non riesco a trovargli il codice.
Sarà che son datato e un po' duro
Toni
Si prega Accedi o Crea un account a partecipare alla conversazione.
- toni
- Autore della discussione
- Elite Member
Riduci
Di più
- Messaggi: 279
- Ringraziamenti ricevuti 9
9 Anni 7 Mesi fa - 9 Anni 7 Mesi fa #18
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Collegare un pulsante su RC4
ciao Toni, premesso che ho letto solo adesso questo post, mi viene in mente che potresti usare una variabile che scandisca la posizione esatta della lama rispetto alle forcelle... mi spiego meglio, quando Mauro Laurenti scrisse il firmware per il robot domotino, fece in modo che per ogni step del movimento del servo la variabile fosse messa ad 1 oppure a 0.... questa è la routine del movimento servo, da me commentata per non stare ogni volta a ripetere il ragionamento:
// **************************** ROUTINE PER LO SPOSTAMENTO SEQUENZIALE DEL SERVO *****************************
// La logica è la seguente: all'avvio la variabile once è uguale a 0 ed il servo si trova in posizione centrale,
// ovvero ServoDirection = 2, quindi si avvierà il comando per spostare il servo a destra (ServoDirection ++).
// Quando il servo si trova tutto a destra (ServoDirection = 3) la variabile once è sempre uguale a 0.
// Quando ServoDirection è > 3 il servo viene riportato in posizione centrale e la variabile once viene messa
// uguale a 1. Poichè once è uguale a 1 il servo si sposterà verso sinistra (ServoDirection --) mentre la variabile
// once viene riazzerata. Poichè once è uguale a 0 il servo si sposterà nuovamente verso destra
// Sequenza della routine:
// avvio routine: ServoDirection = 2 once = 0
// ServoDirection = 3 once = 0
// ServoDirection > 3 once = 0
// ServoDirection = 2 once = 1
// ServoDirection = 1 once = 0
// ServoDirection = 2 once = 0 e così via....
if (once == 0)
ServoDirection ++; // sposto il servo verso destra
else // se once = 1
{
// sposto il servo verso sinistra
ServoDirection --;
// e riazzero la variabile once
once =0;
}
// la variabile ServoDirection tende ad aumentare e superare il valore 3 per cui reimposto il tutto...
if (ServoDirection > 3 && once == 0)
{
// sposto il servo al centro
ServoDirection = 2;
// metto la variabile once = 1
once = 1;
}
potresti fare una cosa del genere, se non ti complica troppo la vita
Marcello
// **************************** ROUTINE PER LO SPOSTAMENTO SEQUENZIALE DEL SERVO *****************************
// La logica è la seguente: all'avvio la variabile once è uguale a 0 ed il servo si trova in posizione centrale,
// ovvero ServoDirection = 2, quindi si avvierà il comando per spostare il servo a destra (ServoDirection ++).
// Quando il servo si trova tutto a destra (ServoDirection = 3) la variabile once è sempre uguale a 0.
// Quando ServoDirection è > 3 il servo viene riportato in posizione centrale e la variabile once viene messa
// uguale a 1. Poichè once è uguale a 1 il servo si sposterà verso sinistra (ServoDirection --) mentre la variabile
// once viene riazzerata. Poichè once è uguale a 0 il servo si sposterà nuovamente verso destra
// Sequenza della routine:
// avvio routine: ServoDirection = 2 once = 0
// ServoDirection = 3 once = 0
// ServoDirection > 3 once = 0
// ServoDirection = 2 once = 1
// ServoDirection = 1 once = 0
// ServoDirection = 2 once = 0 e così via....
if (once == 0)
ServoDirection ++; // sposto il servo verso destra
else // se once = 1
{
// sposto il servo verso sinistra
ServoDirection --;
// e riazzero la variabile once
once =0;
}
// la variabile ServoDirection tende ad aumentare e superare il valore 3 per cui reimposto il tutto...
if (ServoDirection > 3 && once == 0)
{
// sposto il servo al centro
ServoDirection = 2;
// metto la variabile once = 1
once = 1;
}
potresti fare una cosa del genere, se non ti complica troppo la vita
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Ultima Modifica 9 Anni 7 Mesi fa da Pinna.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
9 Anni 7 Mesi fa #19
da toni
Risposta da toni al topic Collegare un pulsante su RC4
Ciao Marcello
molte grazie pe la spiegazione ed il suggerimento,
me lo studio e vediamo cosa riesco a fare,
poi vi saprò dire,
Toni
molte grazie pe la spiegazione ed il suggerimento,
me lo studio e vediamo cosa riesco a fare,
poi vi saprò dire,
Toni
Si prega Accedi o Crea un account a partecipare alla conversazione.
- toni
- Autore della discussione
- Elite Member
Riduci
Di più
- Messaggi: 279
- Ringraziamenti ricevuti 9
9 Anni 7 Mesi fa #20
da toni
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Risposta da toni al topic Collegare un pulsante su RC4
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- toni
- Autore della discussione
- Elite Member
Riduci
Di più
- Messaggi: 279
- Ringraziamenti ricevuti 9
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Login
© LaurTec 2006 - 2024