Srozumitelný program si dělá co chce :-(

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
Huri
Příspěvky: 7
Registrován: 17 led 2021, 21:02
Reputation: 0

Srozumitelný program si dělá co chce :-(

Příspěvek od Huri » 23 led 2021, 15:50

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?

Huri
Příspěvky: 7
Registrován: 17 led 2021, 21:02
Reputation: 0

Re: Srozumitelný program si dělá co chce :-(

Příspěvek od Huri » 23 led 2021, 16:04

A sakra, tak koukám, že moje relé mají asi obrácenou logiku, takže jsem je zapínal všechny. :shock:
Ještě že jsem nic neodpálil. :oops:
Jdu to zkusit předělat.

Huri
Příspěvky: 7
Registrován: 17 led 2021, 21:02
Reputation: 0

Re: Srozumitelný program si dělá co chce :-(

Příspěvek od Huri » 23 led 2021, 16:31

Tak to bylo tím, už to šlape. :)

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Srozumitelný program si dělá co chce :-(

Příspěvek od KamilV » 23 led 2021, 19:50

Ony dost možná nebudou mít obrácenou logiku, ale možná máš prohozené zapojení NO vs NC.

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Srozumitelný program si dělá co chce :-(

Příspěvek od petan » 24 led 2021, 09:21

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:

Kód: Vybrat vše

bool promenna;
promenna = !digitalRead(tlacitko);
Tohle ti ciate zkopiruje negovany stav vstupu do promenne. Oba stavy = zapnuto/true i vypnuto/false

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Srozumitelný program si dělá co chce :-(

Příspěvek od kiRRow » 25 led 2021, 16:43

taky nechápu jak to může fungovat, když nikde není v programu stisknuto = 1 ... nebo digitalRead ...

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů