Pages: [1]   Go Down
Author Topic: ciclo while con due pulsanti  (Read 740 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

problema: ho due pulsanti, fintanto che premo (e tengo premuto) il pulsante 1 l'oggetto fa una cosa, se premo (e tengo premuto) il pulsante 2 l'oggetto ne fa un'altra, se non premo alcun pulsante l'oggetto non fa nulla...

con un solo pulsante è sufficiente un semplice ciclo while:
Code:
while(digitalRead(pulsante1) == HIGH){
    fai qualcosa;
}
come strutturo invece il codice per il problema sopra descritto, bastano due while in serie (purtroppo fino a sabato non ho arduino sotto mano per verificare)? e come evito problemi nel caso premessi entrambi in pulsanti?

Grazie a chiunque volesse aiutarmi...
Logged

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hai dato troppo poche "notizie2 su quello che vuoi fare,  e se al rilascio del pulsante tutto deve tornare allo stato precedente,

es: se fai 
 while (digitalRead (1)== HIGH )  digitalWrite (13,HIGH);

 in caso che premi il pulsante si accende il led (sull'arduino) ma poi rimane sempre acceso  se non scrivi qualcosa che al rilascio di un pulsante lo fa spegere.
Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

uhmm... quel "fai qualcosa" è riferito ad uno stepper, se premo il pulsante A ruota in senso orario, se premo il pulsante B in senso antiorario, se non premo alcun pulsante (o rilascio quello che sto premendo) si ferma e se ne sta fermo...
Logged

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 (per pilotare uno stepper non  basta solo l'arduino ma ci va una scheda aggiuntiva  sperando che non ci confondiamo con un servo)

di solito  qualsiasi schedina che pilota uno stepper  ha minimo due ingressi di comando  STEP e DIR

sullo STEP ci va un impulso che fa girare lo stepper di un poco  (di solito gli stepper con 200 impulsi fanno una rotazione completa)

DIR se viene messo a massa fa girare in un senso se viene messo al piu fa girare nell'altro senso

capisce che se ad ogni premuta di pulsante il motore si muove quasi nulla


una cosa che potresti fare (mi e venuta a mente al volo) è modificare il programmino


Blink without Delay  facendolo lampeggiare velocemente  (e da quio ricavi in treno di impulsi

con 2 if dovrebbe funzionare senza scomodare librerie
Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

lo stepper si muove senza problemi (ho uno shield) avanti ed indietro... vorrei però controllarne i movimenti tramite pulsanti
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21871
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Basta fare 2 while con ciascuna uno dei 2 pulsanti.

La cosa che non hai considerato é cosa deve fare lo sketch se premi entrambi i pulsanti? Entrambi in questo caso vuol dire anche con mezzo secondo di distanza.

Ciao Uwe
« Last Edit: October 29, 2012, 03:25:24 pm by uwefed » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, quindi dici che due while in serie vanno bene...
il discorso dei pulsanti premuti contemporaneamente è più per mania di controllo che non per reali esigenze... immagino che appunto prenda il sopravvento il pulsante premuto per primo, magari per pochi decimi di secondo...
Logged

Pages: [1]   Go Up
Jump to: