Una bottiglia viene posta sotto un pistone che combacia con il collo della bottiglia sigillandola.
Un flusso di aria compressa viene in essa iniettata finchè la pressione è uguale a 1023, l'iniettore d'aria si chiude.
Dopo un paio di secondi si misura la pressione interna della bottiglia.
Se è inferiore a quella di riferimento di 500 ( o impostabile tramite TRIMMER) c'è stata una perdita quindi la bottiglia ha qualche foro mentre se non c'è stato calo di pressione la bottiglia è integra.
Nota sull'uso del delay: il loop si blocca ma durante questo tempo di blocco Arduino non deve svolgere altri operazioni per cui è inutile complicarsi la vita usando la funzione millis con laboriose righe di codice.
# define PRESSOMETRO A0 // # define TRIMMER A1 # define START 3 # define INIETTORE 4 # define SCARTA 5 # define PISTONE 6 long ValPressione = 0; long ValRif= 500; void setup() { pinMode(PRESSOMETRO, INPUT); //pinMode(TRIMMER, INPUT); pinMode(START, INPUT); pinMode(INIETTORE, OUTPUT); pinMode(SCARTA, OUTPUT); pinMode(PISTONE, OUTPUT); Serial.begin(9600); Serial.println(" Premi START per simulare la presenza della bottiglia"); } void loop() { int valoreSTART = digitalRead(START); if (valoreSTART == HIGH) { Serial.println(" BOTTIGLIA IN POSIZIONE"); digitalWrite (PISTONE,HIGH); Serial.println(" "); Serial.println(" PISTONE GIU'"); Serial.println(" Il Pistone combacia con il collo della bottiglia"); delay(5000); digitalWrite(INIETTORE, HIGH); Serial.println(" "); Serial.println(" INIETTORE ON"); Serial.println(" Elettrovalvola compressore d'aria aperto."); Serial.println(" Portare A0 al max per simulare la pressione di prova."); delay (5000); ValPressione = analogRead(PRESSOMETRO); Serial.println(" "); Serial.print(" PRESSIONE INIETTATA "); Serial.println(ValPressione); // ValRif = analogRead(TRIMMER); Serial.print(" PRESSIONE RIFERIMENTO "); Serial.println(ValRif); delay(5000); if (ValPressione >= ValRif) { Serial.println(" "); digitalWrite(INIETTORE,LOW); Serial.println(" INIETTORE OFF"); Serial.println(" Portare A0 al Min. per simulare perdita di pressione."); Serial.println(" A0 rimane al MAX. per simulare la NON perdita di pressione. "); delay(5000); ValPressione = analogRead(PRESSOMETRO); Serial.println(" "); Serial.print(" PRESSIONE MISURATA "); Serial.println(ValPressione); //ValRif = analogRead(TRIMMER); Serial.print(" PRESSIONE RIFERIMENTO "); Serial.println(ValRif); delay(5000); if (ValPressione < ValRif) { digitalWrite(SCARTA,HIGH); Serial.println(" "); Serial.println(" BOTTIGLIA SCARTATA"); Serial.println(" PISTONE SU"); } if (ValPressione >=ValRif) { digitalWrite(PISTONE ,LOW); Serial.println(" "); Serial.println(" BOTTIGLIA OK"); Serial.println(" PISTONE SU"); delay (5000); }}} }