descrizione nuovo progetto e codice da cui partire 5.05

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
Wonderjack996
Date:
Tue Sep 05 11:58:49 2017 +0000
Commit message:
descrizione nuovo progetto e codice da cui partire

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 89b0715e5bdf main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Sep 05 11:58:49 2017 +0000
@@ -0,0 +1,79 @@
+/*-----NEW PROJECT-----*/
+/*Bisogna realizzare utilizzando la scheda ST nucleo F401RE un dispositivo che succesivamente verrà montato su varie macchine presenti
+nel laboratorio di affidabilità.
+Il compito di tale dispositivo è quello di verificare se la macchina sta lavorando oppure no e comunicare all'operatore lo stato della
+macchina. 
+Per fare ciò il dipositivo viene collegato a un rele presente nella macchina. La scheda st deve verifiare lo stato di tale rele e comunicare
+all'operatore attraverso una shield ethernet lo stato della macchina.
+Il dispositivo lavora solo a macchina accesa.*/
+
+/*gli stati che può assumere la macchina sono due:
+- RUN macchina accesa e operativa
+- IDLE macchina accesa ma non operativa*/
+
+
+/*-----LIBRERIE-----*/
+    #include "mbed.h"
+/*-----------------*/
+
+/*-----COSTANTI-----*/
+    #define MIN_CONT 30 //specifico il numero di volte che ripeterò il processo di verifica dello stato del bottone/rele
+    
+    #define TIME 100
+    
+    #define NORMAL_OPEN 0 //specifico un valore da dare allo stato fisico "normalmente aperto"
+    
+    #define NORMAL_CLOSE 1 //specifico un valore da dare allo stato fisico "normalmente chiuso"
+    
+    /*a seconda del caso devo decidere se lo stato di RUN corrisponde allo stato fisico "normalmente aperto" oppure
+      "normalmente chiuso" specificandolo qui sotto*/
+    #define RUN NORMAL_OPEN //<---
+/*------------------*/
+
+/*-----VARIABILI-----*/
+    DigitalIn button(USER_BUTTON); //istanzio oggetto "button" per utilizzare il bottone/rele
+    
+    DigitalOut myled(D11); //istanzio ogetto "myled" per gestire l'accensione e lo spegnimento di un led
+    
+    /*variabili intere dove conto per quante volte di seguito lo stato del bottone/rele rimane uguale.
+      Se lo stato del bottone/rele è in RUN allora aumento la variabile "contRun", al contrario aumento la variabile 
+      "contIdle" */
+    int contRun = 0, contIdle = 0;
+    
+    /*flag che mi impediscono di comunicare lo stesso risultato più volte. Una volta comunicato lo stato di RUN
+      il flag dedicato (flagRun) passerà al valore "false" e non potrà più essere comunicato lo stato RUN prima
+      di ripassare dallo stato IDLE, idem dopo la comunicazione dello stato IDLE*/
+    bool flagRun = true, flagIdle = true;
+/*-------------------*/
+
+int main() {
+    
+    while(true) { //attivo un ciclo infinito
+        if( button == RUN ){ //stato RUN
+            contRun++; //aumento di 1 la variabile "contRun"
+            contIdle = 0; /*una volta ritornato nello stato di RUN setto a 0 la variabile "contaIdle" in modo da
+                            ripartire da capo una volta tornato in stato IDLE*/
+                            
+            /*una volta che la variabile "contaRun" raggiunge un valore minimo fissato dalla costate MIN_CONT allora considero
+              lo stato di RUN come attendibile e lo posso comunicare a utente.
+              dopo averlo comunicato la prima volta il "flagRun" passa al valore "false" e non verrà ritrasmesso prima di
+              passare nuovamente allo stato IDLE*/
+            if( contRun >= MIN_CONT && flagRun ){ 
+                flagRun = false; //setto "flagRun" a "false"
+                flagIdle = true; //setto "flagIdle" a "true"
+                myled = 1; /*comunico a utente che la macchina è in stato di RUN con l'accensione di un led.
+                             Successivamente lo stato sarà comunicato al PC utilizzando una scheda di rete*/
+            }
+        }   
+        else{ //stato IDLE, funzionamento logico uguale allo stato RUN
+            contRun = 0;
+            contIdle++;
+            if( contIdle >= MIN_CONT && flagIdle ){
+                flagRun = true;
+                flagIdle = false;
+                myled = 0;
+            }
+        }
+        wait_ms(TIME); //tra una lettura del bottone/rele e l'altra attendo un TOT tempo specificato nella costante TIME
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r 89b0715e5bdf mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Sep 05 11:58:49 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/a330f0fddbec
\ No newline at end of file