RFID + tlacitka

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Odpovědět
Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

RFID + tlacitka

Příspěvek od Kony » 11 zář 2022, 15:22

Ahoj, snazim se mit ctecku RFID a pomoci tlacitek urcit co se ma udelat a stale mi to nejde

https://pastebin.com/3adc9RYD

porad se mi jakoby sepinalo tlacitko prichod (D0) a kdyz chci odchod (D1) tak musim tlacitko odchodu drzet... a pak aniz bych zmackl tlacitko prichod tak je stale zapnuty.... mohl by mi nekdo prosim poradit kde je chyba ??

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: RFID + tlacitka

Příspěvek od martinius96 » 11 zář 2022, 16:19

Myslím si, že D0 (GPIO16) nemá PULLUP, alebo nefunguje tak ako má... Ten pin napríklad nejde použiť ani na OneWire senzory. Používal som ho maximálne pre WAKE signál v prípade ULP programu. To, že ti to nezareaguje ihneď na stlačenie D1 (GPIO5) bude skôr z dôvodu, že sa stále vykonáva ten kód pre D0, ktoré je stále v stave LOW a spúšťa ti tú logiku, ktorá trvá nejaký čas (a program vo chvíli, keď ty stláčas tlačidlo nenačítava ten stav).

Ten program by mohol obsahovať aj debounce tlačidla, aby sa tá logika na stlačenie pustila iba raz.
Keďže sa request bude vykonávať pár milisekúnd, je možné, že stav príchodu alebo odchodu si na server pošleš aj 6 krát, lebo ti stav tlačidla bude kmitať HIGH-LOW-HIGH-LOW...

Taktiež v programe máš int readsuccess, používaš ho v:

Kód: Vybrat vše

if (readsuccess) {
 .
 .
 }
ale nikde ten readsuccess nenastavíš na 1 (TRUE).
Tiež funkciu getid() nikde nevoláš, teda RFID čítačka RC522 ti v tomto projekte asi zatiaľ nefunguje.

Z toho, čo v tom zdrojovom kóde vidím, by ti to nemalo ani načítavaš stavy tlačidiel, keďže if (readsuccess) sa v aktuálnom programe nikdy nesplní.

Tiež v programe vidím konflikt medzi SS_PIN (D4) a ON_Board_LED (2), keďže D4 je GPIO2, využívaš rovnaký pin pre chip select a LED.

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: RFID + tlacitka

Příspěvek od Kony » 11 zář 2022, 16:36

kdyz nastavim tlacitko na D8 tak je to stejny

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

Re: RFID + tlacitka

Příspěvek od kiRRow » 12 zář 2022, 15:14

Čtení karty a tlačítka úplně oddělit od sebe v programu. Zkontroluji tlačítka, pokud je nějaké stisknuté poznamenám do proměnné které tlačítko, čas kdy jsem to zjistil, abych mohl tu proměnnou vymazat třeba po 10s, když nikdo nepřiloží kartu. Zkontroluji jestli tam je karta, pokud ano, kouknu které tlačítko bylo stisknuto a dle toho provedu požadovanou operaci. Nakonec proměnnou s tlačítkem smažu. Pak budeš i moct odmítnout číst kartu, pokud nebyla zvolena akce.
Tím se zbavíš i té duplicity kódu ... a bude to vypadat nějak takhle

Kód: Vybrat vše

if (digitalRead(D0) == LOW){
	Serial.println("Zmacknuty prichod");
	akceID = 1;
}
if (digitalRead(D1) == LOW){
	Serial.println("Zmacknuty odchod");
	akceID = 2;
}
if (digitalRead(D2) == LOW){
	Serial.println("Zmacknuta registrace");
	akceID = 3;
}
if(akceID > 0){
	if(ctiKartu() != false){// akce zvolena, karta načtena, poskládáme http request
	        String UIDresultSend;
	        UIDresultSend = StrUID;
		String postData;
		postData = "akce=" + akceID + "&UIDresult=" + UIDresultSend;
		http.begin(c,"http://192.168.1.249/updateUID.php");
		http.addHeader("Content-Type", "application/x-www-form-urlencoded");
		int httpCode = http.POST(postData);
		Serial.println(UIDresultSend);
		Serial.println(httpCode);
		http.end();
	}
}
Ty tlačítka budou chtít debounce. Rozhodně bych si tam dal i nějakou zvukovou signalizaci pípákem.

Odpovědět

Kdo je online

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