Sei sulla pagina 1di 3

#define PM pinMode }

#define DW digitalWrite else


#define AR analogRead {
timer++;
#define PESO A0 }
#define DISTANZA A1 digitalWrite(NASTRO, 0); //nastro spento
#define NASTRO 3 digitalWrite(UGELLO, 0); //erogatore spento
#define UGELLO 4 }
#define START 5 break;
case 3:
byte stato, barattoli;//massimo 256 valori {
int timer;//da 0 a 1000 if (massa == 921)//Imax=28mA -> 5V -> R=5/0.028=180
-> 25mA*180ohm=4.5V -> 4.5/5*1023= 921bit
void setup() {
{ stato++;
pinMode(NASTRO, OUTPUT); }
pinMode(UGELLO, OUTPUT); digitalWrite(NASTRO, 0); //nastro spento
pinMode(START, INPUT_PULLUP);//bottone in logica digitalWrite(UGELLO, 1); //erogatore acceso
negativa timer = 0;
stato = 0; }
} break;
case 4:
void loop() {
{ if (timer == 1000)//passato 1 secondo
int massa = analogRead(PESO);//variabili locali per lettura {
degli ingressi stato++;
int distanza = analogRead(DISTANZA);//letture analogiche }
a 10 bit else
byte bottone = digitalRead(START); {
timer++;
switch (stato) }
{ digitalWrite(NASTRO, 0); //nastro spento
case 0: digitalWrite(UGELLO, 0); //erogatore spento
{ }
if (bottone == 0) break;
{ case 5:
stato++; {
} barattoli++;//incremento i barattoli effettuati
digitalWrite(NASTRO, 0); //fermo tutti gli attuatori if (barattoli == 150)//passato 150 barattoli
digitalWrite(UGELLO, 0); {
barattoli = 0; stato = 0;
timer = 0; }
} else
break; {
case 1: stato = 1;
{ }
if (distanza == 512)//distanza = 500mm se no blocco digitalWrite(NASTRO, 0); //nastro spento
condiz. = 2.5V = 512 digitalWrite(UGELLO, 0); //erogatore spento
//se blocco di condiz. 5V/3.5V = 1.42 = ampli -> timer = 0;
2.5V*1.42 = 3.57V -> 3.57*1023/5 = 731 bit }
{ break;
stato++; default:
} stato = 0;
digitalWrite(NASTRO, 1); //nastro in movimento }
digitalWrite(UGELLO, 0); //erogatore spento delay(1);//fisso a 1 ms la durata del ciclo
timer = 0; }
}
break;
case 2:
{
if (timer == 1000)//passato 1 secondo
{
stato++;
#define PM pinMode { giri = 0;
#define DW digitalWrite if (fine_c_start == 0)
#define DR digitalRead { stato_umidi++; }
byte stato_luci = 0, stato_umidi = 0, stato_temp = 0; DW(MOTA, 0);
byte giri = 0, ore = 8, minuti = 0, secondi = 0, milli = 0; DW(MOTI, 0);}
void setup() break;
{ case 2:
} {
void loop() if (fine_c_fine == 0)
{ if (milli == 999) {
{if (secondi == 59) stato_umidi++;
{secondi = 0; }
if (minuti == 59) else if (giri == 2)
{minuti = 0; {
if (ore == 23) stato_umidi = 0;
{ ore = 0; } }
else DW(MOTA, 1);
{ ore++; } DW(MOTI, 0);
} }
else break;
{ minuti++;} case 3:
} {if (fine_c_start == 0)
else { stato_umidi = 2;
{secondi++;} giri++;}
milli = 0; DW(MOTA, 0);
} DW(MOTI, 1);
else }
{milli++;} break;
switch (stato_luci) default:
{case 0: stato_umidi = 0;
{if (ore == 18 && minuti == 0) }
{stato_luci++;} switch (stato_temp)
DW(PINL1, 1); {
DW(PINL2, 0); case 0:
DW(PINL3, 0); } {
break; if (temperatura < 18)
case 1: {
{if (ore == 0 && minuti == 0) stato_temp++;
{stato_luci++;} }
DW(PINL1, 1); else if (temperatura > 22)
DW(PINL2, 1); {
DW(PINL3, 0); } stato_temp = 2;
break; }
case 2: DW(RISC, 0);
{if (ore == 5 && minuti == 0) DW(VENT, 0);}
{stato_luci++; } break;
DW(PINL1, 1); case 1:
DW(PINL2, 1); {
DW(PINL3, 1);} if (temperatura >= 20)
break; {
case 3: stato_temp = 0;
{if (ore == 8 && minuti == 0) }
{stato_luci = 0;}
DW(PINL1, 1); DW(RISC, 1);
DW(PINL2, 0); DW(VENT, 0);
DW(PINL3, 1); } }
break; break;
default: case 2:
stato_luci = 0;} {
switch (stato_umidi) if (temperatura <= 20)
{ { stato_temp = 0;}
case 0: DW(RISC, 0);
{ giri = 0; DW(VENT, 1);
if (umidità < 40) }
{stato_umidi++;} break;
DW(MOTA, 0); default:
DW(MOTI, 0);} stato_temp = 0;
break; }
case 1: delay(1);
}

Potrebbero piacerti anche