Zdravím,
mám problém s kódem – dvě věci.
První…nejde mi měření vzdálenosti pomocí HC-SR04. Když si kód jen pro HC dám samostatně, tak funguje, jak ale doplním do celého kódu projektu, tak mi to háže chybu.
Další věc…jak udělám aby mi spouštění pinu 13 (nebo jiného dle volby) reagovalo na podmínku u hodiny? Chci spustit něco v určitém čase, ale nereaguje mi to na podmínku.
KÓD:
//měření vzdálenosti
#define ECHOPIN 2 // Echo pin z HC-SC04 na pin 2
#define TRIGPIN 3 // Trig pin z HC-SC04 na pin 3
// knihovny pro LCD přes I2C
#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//hodiny
DS3231 rtc(SDA, SCL);
// nastavení adresy I2C (0x27 v mém případě),
// a dále počtu znaků a řádků LCD, zde 16×2
LiquidCrystal_I2C lcd(0x27, 16, 2);
//senzor vlhkosti
int mostureSensor = 0;
void setup()
{
Wire.begin();
Serial.begin(9600);
//hodiny
// Initialize the rtc object
rtc.begin();
// The following lines can be uncommented to set the date and time
rtc.setTime(12, 12, 0); // Set the time to 12:00:00 (24hr format)
rtc.setDate(22, 12, 2016); // Set the date to January 1st, 2014
// inicializace LCD
lcd.begin();
// zapnutí podsvícení
lcd.backlight();
// vytisknutí hlášky na první řádek
lcd.print(„Ahoj…“);
delay(2000);
//vzdálenost
//Nastaví pin 2 jako vstupní
pinMode(ECHOPIN, INPUT);
//Nastaví pin 3 jako výstupní
pinMode(TRIGPIN, OUTPUT);
//spouštění něčeho – teď dioda
pinMode(13, OUTPUT);
}
void loop()
{
//hodiny
// Send date
Serial.print(rtc.getDateStr());
Serial.print(“ — „);
// Send time
Serial.println(rtc.getTimeStr());
delay(100);
//čtení hodnoty ze senzoru vlhkosti a tisk na monitor
int sensorValue = analogRead(mostureSensor);
Serial.println(sensorValue);
delay(100);
//vzdálenost – nejde
// Vyšle impuls do modulu HC-SR04
digitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW);
// Spočítá vzdálenost
float distance = pulseIn(ECHOPIN, HIGH);
distance = distance*0.017315f;
// odešle informace na sérivý port
Serial.print(distance);
Serial.print(„cm\n“);
//počká 1 sekundu
delay(1000);
//výpis na display
lcd.clear();
delay(1000);
lcd.setCursor(0, 0);
lcd.print(„Vlhkost“);
lcd.setCursor(1, 1);
lcd.print((sensorValue) / 10);
lcd.setCursor(10, 1);
lcd.print(„%“);
delay(5000);
lcd.clear();
delay(1000);
lcd.setCursor(0, 0);
lcd.print(„Datum a cas“);
lcd.setCursor(0, 1);
lcd.print(rtc.getTimeStr());
lcd.setCursor(7, 1);
lcd.print(rtc.getDateStr());
delay(5000);
if (rtc.getTimeStr() > 03) //podmínka pro spuštění na základě času – nejde mi
{
digitalWrite(13, HIGH);
}
if (rtc.getTimeStr() < 06)
{
digitalWrite(13, LOW);
}
Díky