//12 Novembre 2020 //xmas shield v1.0 // porting del codice scritto da gcroberto per arduino mega su esp32 devkit v1 e XMAs-shield v1 //http://www.presepioelettronico.it/Public/data/gcroberto/201412101615_201412422323_istruzioni%20da%20compilare%20con%20programma%20arduino.txt //http://www.presepioelettronico.it/forum/topic.asp?TOPIC_ID=6644&whichpage=3 #include int blue = 20; int green = 0; int red = 0; int casa = 255; int stelle = 200; int pinledred = 15; //led rosso GPIO 15 OUT1 int pinledgre = 4; //led verde GPIO 4 OUT2 int pinledblu = 18; //led blu GPIO 18 OUT3 int pinledcasa = 19; //led casette GPIO 19 OUT 4 int pinledstelle1 = 5; //led di potenza per tremolio stelle GPIO 5 OUT 5 int pinledstelle2 = 13; //led di potenza per tremolio stelle GPIO 13 OUT 6 int pinledstelle3 = 12; //led di potenza per tremolio stelle GPIO 12 OUT 7 int pinledstelle4 = 27; //led di potenza per tremolio stelle GPIO 27 OUT 8 int randNumber1 = 10;//variabile tremolio 1 int randNumber2 = 10;//variabile tremolio 2 int randNumber3 = 10;//variabile tremolio 3 int randNumber4 = 10;//variabile tremolio 4 int tempo = 10000; //tempo notte giorno in millisecondi di base unsigned int vTime = 1; //variabile che contiene la regolazione durata giorno notte int ttime = 60; //velocita passaggio notte giorno int lumstelle1 = 10; //variabile stelle 1 int lumstelle2 = 10; //variabile stelle 2 int lumstelle3 = 10; //variabile stelle 3 int lumstelle4 = 10; //variabile stelle 4 int lumstelle = 10; //variabile stelle int passo = 1; int relepompa = 26; //rele pompa cascata GPIO 26 OUT 9 int relenebula = 32; //rele nebulizzatore GPIO 32 OUT 10 int galleggiante = 33; //pin input galleggiante GPIO 33 IN 1 int relestate = 0; //stato rele // setting PWM properties const int freq = 490;//490 HZ arduino UNO/MEGA const int resolution = 8; //8 BIT const int ledred = 0; const int ledgre = 1; const int ledblu = 2; const int ledcasa = 3; const int ledstelle1 = 4; const int ledstelle2 = 5; const int ledstelle3 = 6; const int ledstelle4 = 7; void setup() { ledcSetup(ledred, freq, resolution); // CONFIGURAZIONE PWM ledcSetup(ledgre, freq, resolution); ledcSetup(ledblu, freq, resolution); ledcSetup(ledcasa, freq, resolution); ledcSetup(ledstelle1, freq, resolution); ledcSetup(ledstelle2, freq, resolution); ledcSetup(ledstelle3, freq, resolution); ledcSetup(ledstelle4, freq, resolution); ledcAttachPin(pinledred, ledred); ledcAttachPin(pinledgre, ledgre); ledcAttachPin(pinledblu, ledblu); ledcAttachPin(pinledcasa, ledcasa); ledcAttachPin(pinledstelle1, ledstelle1); ledcAttachPin(pinledstelle2, ledstelle2); ledcAttachPin(pinledstelle3, ledstelle3); ledcAttachPin(pinledstelle4, ledstelle4); Serial.begin(115200); pinMode (relepompa, OUTPUT); pinMode (relenebula, OUTPUT); pinMode (galleggiante, INPUT); digitalWrite(relepompa, LOW); digitalWrite(relenebula, LOW); Serial.println("setup done"); } void loop() { Serial.println("inizio loop"); //int sensorValue = analogRead(A0); int sensorValue = 512; //impostato un valore medio, arduino mega ha risoluzione 10bit vTime = tempo + (sensorValue * 40); for(passo = 1; passo < 455; passo++) // da notte a giorno { ledcWrite(ledblu,blue); ledcWrite(ledgre,green); delay(10); ledcWrite(ledcasa,casa); ledcWrite(ledstelle1,lumstelle1); ledcWrite(ledstelle2,lumstelle2); ledcWrite(ledstelle3,lumstelle3); ledcWrite(ledstelle4,lumstelle4); randNumber1 = random(20); randNumber2 = random(20); randNumber3 = random(20); randNumber4 = random(20); if (casa > 40 ) { lumstelle1 = casa -20 + randNumber1; lumstelle2 = casa -20 + randNumber2; lumstelle3 = casa -20 + randNumber3; lumstelle4 = casa -20 + randNumber4; } if (casa < 40) { lumstelle1 = casa - 1; lumstelle2 = casa - 1; lumstelle3 = casa - 1; lumstelle4 = casa - 1; } delay(ttime); if (casa > 1) casa-=1; if (blue <= 100) blue+=1; if (blue < 255 && red > 100 && green > 100) blue+=1; if (green <= 100 && red < 100 && blue >= 100 ) green+=1; ledcWrite(ledgre,green); delay(10); if (green > 100 && red < 255) red+=1; ledcWrite(ledred,red); delay(10); if (green < 255 && red > 100) green+=1; ledcWrite(ledgre,green); delay(10); } Serial.println("รจ giorno"); red = 255; green = 255; blue = 255; lumstelle = 0; ledcWrite(ledstelle1,lumstelle); ledcWrite(ledstelle2,lumstelle); ledcWrite(ledstelle3,lumstelle); ledcWrite(ledstelle4,lumstelle); Serial.println("stelle spente"); ledcWrite(ledblu,blue); ledcWrite(ledgre,green); ledcWrite(ledred,red); ledcWrite(ledcasa,casa); Serial.println("rgb al max"); casa=1; digitalWrite (relenebula, LOW); //relestate = digitalRead(galleggiante); //tolto controllo galleggiante relestate = HIGH; Serial.println(relestate); if (relestate == HIGH) { digitalWrite (relepompa, HIGH); } delay(vTime); Serial.println("inizio da giorno a notte"); for(blue = 255; blue >=1; blue-=1) // da giorno a notte { ledcWrite(ledblu,blue); ledcWrite(ledgre,green); ledcWrite(ledred,red); ledcWrite(ledcasa,casa); delay(ttime); if (green > 150 && blue < 200) green-=1; } blue=0; for (red = 255; red >=1; red-=1) { delay(ttime); if(green >=1) green-=1; if (red < 100) delay (ttime); ledcWrite(ledblu,blue); ledcWrite(ledred,red); ledcWrite(ledgre,green); ledcWrite(ledcasa,casa); ledcWrite(ledstelle1,lumstelle1); ledcWrite(ledstelle2,lumstelle2); ledcWrite(ledstelle3,lumstelle3); ledcWrite(ledstelle4,lumstelle4); randNumber1 = random(20); randNumber2 = random(20); randNumber3 = random(20); randNumber4 = random(20); if (casa > 20) { lumstelle1 = casa -20 + randNumber1; lumstelle2 = casa -20 + randNumber2; lumstelle3 = casa -20 + randNumber3; lumstelle4 = casa -20 + randNumber4; } if (casa <=20) lumstelle = 0; if (casa < 255) casa+=1; if (red < 10) blue+=1; } green=0; red=0; ledcWrite(ledblu,blue); ledcWrite(ledgre,green); ledcWrite(ledred,red); ledcWrite(ledcasa,casa); casa=255; digitalWrite (relepompa, LOW); //relestate = digitalRead (galleggiante); //tolto controllo galleggiante relestate = HIGH; if (relestate == HIGH) { digitalWrite (relenebula, HIGH); } Serial.println("loop stelle"); for (stelle = 1; stelle < vTime; stelle+=1) { randNumber1 = random(70); randNumber2 = random(70); randNumber3 = random(70); randNumber4 = random(70); lumstelle1 = 180 + randNumber1; lumstelle2 = 180 + randNumber2; lumstelle3 = 180 + randNumber3; lumstelle4 = 180 + randNumber4; ledcWrite(ledstelle1,lumstelle1); ledcWrite(ledstelle2,lumstelle2); ledcWrite(ledstelle3,lumstelle3); ledcWrite(ledstelle4,lumstelle4); delay(2); } }