my mkr1000 going shutdown program when i send him 3 digital pin in HIGH with Vin power supply of 5V.
#include <WiFi101.h>
#include <BlynkSimpleMKR1000.h>
#define BLYNK_TEMPLATE_ID "TMPL4WhNcdGhV"
#define BLYNK_DEVICE_NAME "Reciklator vlage"
#define BLYNK_AUTH_TOKEN "8g3KSML8wbpIbDVXLOOCmhuUPWK2Y1bI"
char auth[] = "8g3KSML8wbpIbDVXLOOCmhuUPWK2Y1bI"; // Blynk auth token
char ssid[] = "Arduino"; // WiFi SSID
char pass[] = "zanettii"; // WiFi password
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16, 2);
//pin dht11
#define DHTPIN 9
//vrsta dhta
#define DHTTYPE DHT11
#define BLYNK_PRINT Serial;
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
//funkcija setane vrijednosti zraka preko blynk aplikacije
//postavljane izlaza pumpi(releja)
#define pum2 7
#define pum1 8
//sve varijable postavljene
int ultra=0;
int provjera2=0;
int provjera1=0;
int osvjezi=0;
int h3=0;
int odvlazivac=6;
int udaljenost1=0;
int trajanje1;
int udaljenost2=0;
int trajanje2;
int zemlja=0;
int zemlja1=0;
int setzemlja=0;
int vlagaset=0;
int setzraka=0;
float humidity;
int t,h;
//ulazi i izlazi ultrazvučnih senzora
#define trigPin1 3
#define echoPin1 2
#define trigPin2 5
#define echoPin2 4
void setup() {
Serial.begin(9600);//pokretanje Serial Monitor
//postavljane L2C displaya
lcd.init();
lcd.backlight();
lcd.clear();
Blynk.begin(auth, ssid, pass);
dht.begin();
timer.setInterval(2500L, nemavode);
Serial.begin(9600);
//definiranje ulaza i izlaza
pinMode(A2,INPUT);
pinMode(odvlazivac, OUTPUT);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(pum1, OUTPUT);
pinMode(pum2, OUTPUT);
// digitalWrite(pum1, HIGH);
// digitalWrite(pum2, HIGH);
}
BLYNK_WRITE(V3)
{
setzraka=param.asInt();
Serial.print("setzraka : ");
Serial.println(setzraka);
}
//funkcija setane vrijednostizemlje preko blynk aplikacije
BLYNK_WRITE(V5)
{
zemlja = analogRead(A1);
zemlja1 = map(zemlja, 0, 1023, 0, 1000);
humidity = dht.readHumidity();
setzemlja=param.asInt();
Serial.print("setana zemlje je ");
Serial.println(setzemlja );
}
void nemavode(){
Blynk.logEvent("razina_vode","Treba natočiti vodu u 2 kantu");
}
//ocitanje vode u prvoj kanti sa ultrasonic senzorom
void daljina1(){
Blynk.syncVirtual(V3);
Blynk.syncVirtual(V5);
digitalWrite(trigPin1, LOW);
delayMicroseconds(5);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
trajanje1= pulseIn(echoPin1, HIGH);
udaljenost1 = trajanje1 * 0.034 / 2;
Serial.print("Udaljen1: ");
Serial.println(udaljenost1);
/* lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Udaljen2: ");
Serial.println(udaljenost1);
lcd.setCursor(0, 1);
lcd.print("Udaljen2:");
Serial.println(udaljenost1);*/
}
//ocitanje vode u drugoj kanti sa ultrasonic senzorom
void daljina2(){
Blynk.syncVirtual(V3);
Blynk.syncVirtual(V5);
digitalWrite(trigPin2, LOW);
delayMicroseconds(5);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
trajanje2 = pulseIn(echoPin2, HIGH);
udaljenost2 = trajanje2 * 0.034 / 2;
Serial.print("Udaljen2: ");
Serial.println(udaljenost2);
delay(100);
/* lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Udaljen2: ");
Serial.println(udaljenost2);
lcd.setCursor(0, 1);
lcd.print("Udaljen2:");
Serial.println(udaljenost2);*/
}
//ocitanje vlage zemlje,pustanje i gasenje druge pumpe za navodnjavanje cvijeta
void isusivac(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("isusivac");
lcd.setCursor(0, 1);
lcd.print("neradi");
delay(2000);
//ocitava vrijednosti sa dht senzora
t = dht.readTemperature();
h = dht.readHumidity();
Serial.println("vlaga////////////////////////////////");
Serial.println(h);
Serial.println(t);
Blynk.virtualWrite(V0, t); // Send temperature value to Blynk App
Blynk.virtualWrite(V1, h); // Send humidity value to Blynk App
zemlja = analogRead(A1);
zemlja1 = map(zemlja, 0, 1023, 0, 100);
Serial.println(zemlja1);
Serial.println("vlaga zemlje");
Serial.println(zemlja1);
Blynk.syncVirtual(V3);
// ako je vlaga u prostoriji veća od postavljene onda se pali osvježivac
if (setzraka<h){
while(setzraka<h){
h = dht.readHumidity();
Blynk.virtualWrite(V1, h);
osvjezi=1;
digitalWrite(odvlazivac,LOW);
//digitalWrite(pum1, HIGH);
//digitalWrite(pum2, HIGH);
Serial.println("osvjezi 1-------------------------------");
}
}
//vlaga je u prostoriji je zadovoljavajuća i netreba isušivati zrak
else{
osvjezi=0;
digitalWrite(odvlazivac,HIGH);
/*digitalWrite(pum1, HIGH);
digitalWrite(pum2, HIGH);*/
Serial.println("osvjezi 0////////////////////////////////");
}
}
void vlagacvijet(){
Blynk.syncVirtual(V5);
Serial.println("-------------------------------------------------- ");
Serial.println(setzemlja);
Serial.println("-------------------------------------------------->>>>>>>>>>>>>>>>>>>>>>> ");
Serial.print(zemlja1);
delay(1000);
zemlja = analogRead(A1);
zemlja1 = map(zemlja, 0, 1023, 0, 1000);
Serial.println(zemlja1);
delay(500);
Serial.println("vlaga zemlje");
Serial.println(zemlja1);
Blynk.virtualWrite(V4, zemlja1);
//ako je vlaga manja od potrebne za biljku neka senzor radi
if (zemlja1 < setzemlja) {
digitalWrite(2, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("vlaga manja: ");
lcd.print(zemlja1);
lcd.setCursor(0, 1);
lcd.print("od setane:");
lcd.print(setzemlja);
daljina2();
//neka pumpa radi sve dok je vlaga manja i dok ima dovoljne vode da pumpa radi
while(zemlja1 < setzemlja && udaljenost2<16){
zemlja = analogRead(A1);
zemlja1 = map(zemlja, 0, 1023, 0, 1000);
Serial.println(zemlja1);
Blynk.virtualWrite(V4, zemlja1);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("vlaga manja: ");
lcd.print(zemlja1);
lcd.setCursor(0, 1);
lcd.print("od setane:");
lcd.print(setzemlja);
daljina2();
Serial.println("-------------------------------------------------- ");
Serial.print(setzemlja);
daljina2();
lcd.setCursor(0, 1);
zemlja1 = analogRead(A1);
Serial.print("Moisture2: ");
Serial.println(zemlja1);
digitalWrite(pum2,LOW);
Serial.println("pumpa2 radi ovo ");
provjera2=1;
provjera1=0;
digitalWrite(pum1,HIGH);
Serial.println("pumpa1 neradi ovo ");
daljina2();
}
}
// ispisuje ako u 2 kanti nema dovoljno vode,a cvijeće treba zaliti da se voda dolije u 2 kantu
if(udaljenost2>16){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(udaljenost2);
lcd.setCursor(0, 1);
lcd.print("prevelika udaljenost");
nemavode();
}
//pumpa neradi ako je vlaga dovoljna ili ako nema dovoljno vode za rad pumpe
else if (zemlja1 > setzemlja){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("dovoljno vode ");
lcd.setCursor(0, 1);
lcd.print("cvijece dovoljno");
}
else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("udaljenost ");
lcd.print(udaljenost2);
}
}
void novikrug(){
//digitalWrite(odvlazivac,HIGH);
digitalWrite(pum1, HIGH);
digitalWrite(pum2, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("novi krug: ");
lcd.setCursor(0, 1);
lcd.print("nista neradi");
delay(2000);
}
//funcija za prvu kantu
void kanta1(){
//ako ima dovoljno vode i ako u drugoj kanti nema previše vode
if (udaljenost1<15 && udaljenost2>10 ){
Serial.println("ušo sam ");
// ponavlja sve dok u kanta1 ima dovoljno vode i dok kanta 2 nije puna
while (udaljenost1<15 && udaljenost2>12 ){
daljina1();
daljina2();
digitalWrite(pum2,HIGH);
digitalWrite(pum1,LOW);
// digitalWrite(odvlazivac,HIGH);
Serial.println("pumpa1 radi ");
provjera1=1;
daljina1();
delay(100);
}
}
//ako uvijeti nisu ispunjeni pumpa 1 neće raditi
else {
digitalWrite(pum2,HIGH);
digitalWrite(pum1,HIGH);
//digitalWrite(odvlazivac,HIGH);
Serial.println("pumpa 1 nemoze raditi ");
delay(200);
}
}
void loop() {
Blynk.run();
timer.run();
novikrug();
isusivac();
daljina1();
daljina2();
kanta1();
daljina2();
daljina1();
vlagacvijet();
nemavode();
}