Hirdetés

Új hozzászólás Aktív témák

  • Saua

    tag

    Sziasztok,

    Egy másodpercenként szeretném kiolvasni a hőmérsékletet és ha a hőmérséklet nagyobb vagy kisebb mint a beállított érték akkor egyszer fusson le a blink függvény. Tehat mindig csak egyszer fusson le mikor a beállított érték alá csökken és mindig csak egyszer mikor az érték fölé emelkedik.

    #include <OneWire.h>
    #include <DallasTemperature.h>
    #define ONE_WIRE_BUS 7 // Hőmérő a pin7-en
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);

    int led1 = 6;
    int ledState = LOW; // kimeneti pin aktuális állapota
    int ledBLINK = 8;

    char engedely = HIGH;

    unsigned long lastTemp;
    float temperature;



    void setup()
    {
    pinMode(led1, OUTPUT);
    digitalWrite(led1, ledState);
    pinMode(ledBLINK, OUTPUT);

    Serial.begin(9600);
    sensors.begin();
    sensors.setResolution(11);
    }

    void loop()
    {
    engedely = engedely; // blink5 hivás engedelyezese

    if (millis() > lastTemp + 1000 ){
    sensors.requestTemperatures();
    temperature = sensors.getTempCByIndex(0);
    Serial.println(temperature);


    if (temperature < (24-0.5 ))
    {
    ledState = HIGH;
    if((ledState == HIGH) && (engedely == HIGH)) blink5();
    }

    else if (temperature > (24+0.5 ))
    {
    ledState = LOW;
    if((ledState == LOW) && (engedely == HIGH)) blink5();
    }
    lastTemp = millis();
    }
    digitalWrite(led1, ledState);
    }
    void blink5()
    {
    for(int i=0;i<5;i++){
    digitalWrite(ledBLINK,HIGH);
    delay(500);
    digitalWrite(ledBLINK,LOW);
    delay(500);
    }
    engedely = LOW; // további meghívás tiltása
    }

    A hőmérséklet mérés az jó, határértékek elérésekor a led1 müködik…de a blink függvény nem akar működni. Hol rontottam el ?

Új hozzászólás Aktív témák