Dobry den,
Doufam, ze zde pisi svoji prosbu o pomoc na spravnem miste, pokud je to jiny odkaz tak se predem omlouvam..
Vytvoril jsem hybrid kodu pro svuj prototyp,
na prvni pohled ve sve funkci vypada, ze pracuje v poradku, ale v jistych okamzicich se chova divne, coz bohuzel je jen pulka meho problemu...
Kod je souctem tri veci:
1, meric vzdalenosti a jeho nastaveni hranice
2, meric vlhkosti pudy
3, jsou podminky, ktere urcuji chovani pristroje
(if, else).
Vse pracuje dobre, ale jakmile dosahnu ci prekrocim nastavenou hranici ve vzdalenosti k prekazce, zacne prototyp pipat (to je OK), ale problikavat display v hodnotach real. delky a nastavene delky... nevim co stim, je to dosti neesteticke a uz ted to vypada desingove cela krabicka jako na koleni delana
( Bohuzel nevim, kde hledat problem... cisty kod je vporadku, do te doby nez ho sloucim s dalsimi a i tak obcas display se chova normalne (nahodne). Druhy problem, se kterym chci nekoho poprosit o pomoc je:
Ze potrebuji, aby mi pracovali kontrolky stavu... Napr. zapnuti Arduina (je tam jiz umistena, ale mam pocit, ze se stim Arduino pere), sepnuti (1x LED) a rozepnuti rele (1x LED), pri pipani dosazene vzdalenosti (1x LED).. nevim bohuzel jake je vlozit do kodu tak, aby ve vyse uvedenych situacich svitily
Dalsi pouzivani else a if mi kompilace uz nezere a jako temer uplneho zacatecnika me nic nenapada, a google me nijak nepomohl (nevim jak definovat problem). A ted malinkou otazecku.... pro lepsi osvetleni daneho stavu (napis) jsem musel pouzit 2x ledky... arduino mi na port neda vice jak 5V, proto jsem je zapojil seriove, to vsak ma vetsi odber mA, neodpali to Arduino ?
Predem se opravdu moc omlouvam za dlouhy text, ale chtel jsem to vse vysvetlit.. nize uvadim cely svuj kod.
Dekuji moc dekuji za Vase odpovedi.
#include <LiquidCrystal.h>
LiquidCrystal lcd(22, 24, 26, 28, 30, 32);
const int trigger=23;
const int echo=25;
const int altavoz=2;
const int potAlarm=A4;
int led_limit= 34;
int led_cerpadlo= 31;
int led_power= 29;
int led_stop= 27;
int relay= 36;
int sensorPin = A0; // Sensor Soil Humidity
int sensorValue = A0;
int sensor2Pin = A1; // Sensor Light
int sensor2Value = A1;
float distance;
int val;
float lim;
void setup(){
Serial.begin(9600);
pinMode(led_limit, OUTPUT);
pinMode(led_cerpadlo, OUTPUT);
pinMode(led_stop, OUTPUT);
pinMode(led_power, OUTPUT);
pinMode(relay, OUTPUT);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
lcd.begin(16,2);
}
void loop(){
val=analogRead(A4);
lim=val*0.00293;
digitalWrite(trigger,LOW);
delayMicroseconds(5);
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
distance=pulseIn(echo,HIGH);
distance=distance*0.0001657;
if(distance>lim){
analogWrite(2, 100);
digitalWrite(relay, LOW);
}
else{analogWrite(2, 0);
}
sensorValue = analogRead(A0);
sensor2Value = analogRead(A1);
Serial.print("Vstupni sensoricka data Humidity - "); // Name date sensor Humidity
Serial.println( sensorValue );
Serial.print("Vstupni sensoricka data Light - "); // Name date sensor Light
Serial.println( sensor2Value );
Serial.print("Vstupni sensoricka data Vzdalenost hladiny - ");
Serial.println(distance);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Hladina:");
lcd.setCursor(12,0);
lcd.print(distance);
lcd.setCursor(0,1);
lcd.print("limit:");
lcd.setCursor(9,1);
lcd.print(lim);
delay(500);
digitalWrite(29, HIGH);
if (sensorValue < 95)
digitalWrite(relay, LOW);
else
if (sensor2Value < 30)
digitalWrite(relay, LOW);
else
if (sensorValue > 110)
digitalWrite(relay, HIGH);
else
if (sensor2Value > 31)
digitalWrite(relay, HIGH);
}