Discussione: Help con arduino
Visualizza messaggio singolo
Vecchio 22 marzo 18, 12:39   #2 (permalink)  Top
madqwerty
User
 
L'avatar di madqwerty
 
Data registr.: 18-05-2013
Residenza: Chivasso (TO)
Messaggi: 2.352
ti serve una struttura "switch-case" https://www.arduino.cc/reference/en/...re/switchcase/ che rilevi le condizioni (i 2 stati dei finecorsa e lo stato del motore) e ne imponga di nuove, quando necessario e in accordo alla tua logica di funzionamento.

la struttura deve essere eseguita ciclicamente, o alla massima velocità nel ciclo while della funzione main(), oppure temporizzata agganciandola a un timer.

Switch-case richiede di funzionare con una sola variabile ma tu ne hai 3 e dovresti "impacchettarle" per ridurle a una (per gestire le tue condizioni ti servono 3 bit e qualsiasi variabile ne contiene minimo 8 ) la soluzione più semplice, anche se molto meno elegante, è una struttura if-else annidata https://www.arduino.cc/reference/en/...tructure/else/

esempio scritto in linguaggio "free"

if ((SW1==OFF) and (SW2==OFF) and (StatoMotore==SPENTO))
..{
....AccendiMotore();
....StatoMotore = ACCESO;
..}
else
..{
....if ((SW1==ON) and (SW2==ON) and (StatoMotore==ACCESO))
......{
........SpegniMotore();
........StatoMotore = SPENTO;
......}
..}


Per cosa ho capito delle tue specifiche, la tua seconda condizione "SW1=ON SW2=OFF -> Motore acceso" è ininfluente quindi non implementata, a meno che il motore non debba passare da spento ad acceso anche sul verificarsi di questa (sotto hai dettato una sola condizione per accendere il motore, e in elenco hai una sola condizione che lo spenga )
__________________
v911 - mCPX - PRȎTOS - TRex 450 500 550
A959B - Q32 - DF03 - LRP TC2 - XB4 - M06 - B5(M) - T8E - X1 - T4 - XB2C - GF01
madqwerty non è collegato   Rispondi citando