realizzazione di un ascensore a 3 piani

Patrick_M:
non voglio il video, ti giuro che ci credo che non ti funzionava!!!

il problema è dello sketch che hai scritto e non del muovere ad un passo alla volta il motore

CHE E' LA STESSA COSA CHE FA LA LIBRERIA QUANDO LO FAI MUOVERE PER 68*68 PASSI

il motore si muove SEMPRE ad un passo per volta

te lo ripeto, probabilmente il delay(2) che ti avevo messo è esagerato oppure hai fatto qualche altro errore

#include <Stepper.h>
int pulsante0pin=2;
int pulsante1pin=3;
int pulsante2pin=4;
int microswitch0=5;
int microswitch1=6;
int microswitch2=7;

const int stepsPerRevolution = 32;
Stepper myStepper(stepsPerRevolution, 9, 11, 10, 12);





void setup() {
pinMode(pulsante0pin,INPUT);
pinMode(pulsante1pin,INPUT);
pinMode(pulsante2pin,INPUT);
pinMode(microswitch0,INPUT);
pinMode(microswitch1,INPUT);
pinMode(microswitch2,INPUT);



}

void loop() {

  if (digitalRead(microswitch0) == HIGH ) { //STATO SWITCH PIANO 0
      
      if (digitalRead(pulsante1pin) == LOW ) { //CHIAMATA P1
         
         while (!digitalRead(microswitch1)) {
            myStepper.step(1);
            delay(2);
         }
         
     } else if (digitalRead(pulsante2pin) == LOW) { //CHIAMATA P2
         
         while (!digitalRead(microswitch2)) {
            myStepper.step(1);
            delay(2);
         }
         
      }
  }
  
  else if (digitalRead(microswitch1) == HIGH) {

  
    if(digitalRead(pulsante0pin) == LOW )
         { //chiamata PT
         while(!digitalRead(microswitch0))  {
          myStepper.step(-1);
          delay(2);
           }
   }
    else if(digitalRead(pulsante2pin) == LOW)
    {
      while(!digitalRead(microswitch2)) 
      {
        myStepper.step(1);
        delay(2);
      }
    }
  }
  else if(digitalRead(microswitch2) == HIGH)
  {

    if(digitalRead(pulsante0pin) == LOW)
    {
      while(!digitalRead(microswitch0)) {
        myStepper.step(-1);
        delay(2);
      }
    }
    else if (digitalRead(pulsante1pin) == LOW)
    {
      while(digitalRead(microswitch1))
      {
        myStepper.step(-1);
        delay(2);
      }
    }
  }
}

tralasciando il delay(2)

infatti lo vedi che manca l'istruzione

myStepper.setSpeed(600)

che ti avevo detto di aggiungere come ultima riga del setup

ma un minimo di verifica no?

e poi ti avevo anche detto di abbassare appunto il delay(2) con delayMiscoseconds(10) e probabilmente anche questo è inutile anzi sicuramente si potrebbe levare qualsiasi delay, ci pensa la libreria ad aggiungerli

riproverò sinceramente non Avevo notato il set.Speed... speriamo sia quello

Patrick_M:
infatti lo vedi che manca l'istruzione

myStepper.setSpeed(600)

che ti avevo detto di aggiungere come ultima riga del setup

ma un minimo di verifica no?

e poi ti avevo anche detto di abbassare appunto il delay(2) con delayMiscoseconds(10) e probabilmente anche questo è inutile anzi sicuramente si potrebbe levare qualsiasi delay, ci pensa la libreria ad aggiungerli

testato... risolto il problema della velocità sale e scende come faceva con il mio sketch però ha un'altro problema
l'ho simulato senza cabina chiudendo e aprendo i microsw a mano e spingendo i pulsanti
fa una cosa strana che non so come sistemarla:
premendo il pulsante il motore non va in funzione finché non il microsw di piano faccio esempio piano0 MicroSw0 HIGH
finché questo non diventa LOW l'ascensore non si muove.....
ciò nella realtà con la cabina non succederà mai perché questa starà sempre al piano 0 e spingerà sempre il microsw0 quindi ti troverai sempre nel caso0 (MICROSW0 HIGH) e il sistema non funziona perché spingendo il pulsante non fa niente finche il microsw0 diventa LOW aperto.....
mi sono spiegato?

ti sei spiegato ma vuol dire che hai fatto qualche errore nello sketch

if (digitalRead(microswitch0) == HIGH ) {           //se PIANO 0
      if (digitalRead(pulsante1pin) == LOW ) {      // se CHIAMATA P1
         while (!digitalRead(microswitch1)) {      // fino a che switch piano1 è off
            myStepper.step(1);                       // fai un passo  
         }                                                                     
     }

non centra nulla lo switch di piano 0 (una volta che è entrato nell'if)

strano.....
e avevo un'altro problema per alimentare il motore passo passo in modo esterno da arduino come posso fare?
5v max corrente 400mA ?
perché volevo liberare i 5v di arduino per i pulsanti e microsw

Tassativo non alimentare motori con Arduino!

ti prendi un normalissimo alimentatore di quelli per ricaricare i cellulari che abbia in uscita (almeno) 600 mA e lo usi per il motore

ah perfetto.... oppure potrei sfruttare la porta usb per arduino
usare i 5v per microsw led e pulsanti
e sfruttare VIN per il motore che ne pensi ?

no, vin per il motore no! Meglio alimentarlo a parte, tutto il resto si

il problema è che non so come alimentarlo
perché da quello che ho letto vuole 5v max 400mA
le pile arrivano a 4.8V e ok ma il problema è l'amperaggio che stiamo sopra i 550mA come posso fare?

che pile hai?
cioè: 550mAh sono un valore strano per le pile
comunque non è un problema se la CAPACITA' delle pile è superiore all'ASSORBIMENTO del carico
cambiano anche le unità di misura.........
spiega bene che pile hai

tanto per chiarire...

simonsdec:
il problema è che non so come alimentarlo

questo devi leggerlo (parafrasando Totò)

perché da quello che ho letto vuole 5v max,;:. 400mA

cioè al massimo 5 V e come minimo 400 mA

le pile arrivano a 4.8V e ok ma il problema è l'amperaggio che stiamo sopra i 550mA come posso fare?

vuole 5v e 400mA max
devo ancora cercarle su internet le pile ma ho visto che vanno tutti dai 4.8v e minimo 550mAh ma ho paura che si fonda il motore

Il motore si fonda sui campi magnetici, tranquillo
Le tue fondazioni in elettrotecnica invece?

quindi Va bene qualsiasi amperaggio ?

Quanto deve durare la dimostrazione?
Compreso il tempo di collaudo e sviluppo?

max max 5m penso la dimostrazione ma a tenermi largo perché da quello che ho capito tutta la tesina deve durare 10-12m

il motore hai capito quale ho?

No, non so che motore hai
Per un quarto d'ora a 400 mA ti bastano pile da 100 mAh
Consiglio: stai largo, sono sicuro che dovrai provare parecchio
Stai molto largo, perché mi sembra che il tuo debito tecnico sia elevato

io batterie di queste tipo non le trovo

Allora Santo alimentatore. ..