Discussione: Help con arduino
Visualizza messaggio singolo
Vecchio 22 marzo 18, 17:45   #2 (permalink)  Top
CarloRoma63
User
 
L'avatar di CarloRoma63
 
Data registr.: 08-08-2011
Residenza: Roma
Messaggi: 5.806
Citazione:
Originalmente inviato da CarloRoma63 Visualizza messaggio
Apparentemente devi realizzare un sistema che non sia solo sensibile allo stato attuale dei sensori ma anche alla loro storia, ma semplificando non ne hai bisogno: devi semplicemente spegnere il motore quando entrambi vanno a ON e riaccenderlo solo quando entrambi vanno ad OFF.


Eccoti il codice che dovrebbe fare quello che ti occorre. Non l'ho testato ma il compilatore non mi ha dato errori.


// definisco le variabili di lavoro
boo.....
}


Carlo

EDIT: No, ho sbagliato. Aspetta che faccio le correzioni

Questo dovrebbe funzionare, in effetti dovevo tenere conto dello stato pregresso del motore ...


// definisco le variabili di lavoro
boolean Stato1;
boolean Stato2;
boolean StatoMotore;

// definisco quali sono i pin di ingresso per i due sensori
const int SW1 = 2; // sensore basso
const int SW2 = 3; // sensore alto
// definisco il pin di uscita per comandare il motore
const int PinMotore = 4;


void setup() {
// definisco in input i pin di ingresso per i due sensori
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);

// definisco in output il pin di uscita per il motore
pinMode(PinMotore, OUTPUT);

// all'avvio il motore è spento
digitalWrite(PinMotore, LOW);
}

void loop() {
// Leggo lo stato dei due sensori
Stato1 = digitalRead(SW1);
Stato2 = digitalRead(SW2);

//Calcolo lo stato del motore,
// tabella della verità:
// Stato1 Stato2 StatoMotore StatoMotore Risultante
// Falso Falso Falso Vero
// Falso Falso Vero Vero
// Falso Vero Falso Condizione non prevista
// Falso Vero Vero Condizione non prevista
// Vero Falso Falso Falso
// Vero Falso Vero Vero
// Vero Vero Falso Falso
// Vero Vero Vero Falso

// semplificando con le mappe di karnaugh ottengo

StatoMotore = (!Stato1 && !Stato2) || (Stato1 && !Stato2 && StatoMotore);

if (StatoMotore){
digitalWrite(PinMotore, HIGH);
}else{
digitalWrite(PinMotore, LOW);
}
}

Carlo
__________________
Dai un pesce ad un uomo e lo avrai sfamato per un giorno, insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
I miei modelli: http://www.youtube.com/results?search_query=carloroma63
CarloRoma63 non è collegato   Rispondi citando