realizzazione di un ascensore a 3 piani

simonsdec:
riesco a comandare ciò che sto dicendo con la funzioni if else?

Quello che si fa normalmente è questo:

  • Si leggono gli ingressi (applicando un opportuno anti rimbalzo hard/soft se sono ingressi sporchi come i contatti meccanici).
  • In base alla situazione attuale (stato) e ai valori letti, si decide quali operazioni svolgere (compreso il comando delle uscite e l' eventuale aggiornamento della situazione attuale).
  • La situazione attuale (stato) si mantiene in apposite variabili usate per quello scopo (che vanno all'inizio impostate in modo da permettere una partenza regolare all'accensione o ad un reset).

Detto questo sono da decidere:

  • In quali situazioni (e sotto situazioni) si può trovare il sistema.
  • A quali eventi deve reagire in ogni situazione.
  • Quali operazioni deve compiere ad ogni reazione.

Tutto questo si fa con if/else e variabili usate opportunamente (come indicatori di stato, contatori ecc)

Il funzionamento/avanzamento del sistema è formato dalla continua rapida ripetizione di tutti i punti detti.

Se oltre a questo c'è anche da tenere conto del trascorrere del tempo (o si devono realizzare temporizzazioni), in ordine di precisione crescente si possono usare:

  • Piccoli delay nel loop principale per rallentarlo ad una frequenza nota (in modo da poterne contare "i passaggi".
  • La funzione millis per leggere il contatore di millisecondi interno.
  • Un modulo orologio RTC esterno.