Srozumitelný program si dělá co chce :-(
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Srozumitelný program si dělá co chce :-(
Mám tlačátko připojené na pullup pin číslo 7 a GND.
Dále mám podle mě naprosto srozumitelný kód:
int tlacitko = 7;
int stisknuto = 1;
int relePin1 = 10;
int relePin2 = 11;
void setup() {
Serial.begin(9600);
pinMode(relePin1, OUTPUT);
pinMode(relePin2, OUTPUT);
pinMode(tlacitko, INPUT_PULLUP);
}
void loop() {
if (digitalRead(tlacitko) == 0){
stisknuto = 0;
}
if (stisknuto == 1){
Serial.println(stisknuto);
digitalWrite(relePin1, HIGH);
delay(2000);
digitalWrite(relePin1, LOW);
}
if (stisknuto == 0){
Serial.println(stisknuto);
digitalWrite(relePin2, HIGH);
delay(2000);
digitalWrite(relePin2, LOW);
}
}
Tlačítko funguje dle programu a sériový monitor vypisuje vše správně.
Když ale k pinu 5V a druhému pinu GND připojím napájení modulu se 4 relé.
Tlačítko přestane reagovat.
Nemáte někdo tušení proč?
Někde jsem četl, že musím dávat pozor, protože relé mají velkou spotřebu (4x70mA).
Já ale nikdy nezapánám víc než jedno relé (nikdy nejdedou dvě najednou), takže by s napájením přímo z Arduina neměl být problém.
Nebo se pletu?
Může být chyba v tomhle?
Dále mám podle mě naprosto srozumitelný kód:
int tlacitko = 7;
int stisknuto = 1;
int relePin1 = 10;
int relePin2 = 11;
void setup() {
Serial.begin(9600);
pinMode(relePin1, OUTPUT);
pinMode(relePin2, OUTPUT);
pinMode(tlacitko, INPUT_PULLUP);
}
void loop() {
if (digitalRead(tlacitko) == 0){
stisknuto = 0;
}
if (stisknuto == 1){
Serial.println(stisknuto);
digitalWrite(relePin1, HIGH);
delay(2000);
digitalWrite(relePin1, LOW);
}
if (stisknuto == 0){
Serial.println(stisknuto);
digitalWrite(relePin2, HIGH);
delay(2000);
digitalWrite(relePin2, LOW);
}
}
Tlačítko funguje dle programu a sériový monitor vypisuje vše správně.
Když ale k pinu 5V a druhému pinu GND připojím napájení modulu se 4 relé.
Tlačítko přestane reagovat.
Nemáte někdo tušení proč?
Někde jsem četl, že musím dávat pozor, protože relé mají velkou spotřebu (4x70mA).
Já ale nikdy nezapánám víc než jedno relé (nikdy nejdedou dvě najednou), takže by s napájením přímo z Arduina neměl být problém.
Nebo se pletu?
Může být chyba v tomhle?
Re: Srozumitelný program si dělá co chce :-(
A sakra, tak koukám, že moje relé mají asi obrácenou logiku, takže jsem je zapínal všechny.
Ještě že jsem nic neodpálil.
Jdu to zkusit předělat.
Ještě že jsem nic neodpálil.
Jdu to zkusit předělat.
Re: Srozumitelný program si dělá co chce :-(
Tak to bylo tím, už to šlape.
Re: Srozumitelný program si dělá co chce :-(
Ony dost možná nebudou mít obrácenou logiku, ale možná máš prohozené zapojení NO vs NC.
Re: Srozumitelný program si dělá co chce :-(
Pull_up obraci logiku, rele muze mit obracenou logiku, ale hlavne nikde (krome zacatku programu) nepridelujes promenne "stisknuto" hodnotu 1.
Doporucuju pouzit jako promennou bool. Muzes pak jednoduse napsat:
Tohle ti ciate zkopiruje negovany stav vstupu do promenne. Oba stavy = zapnuto/true i vypnuto/false
Doporucuju pouzit jako promennou bool. Muzes pak jednoduse napsat:
Kód: Vybrat vše
bool promenna;
promenna = !digitalRead(tlacitko);
Re: Srozumitelný program si dělá co chce :-(
taky nechápu jak to může fungovat, když nikde není v programu stisknuto = 1 ... nebo digitalRead ...
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 59 hostů