Close

Chyba v kódu – nemůžu najít

Úvodní stránka Fórum Vaše projekty Arduino Chyba v kódu – nemůžu najít

Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Autor
    Příspěvky
  • #9784
    mfly
    Účastník

    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

    #9808
    elektronek.cz
    Účastník

    k té podmínce na základě času:
    (od 4 do 5 bude LED svítit)

    
    DateTime now = rtc.now();
    
    if ((now.hour() > 3) && (now.hour() < 6)
       digitalWrite(13, HIGH);
    else
       digitalWrite(13, LOW);
    
    
Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Pro reakci na toto téma se musíte přihlásit.