salve a tutti, qlkuno saprà dai miei post precedenti ke stavo cercando di automatizzare una lavatrice qst è il risultato, se possibile mi date qlke consiglio logico-strutturale per migliorarlo?
lo switch case è usato per la selezione di 6 diversi programmi di lavaggio.
grazie
//Uscite comandate con relè
#define giradx 11
#define girasx 12
#define carico 13
#define scarico 10
#define centrifuga 9
#define acquacalda 8
//ENTRATE DIGITALI
#define sveglia 3
#define livelloalto 7
#define livellobasso 6
#define okacquacalda 5
#define programma1 14
#define programma2 15
#define programma3 16
#define programma4 17
#define programma5 18
#define programma6 19
int statolivellobasso=0;
int statolivelloalto=0;
int permessocentrifuga=0;
int permessoacquacalda=0;
int selettore=0;
int statosveglia=0;
void setup() {
///DEFINIZIONE NOMI DEI PIN
attachInterrupt(1, blink, FALLING);
pinMode(giradx, OUTPUT);
pinMode(girasx, OUTPUT);
pinMode(carico, OUTPUT);
pinMode(scarico, OUTPUT);
pinMode(centrifuga, OUTPUT);
pinMode(acquacalda, OUTPUT);
pinMode(livellobasso, INPUT);
pinMode(livelloalto, INPUT);
pinMode(okacquacalda,INPUT);
pinMode(programma1,INPUT);
pinMode(programma2,INPUT);
pinMode(programma3,INPUT);
pinMode(programma4,INPUT);
pinMode(programma5,INPUT);
pinMode(programma6,INPUT);
}
void loop() {
int programmaselezionato=0;
selettore=0;
programmaselezionato = selezioneprogramma();
// questo swich-case mi permette la selezione del programma da dare, ma se con break esco dallo switch ritorno alla funzione che seleziona il programma da fare
switch (programmaselezionato) {
//PRELAVAGGIO//
case 1:
do {
digitalWrite(carico, HIGH);
statolivellobasso=digitalRead(livellobasso);
}
while (statolivellobasso== HIGH);
digitalWrite(carico, LOW);
lavaggio_un_minuto();
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
scaricoacqua();
digitalWrite (scarico,LOW);
delay(10000);
break;
//PROGRAMMA 2//
case 2:
do {
digitalWrite(carico, HIGH);
statolivellobasso=digitalRead(livellobasso);
}
while (statolivellobasso== HIGH);
digitalWrite(carico, LOW);
lavaggio_un_minuto();
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
do {
digitalWrite(acquacalda, HIGH);
permessoacquacalda=digitalRead(okacquacalda);
}
while (permessoacquacalda == HIGH);
digitalWrite(acquacalda,LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 1; contatorelavaggi++){
lavaggio_un_minuto();
}
scaricoacqua();
centrifuga_un_minuto();
do {
digitalWrite(carico, HIGH);
statolivelloalto=digitalRead(livelloalto);
}
while (statolivelloalto== HIGH);
digitalWrite(carico, LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 2; contatorelavaggi++){
lavaggio_un_minuto();
}
scaricoacqua();
centrifuga_un_minuto();
do {
digitalWrite(carico, HIGH);
statolivelloalto=digitalRead(livelloalto);
}
while (statolivelloalto== HIGH);
digitalWrite(carico, LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 2; contatorelavaggi++){
lavaggio_un_minuto();
}
scaricoacqua();
centrifuga_un_minuto();
do {
digitalWrite(carico, HIGH);
statolivelloalto=digitalRead(livelloalto);
}
while (statolivelloalto== HIGH);
digitalWrite(carico, LOW);
for (int contatorelavaggi=0; contatorelavaggi <= 2; contatorelavaggi++){
lavaggio_un_minuto();
}
scaricoacqua();
centrifuga_quattro_minuti();
delay(10000);
break;