Hirdetés

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

  • Pubszon

    veterán

    válasz happy555 #335 üzenetére

    Igen, azt szeretném, hogy a delay-ek egyszer fussanak le és ha bármi van egyből tudjon reagálni.
    Na de inkább beírom ide az egészet, hogy így jó e.
    Nagyjából meg van a leírás is hogy mi mi.
    A resetPin az RF vevőt áramtalanítja, hogy a relék visszaálljanak alap állapotba. Ez addig lesz így, míg nem jön meg a másik. Mert ez csak self-lock, tehát egy gombnyomás akkor úgy is marad a relé. Az meg nekem nem jó, mert rövid áramszünet után kinyílna a kapu, meg ne legyen behúzva a relé, csak ha kell. :D

    /*
    Az aramkor:
    * Gombok a +5V es a pin 2, 3, 9 es 10 koze.
    * 10K ellenallas a pin 2, 3, 9, 10-re a GND-rol kulon-kulon.

    * Megjegyzes: A legtobb Arduinon mar van egy integralt LED a pin 13-ra kotve.

    A 4 csatornas rele panelen az 1. es 2. rele bemenetet ossze kell kotni a valtokapcsolas miatt.
    Rele bekotese:
    Rele 1: NC +30V DC motor fele, NO GND motor fele, COM +30V DC a tap felol.
    Rele 2: NC GND motor fele, NO +30V DC motor fele, COM GND a tap felol.
    Rele 3: NC 230V AC a DC tap fele, COM 230V AC a halozati arambol.
    Rele 4: NC +12V DC a 2 csatornas tavvezerlo fele, COM +12V DC a tap felol.

    */

    const int buttonPin1 = 2; // Kapu nyitas gomb, a vevo egyik releje
    const int buttonPin2 = 3; // Kapu zaras gomb, a vevo masik releje
    const int iranyPin1 = 4; // Kapu nyitas-zaras, elso rele valtokapcsolo 1. rele
    const int iranyPin2 = 5; // Kapu nyitas-zaras, masodik rele valtokapcsolo 2. rele
    const int jelzoPin = 6; // Jelzofeny nyitas/zaras ideje alatt 3. rele
    const int resetPin = 7; // Vevo reset hogy a relek NO-ba alljanak 4. rele
    const int ACvPin = 8; // Motor 230V lekapcsolasa 5. kulonallo rele
    const int vegallasPin1 = 9; // Vegallaskapcsolo-nyitva
    const int vegallasPin2 = 10; // Vegallaskapcsolo-zarva /Magnes erzekelo/
    const int ledPin = 13; // Allapotjelzo LED, folyamatosan vilagit muvelet kozben


    // valtozni fognak:
    int nyitoGomb = 0; // Valtozik a gomb allapota alapjan
    int zaroGomb = 0; // Valtozik a gomb allapota alapjan
    int vegallasNyitva = 0; // Valtozik a vegallaskapcsolo allapota alapjan
    int vegallasZarva = 0; // Valtozik a vegallaskapcsolo allapota alapjan

    void setup() {
    // Ki-bemenetkent:
    pinMode(buttonPin1, INPUT);
    pinMode(buttonPin2, INPUT);
    pinMode(iranyPin1, OUTPUT);
    pinMode(iranyPin2, OUTPUT);
    pinMode(jelzoPin, OUTPUT);
    pinMode(ACvPin, OUTPUT);
    pinMode(resetPin, OUTPUT);
    pinMode(vegallasPin1, INPUT);
    pinMode(vegallasPin2, INPUT);
    pinMode(ledPin, OUTPUT);
    digitalWrite(ACvPin, LOW);
    digitalWrite(iranyPin1, LOW);
    digitalWrite(iranyPin2, LOW);
    digitalWrite(jelzoPin, HIGH);
    delay(2000);
    digitalWrite(jelzoPin, LOW);
    Serial.begin(9600);
    }

    void loop()
    {
    nyitoGomb = digitalRead(buttonPin1);
    zaroGomb = digitalRead(buttonPin2);
    vegallasNyitva = digitalRead(vegallasPin1);
    vegallasZarva = digitalRead(vegallasPin2);
    int lowlow = (nyitoGomb == LOW && zaroGomb == LOW) == true;

    if (nyitoGomb == HIGH && zaroGomb == LOW && vegallasNyitva == LOW) // Nyitas

    {
    digitalWrite(jelzoPin, HIGH);
    digitalWrite(ledPin, HIGH);
    delay(250);
    digitalWrite(iranyPin1, HIGH); //+
    delay(250);
    digitalWrite(iranyPin2, LOW); //-
    delay(500);
    digitalWrite(ACvPin, HIGH);
    }

    else if (nyitoGomb == HIGH && zaroGomb == LOW && vegallasNyitva == HIGH) // Nyitva

    {
    delay(196);
    digitalWrite(jelzoPin, LOW);
    digitalWrite(ACvPin, LOW);
    digitalWrite(resetPin, LOW);
    do
    {
    digitalWrite(ledPin, HIGH);
    delay(100);
    digitalWrite(ledPin, LOW);
    delay(100);
    }
    while(lowlow == false);
    delay(200);
    digitalWrite(resetPin, HIGH);
    }

    else if (nyitoGomb == LOW && zaroGomb == HIGH && vegallasZarva == LOW) // Zaras

    {
    digitalWrite(jelzoPin, HIGH);
    digitalWrite(ledPin, HIGH);
    delay(250);
    digitalWrite(iranyPin1, LOW); //-
    delay(250);
    digitalWrite(iranyPin2, HIGH); //+
    delay(500);
    digitalWrite(ACvPin, HIGH);
    }

    else if (nyitoGomb == LOW && zaroGomb == HIGH && vegallasNyitva == HIGH) // Zarva

    {
    delay(374);
    digitalWrite(jelzoPin, LOW);
    digitalWrite(ACvPin, LOW);
    digitalWrite(resetPin, LOW);
    do
    {
    digitalWrite(ledPin, HIGH);
    delay(100);
    digitalWrite(ledPin, LOW);
    delay(100);
    }
    while(lowlow == false);
    delay(200);
    digitalWrite(resetPin, HIGH);
    }

    else if (nyitoGomb == LOW && zaroGomb == LOW) // Mind 2 gomb kikapcsolva a taviranyiton, alap statusz

    {
    do
    {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(1000);
    }
    while(lowlow == true);
    }

    else

    {
    digitalWrite(jelzoPin, LOW);
    digitalWrite(ACvPin, LOW);
    digitalWrite(resetPin, LOW);
    do
    {
    digitalWrite(ledPin, HIGH);
    delay(100);
    digitalWrite(ledPin, LOW);
    delay(100);
    }
    while(lowlow == false);
    delay(200);
    digitalWrite(resetPin, HIGH);
    }
    }

    [ Szerkesztve ]

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

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