Keresés

Hirdetés

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

  • Pubszon

    veterán

    válasz gyapo11 #487 üzenetére

    A túlcsordulás megelőzése érdekében csináltam, hogy ha több mint 30 napja megy és a legközelebbi szabad pillanatába lereseteli önmagát. A belső 32bites számláló majdnem 50 napig képes számlálni, emiatt 19 nap alatt csak lesz egy szabad pillanat. :D
    Ezt így oldottam meg:

    // Reset 30 nap futas utan
    if ((vegallasZarva == LOW) && (digitalRead(lampaPin) == HIGH) && (day > 29))
    {
    digitalWrite(ResetPin, LOW);
    }

    Tehát hogy ha be van zárva a kapu és a lámpa sincs felkapcsolva, illetve több mint 29 napja fut (azaz legalább 30), akkor a reset pint LOW-ra teszi. A reset és a D12 közvetlen össze van kötve, a setupba pedig a D12 HIGH-ra van állítva.

    Mivel majd holnap rakom össze a hardvert (a kapunyitóét), emiatt ezt nem tudtam kipróbálni, hanem most ezzel gyakorlok meg vele együtt a soros kommunikációt is.

    int led = 13;//pin 13 as OUTPUT LED pin
    int resetPin = 12;
    int ledState = digitalRead(led);
    unsigned long sec;
    // the setup routine runs once when you press reset:
    void setup() {
    digitalWrite(resetPin, HIGH);
    digitalWrite(led, LOW);
    delay(200);
    // initialize the digital pin as an output.
    pinMode(led, OUTPUT);
    pinMode(resetPin, OUTPUT);
    Serial.begin(115200);//initialize Serial Port
    Serial.println("");
    Serial.println("Start");//print reset to know the program has been reset and
    //the setup function happened
    delay(500);
    }

    // the loop routine runs over and over again forever:
    void loop() {
    sec = millis() / 1000; // Masodperc
    Serial.println("LOOP Start");
    digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
    ledState = digitalRead(led);
    Serial.print("LED Statusz: ");
    Serial.println(ledState);
    sec = millis() / 1000; // Masodperc
    Serial.print(sec);
    Serial.println(" masodperc telt el indulas ota...");
    delay(1000); // wait for a second
    digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
    Serial.print("LED Statusz: ");
    ledState = digitalRead(led);
    Serial.println(ledState);
    sec = millis() / 1000; // Masodperc
    Serial.print(sec);
    Serial.println(" masodperc telt el indulas ota...");
    delay(1000); // wait for a second
    if (sec>20)
    {
    Serial.println("Reset most...");
    delay(10);
    digitalWrite(resetPin, LOW);
    Serial.println("HIBA! Reset nem mukodik...");
    }
    //this never happens because Arduino resets

    }

    [ Szerkesztve ]

    ASRock X79 Extreme6, i7 4930K, 32GB DDR3, GTX 1080 G1, Corsair RM750x...

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