Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Arduino - uprava programu pro ovladani rele [VYRESENO]

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
jiri255



Založen: Apr 18, 2013
Příspěvky: 168

PříspěvekZaslal: čt květen 01 2014, 11:12    Předmět: Arduino - uprava programu pro ovladani rele [VYRESENO] Citovat

Zdravím,
chtěl bych Vás 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:

// 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);
  }
}


Naposledy upravil jiri255 dne čt květen 01 2014, 19:31, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
monterjirka



Založen: Jun 14, 2003
Příspěvky: 2794
Bydliště: Blížejov

PříspěvekZaslal: čt květen 01 2014, 13:07    Předmět: Citovat

Na to by stačil IO 4013 se dvěma KO...

S Arduinem je to také možné.
Tak jde především ošetření nějakých zákmitů a pak jde o to, jestli je třeba ovládat tlačítka současně...

V podstatě jde o to hlídat stav na portech, čekat na změnu a při změně skočit do podprogramu, který provede změnu na výstupu tím, že udělá negaci výstupu patřícího ke vstupu, kde došlo ke změně a vrátí se ke sledování vstupů...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
jiri255



Založen: Apr 18, 2013
Příspěvky: 168

PříspěvekZaslal: čt květen 01 2014, 13:37    Předmět: Citovat

Díky za radu, ale jelikož jsem teprve začátečník, tak úplně přesně nevím, jak to do toho programu zapsat, aby mi to fungovalo...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nekmil



Založen: Mar 06, 2005
Příspěvky: 787
Bydliště: Havířov

PříspěvekZaslal: čt květen 01 2014, 15:45    Předmět: Citovat

Jen tak na úvod:

// relatka nastaveni

const int buttonPin = 2; // tlačítko1
const int button2Pin = 4; // tlačítko2
const int relePin = 3; // rele1
const int rele2Pin = 5; // rele2

int buttonState = 0; //stav

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

pinMode(relePin, OUTPUT);
pinMode(rele2Pin, OUTPUT);

//tlačítko jako vstup

pinMode(buttonPin,INPUT);
pinMode(button2Pin,INPUT);
}

z těch "závorek" se mi dělá nevolno Very Happy a pak si přepracuj to "IF"

Něco podobného se řešilo zde:
http://www.ebastlirna.cz/modules.php?name=Forums&file=viewtopic&t=64057

prostuduj si "ovládání rele_4"

_________________
http://tesinsko.cz/webcams/rondel
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
jiri255



Založen: Apr 18, 2013
Příspěvky: 168

PříspěvekZaslal: čt květen 01 2014, 17:15    Předmět: Citovat

Díky za ten začátek to už teď chápu a díval jsem se i na to relé4, ale to bude napsané v něčem jiném, protože pro arduino se mi tu podmínku nepodařilo napsat Sad s tím si nevím rady
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jiri255



Založen: Apr 18, 2013
Příspěvky: 168

PříspěvekZaslal: čt květen 01 2014, 19:30    Předmět: Citovat

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:

// 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;
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nekmil



Založen: Mar 06, 2005
Příspěvky: 787
Bydliště: Havířov

PříspěvekZaslal: pá květen 02 2014, 9:00    Předmět: Citovat

No vidíš, musíš trénovat a ono to půjde. Very Happy
Ale těch závorek, Sad to mě na tom Céčku právě děsí. Radši zůstanu u toho "mého" Bascomu Smile Už jsem asi starý, abych se učil něco nového. Smile

_________________
http://tesinsko.cz/webcams/rondel
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
jiri255



Založen: Apr 18, 2013
Příspěvky: 168

PříspěvekZaslal: pá květen 02 2014, 12:41    Předmět: Citovat

mě toho na tom céčku děsí... Laughing
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
venca666



Založen: Mar 02, 2014
Příspěvky: 92
Bydliště: u mě Doma

PříspěvekZaslal: st říjen 15 2014, 15:21    Předmět: Citovat

aky by to šlo ovládat jednoduše časovačem 555, nebo 556.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
stanleyv



Založen: Jan 21, 2007
Příspěvky: 123
Bydliště: Trnava

PříspěvekZaslal: pá říjen 17 2014, 5:29    Předmět: Citovat

nekmil napsal(a):
No vidíš, musíš trénovat a ono to půjde. Very Happy
Ale těch závorek, Sad to mě na tom Céčku právě děsí. Radši zůstanu u toho "mého" Bascomu Smile Už jsem asi starý, abych se učil něco nového. Smile


Ja si myslím, že človek nie je nikdy tak starý, aby sa učil niečo nové .... A tie zátvorky, nie sú až také zložité.... ich odsadenie znamená, ku ktorému začiatku patrí ktorý koniec.....
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.14 sekund