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:06   #3 (permalink)  Top
User
 
L'avatar di CarloRoma63
 
Data registr.: 08-08-2011
Residenza: Roma
Messaggi: 5.805
Citazione:
Originalmente inviato da pavmail Visualizza messaggio
Salve a tutti.

Mi servirebbe gentilmente una dritta su come realizzare un programmino che mi permetta di fare una cosa abbastanza banale, ma visto che per me è la prima volta che prendo in mano questa scheda e il suo software....... non ne vengo fuori.

In pratica devo applicare 2 finecorsa ad un motore che funzionano con questa logica:

SW1=OFF SW2=OFF -> Motore acceso
SW1=ON SW2=OFF -> Motore acceso
SW1=ON SW2=ON -> Motore fermo

A questo punto il motore deve ripartire quando entrambi ritornano in OFF.

Allego anche l'immagine esplicativa: in pratica devo riempire un tubo fino ad un certo livello, fermare il motore e fare in modo che riparta quando il tubo si svuota.

Grazie per l'attenzione.

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
boolean Stato1;
boolean Stato2;
boolean Stato;

// definisco quali sono i pin di ingresso per i due sensori
const int SW1 = 2;
const int SW2 = 3;
// 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, implementando uno XOR ESCLUSIVO
// tabella della verità:
// Stato1 Stato2 Stato
// Vero Vero Vero
// Vero Falso Falso
// Falso Vero Falso
// Falso Falso Vero

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

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


Carlo

EDIT: No, ho sbagliato. Aspetta che faccio le correzioni
__________________
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