Uprava programu pro ovladani rele

Souhrn tématu

Uživatel začátečník hledá pomoc s úpravou programu pro ovládání relé na desce Arduino Mega 2560. Původní kód ovládá jedno relé tlačítkem, které sepne relé pouze při stisku. Po řešení problému byl vytvořen nový program, který umožňuje přidat více relé a tlačítek s funkcí přepínání stavu relé (sepnutí/rozepnutí) a indikační LED. Tento příklad usnadňuje rozšíření ovládání relé pro více kanálů.
jiri255
Příspěvky: 11
Registrován: stř dub 30, 2014 9:11 pm
Reputace: 0

Uprava programu pro ovladani rele

Nový 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

Nový 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; 
 }

Kdo je online

Uživatelé prohlížející si toto fórum: Claudebot [Bot] a 0 hostů