Help con arduino - BaroneRosso.it - Forum Modellismo

Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


 
 
Strumenti discussione Visualizzazione
Prev Messaggio precedente   Prossimo messaggio Next
Vecchio 22 marzo 18, 16:45   #4 (permalink)  Top
User
 
L'avatar di CarloRoma63
 
Data registr.: 08-08-2011
Residenza: Roma
Messaggi: 5.805
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
 

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
problema con arduino fabiano2007 Circuiti Elettronici 15 23 marzo 14 02:15



Tutti gli orari sono GMT +2. Adesso sono le 10:56.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002