Uprava programu pro ovladani rele

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Odpovědět
jiri255
Příspěvky: 11
Registrován: stř dub 30, 2014 9:11 pm
Reputace: 0

Uprava programu pro ovladani rele

Příspěvek od jiri255 »

Dobrý den,
jelikož jsem úplný začátečník, tak bych Vás tu chtěl požádat o radu ohledně programu pro ovládání relé.
Mám desku Arduino Mega 2560 a k ní modul se 4x relé. Mám připojené zatím jen jedno relé a ovládám
ho tlačítkem, když stisknu tlačítko relé se sepne, když ho pustím relé vypne viz program níže.
Nevíte někdo, jak tento program upravit a přidat do něj ještě druhé tlačítko připojené k button2Pin = 4
a druhé relé připojené k Rele2Pin = 5 s tím, že obě tlačítka budou fungovat, tak že když jedno nebo druhé
stisknu, tak se jedno nebo druhé relé sepne a zůstane seplé a když je opět stisknu, tak se relé rozepnou
a zůstnou rozeplá?

Děkuji za případnou pomoc Jirka

Kód: Vybrat vše

// relatka nastaveni

const int buttonPin   =  2;      // tlačítko1
const int relePin     =  3;      // rele

      int buttonState = 0;       //stav

 void setup() {
//relé jako výstup

  pinMode(relePin, OUTPUT);     

  //tlačítko jako vstup

  pinMode(buttonPin,INPUT);  

}

void loop(){
// načtení stavu
buttonState = digitalRead(buttonPin);

 // stisknutí

  if (buttonState == HIGH) {     

    // zapni relé    
   digitalWrite(relePin, LOW);

  } 

  else {

    // vypni relé
   digitalWrite(relePin, HIGH);
  }
}
jiri255
Příspěvky: 11
Registrován: stř dub 30, 2014 9:11 pm
Reputace: 0

Re: Uprava programu pro ovladani rele

Příspěvek od jiri255 »

Tak uz jsem to vyresil, ten program se musi cely predelat. Pokud byste nekdo resili stejny problem, prikladam vysledek je to jenom na jedno rele + se k tomu i rozsviti ledka, kdyz se rele sepne, a kdyz se rele rozepne ledka zhasne. Doplnit si tam vice rele uz neni problem...

Kód: Vybrat vše

// ovladani rele tlacitkem 


 // Konstanty se nezmění . Jsou zde použity pro 
 // Nastavení čísla PIN : 
 const int buttonPin = 2;    // cislo pinu tlacitka 
 const int relePin = 3;      // cislo pinu rele 
 const int ledPin = 13;      // cislo pinu ledky 

 // Variables will change: 
 int ledState = HIGH;         // Aktuální stav výstupního pinu 
 int releState = LOW;         // Aktuální stav výstupního pinu 
 int buttonState;             // Aktuální čtení ze vstupního pinu 
 int lastButtonState = LOW;   // Předchozí čtení ze vstupního pinu 

 // Následující proměnné jsou dlouhé , protožečas , měřeno v milisekundách , 
 // Se rychle stanevětší číslo , než je možné uložit do int 
 long lastDebounceTime = 0;  // Poslední doba kdy výstupní pin byl přepnut 
 long debounceDelay = 50;    // cas konstanta zvysit 

 void setup() { 
   pinMode(buttonPin, INPUT); 
   pinMode(ledPin, OUTPUT); 
   pinMode(relePin, OUTPUT); 

   // Nastavit počáteční stav ledky a rele 
   digitalWrite(ledPin, ledState); 
   digitalWrite(relePin, releState); 
 } 

 void loop() { 
   // Čtení stavu spínače do lokální proměnné : 
   int reading = digitalRead(buttonPin); 

   // Zkontroluje, zda jste právě stiskli tlačítko  

   // zmena prepinace: 
   if (reading != lastButtonState) { 
     // reset casovace odskoku 
     lastDebounceTime = millis(); 
   } 
   
   if ((millis() - lastDebounceTime) > debounceDelay) { 
    //  Cas tam byl déle než vstupní zpoždění , 
    //  skutečný současný stav: 

     // Pokud došlo ke změněstavu tlačítka: 
     if (reading != buttonState) { 
       buttonState = reading; 

       // Pouze přepínat ledku a rele , pokud je nové zmáčknutí: 
       if (buttonState == HIGH) { 
         ledState = !ledState; 
         releState = !releState; 
       } 
     } 
   } 
   
   // nastaveni ledky a rele: 
   digitalWrite(ledPin, ledState); 
   digitalWrite(relePin, releState); 
   
   // ulozeni cteni pro pristi smycku: 
   lastButtonState = reading; 
 }

Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek