< Segue da Arduino N° 43 |
Un misuratore analogico di livello si può implementare con il vecchio sensore 4-20 mA, che ha le sue peculiarità.
In alternativa, si può realizzare un misuratore di livello con tecnica digitale; quello qui presentato rileva 4 livelli ed indica anche una "riserva", quando il livello è al di sotto di un quarto di serbatoio.
/* ----------------------------- Inizio Programma ---------------------------------------
Sensore digitale di livello, a cinque stati: 0%, 25%, 50%, 75%, 100%
I pulsanti vanno sostituiti con 4 interruttori di livello, a galleggiante.
by prof. Achille De Santis V4 del 12-02-2020.
*/
// ------------------ I/O --------------------------
#define U0 7 // livello inferiore al 25%
#define U1 6 // livello 25%
#define U2 5 // livello 50%
#define U3 4 // livello 75%
#define U4 3 // livello 100%
// ------------------ Sensori -------------------
#define P1 13 // livello 25%
#define P2 12 // livello 50%
#define P3 11 // livello 75%
#define P4 10 // livello 100%
// -------------------------------------------------
int L;
void intestazione()
{ // Serial.begin(9600); // velocità seriale
Serial.println(" ________ Tecnatron Creation ___________");
Serial.println(" Sensore digitale di livello --");
Serial.println(" prof. Achille De Santis - 27-10-2019 --------");
}
void livello(int u) {Serial.print("Serbatoio: "); digitalWrite(u, HIGH);} // indicatore di livello
void setup()
{
pinMode(P1, INPUT); // interruttori di livello, a galleggiante.
pinMode(P2, INPUT);
pinMode(P3, INPUT);
pinMode(P4, INPUT);
pinMode(U0, OUTPUT); // uscite per i led di livello o per attuatori
pinMode(U1, OUTPUT);
pinMode(U2, OUTPUT);
pinMode(U3, OUTPUT);
pinMode(U4, OUTPUT);
Serial.begin(9600);
intestazione();
}
// ------------------------------------------------------------------------------------------------------
void loop()
{
digitalWrite(U0, LOW); L=digitalRead(P4);
if (L==HIGH) {Serial.println("100%"); livello(U4); }
else
{digitalWrite(U4, LOW); L=digitalRead(P3);
if(L==HIGH) {Serial.println("75%"); livello(U3); }
else
{ digitalWrite(U3, LOW); L=digitalRead(P2);
if(L==HIGH) {Serial.println("50%"); livello(U2); }
else
{ digitalWrite(U2, LOW); L=digitalRead(P1);
if(L==HIGH) {Serial.println("25%"); livello(U1); }
else
{
digitalWrite(U1, LOW);
Serial.println("quasi vuoto"); livello(U0);
}
}
}
}
delay(500);
}
// ----------------------------- Fine Programma ---------------------------------------
Sensore digitale di livello, V4
> Arduino N° 45
Sensore digitale di livello, a cinque stati: 0%, 25%, 50%, 75%, 100%
I pulsanti vanno sostituiti con 4 interruttori di livello, a galleggiante.
by prof. Achille De Santis V4 del 12-02-2020.
*/
// ------------------ I/O --------------------------
#define U0 7 // livello inferiore al 25%
#define U1 6 // livello 25%
#define U2 5 // livello 50%
#define U3 4 // livello 75%
#define U4 3 // livello 100%
// ------------------ Sensori -------------------
#define P1 13 // livello 25%
#define P2 12 // livello 50%
#define P3 11 // livello 75%
#define P4 10 // livello 100%
// -------------------------------------------------
int L;
void intestazione()
{ // Serial.begin(9600); // velocità seriale
Serial.println(" ________ Tecnatron Creation ___________");
Serial.println(" Sensore digitale di livello --");
Serial.println(" prof. Achille De Santis - 27-10-2019 --------");
}
void livello(int u) {Serial.print("Serbatoio: "); digitalWrite(u, HIGH);} // indicatore di livello
void setup()
{
pinMode(P1, INPUT); // interruttori di livello, a galleggiante.
pinMode(P2, INPUT);
pinMode(P3, INPUT);
pinMode(P4, INPUT);
pinMode(U0, OUTPUT); // uscite per i led di livello o per attuatori
pinMode(U1, OUTPUT);
pinMode(U2, OUTPUT);
pinMode(U3, OUTPUT);
pinMode(U4, OUTPUT);
Serial.begin(9600);
intestazione();
}
// ------------------------------------------------------------------------------------------------------
void loop()
{
digitalWrite(U0, LOW); L=digitalRead(P4);
if (L==HIGH) {Serial.println("100%"); livello(U4); }
else
{digitalWrite(U4, LOW); L=digitalRead(P3);
if(L==HIGH) {Serial.println("75%"); livello(U3); }
else
{ digitalWrite(U3, LOW); L=digitalRead(P2);
if(L==HIGH) {Serial.println("50%"); livello(U2); }
else
{ digitalWrite(U2, LOW); L=digitalRead(P1);
if(L==HIGH) {Serial.println("25%"); livello(U1); }
else
{
digitalWrite(U1, LOW);
Serial.println("quasi vuoto"); livello(U0);
}
}
}
}
delay(500);
}
Simulazione:
Sensore digitale di livelloSensore digitale di livello, V4
Argomenti correlati:
> Arduino N° 45
Nessun commento:
Posta un commento