allora provando a costruire un codice da 0
facciamo ad esempio ho 3 piani
piano 0 piano 1 piano 2
con la funzione if io devo andare a calcolare tutti i casi possibili di dove si possa trovare il piano giusto?
che tradotto in arduino sarebbe
//variabili
pt=0
pt1=0
pt2=0
if(pt=0)
pt=0
else if pt1=0
pt=0
else if pt2=0
pt=0//
oppure con la funzione switch/case
io vorrei dire al computer che l'ascensore deve stare al piano 0 e anche negli altri 2 casi l'ascensore deve rimanere al piano 0 ha senso quello che ho scritto dal punto di vista del codice=
Prima di scrivere una singola riga di codice, devi definire chiaramente, a livello logico, il funzionamento dell'automazione dell'ascensore.
Detto in parole povere, è necessario che elabori un progetto su carta (o su file di testo) di quello che vuoi fare.
Se tu per primo non hai bene in mente il quadro generale del progetto, come farai a spiegarlo ad altri nei dettagli o anche solo a realizzare qualcosa di sensato e su cui hai pieno controllo?
Pertanto mi permetto di consigliarti quanto segue:
1 - Scrivi un elenco delle operazioni che deve eseguire l'automazione.
Esempio:
a- L'utente preme in alternativa uno dei tre pulsanti A, B, C, ne viene memorizzata la premuta, e si accende la spia di prenotazione
b- E' stato premuto un tasto? Se sì continua, altrimenti rimani in attesa di prenotazione.
c- L'ascensore è fermo e frenato, c'è una sola prenotazione in corso, e si trova ad uno qualsiasi dei 3 piani (finecorsa di un qualunque piano =1)?
d- Se sì, continua. Altrimenti segnala malfunzionamento con una spia rossa e spegni la spia di prenotazione (memorizzazione azzerata). Una volta risolto il guasto premi il tasto di RESET, spegni la spia rossa, e torna al punto a.
e- Si chiude la porta della cabina, il freno viene disazionato, e viene comandata la salita o la discesa dell'ascensore al piano prenotato
f- La cabina è arrivata a destinazione entro il tempo di Timeout (fincorsa del piano prenotato =1)?
g- Se sì, continua. Altrimenti segnala malfunzionamento con una spia rossa e spegni la spia di prenotazione (memorizzazione azzerata). Una volta risolto il guasto premi il tasto di RESET, spegni la spia rossa, e torna al punto a.
h- Quando il finecorsa del piano in cui è stata effettuata la prenotazione è =1, aziona il freno e dopo un tempo di assestamento apri le porte. Infine azzera la memorizzazione della premuta e spegni la spia di prenotazione.
- ecc. ecc.
Se ti viene più comodo, puoi fare un diagramma di flusso per rappresentare la sequenza succitata.
Attenzione: l'esempio l'ho scritto a braccio cioè senza rifletterci troppo, non è completo, e potrebbero esserci degli errori o delle mancanze. Quindi spetta a te completarlo e aggiungere eventuali condizioni di sicurezza o altre funzioni che diano un valore aggiunto al progetto (ulteriori lampadine, luci di illuminazione, sirene, ecc.).
2 - Definisci gli ingressi (pulsanti, finecorsa) e le uscite (motore di salita/discesa, spie luminose) che collegherai.
3 - Prevedi un pulsante di emergenza (estop) per bloccare il movimento dell'ascensore in caso di problemi. Il pulsante deve essere un connessione hardware esterna alla logica dell'Arduino, serve principalmente a togliere alimentazione ai motori per fermarli.
3 - Disegna uno schema elettrico di collegamenti all'Arduino
4 - Con lo schema elettrico sotto mano svolgi i necessari cablaggi
5 - Crea un prototipo dell'automazione dell'ascensore
6 - Scrivi il programma e caricalo nell'Arduino
7 - Verifica in tutti i modi possibili che il programma funzioni come hai previsto e se trovi errori logici, correggili (fase di debug)
Usa nomi esplicativi per descrivere le variabili utilizzate nel programma. Per esempio, le spie luminose potrebbero essere chiamate con nomi del tipo: SpiaPrenotazPiano, SpiaRossaEstop.
Commenta il più possibile il programma usando i commenti inline, cioè commenti che si possono applicare sulla stessa riga in cui è scritta un'istruzione.
int pippo; //Tutto ciò che si trova dopo le due barre è un commento
I commenti ti aiutano anche a ricordare a distanza di tempo il significato del codice che hai scritto. Poi se vuoi presentare il progetto come tesina di fine anno, beh direi che è superfluo dire che aiutano una persona esterna ad avere un'idea di quello che fanno le istruzioni.
Per il resto di quello che chiedi, ti dico onestamente che ci ho capito poco. Dovresti per favore, e non prenderla come una critica o un rimprovero, sforzarti di spiegarti meglio e in un italiano comprensibile.
Il programma che hai postato contiene gravi errori di sintassi e concettualmente non ha granché significato. Perché tre tasti diversi devono far arrivare l'ascensore a un solo piano? Cioè una volta che arrivi a quel piano vuol dire che l'ascensore non si muove più, che senso ha?