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
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
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
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ů