Könnyen csinálhatsz egy "elektromos dobot" egy kis alufólia és egy kanál segítségével.
Ez ugye tulajdonképpen egy... egy nyomógomb: mert a két drót összeér, ha a kanalat az alufóliához érinted.
Indítsd el a bongókat itt http://makeymakey.com/bongos/ és próbáld ki az előző oldalon a progit, ami ezzel dobol.
Azonban most a gomb helyett kösd be az alufóliás dobot! Próbáld ki! Mit tapasztalsz?
Nekem tök jól ment minden, de előfordult, hogy egyetlen "dobütés" helyett 2-3 ütésnek a hangját hallottam. Pedig én csak egyet ütöttem, komolyan! Mi lehet a gond?
Sajnos az történik, hogy ugyan én csak egyet akarok ütni, de mihelyst hozzáér az ütő a dobhoz, onnét rögvest picit visszapattan, majd ismét hozzáér. Ez elég gyorsan történik, de a mikrovezérlőnk simán észreveszi, és emiatt kapunk több dobütést. Ezt a nem várt be-ki-be-ki-be kapcsolgatás a prellezés. Sajnos a legtöbb nyomógomb, és kapcsoló is műveli ezt, némelyik kevésbé rontja el, némelyik sokkal jobban.
Szerencsére a billentyűzet gombjai sokkal precízebbek, így ha egy gombot lenyomsz, akkor abból egyetlen betű lesz.
A fóliás dobunk viszont nem ilyen precíz. Mit tegyünk? Egyszerű: ugyanúgy mint az infra esetén, fogjuk be a szemünket egy kicsi időre, hogy a prellezéskor érkező változásokra ne reagáljunk.
void setup() {
pinMode(0,INPUT_PULLUP);
pinMode(1,INPUT_PULLUP);
Keyboard.begin(); // indítsuk el az USB kezelését
}
void loop() {
if (digitalRead(0)==0) {
Keyboard.press(' ');
delay(100); // most nem figyelünk 100ms-ig
while(digitalRead(0)==0) {
delay(10);
}
Keyboard.release(' ');
}
if (digitalRead(1)==0) {
Keyboard.press(KEY_LEFT_ARROW);
delay(100); // most nem figyelünk 100ms-ig
while(digitalRead(1)==0) {
delay(10);
}
Keyboard.release(KEY_LEFT_ARROW);
}
}
No ez már döfi! Jöhet mindkét csatorna! De ehhez kelleni fog egy további darab alufólia, és egy kis ragasztó, valahogy így:
Van egy kis csalás. Mármint hogy egy ütőnk van, és két dobunk. Most akkor hova kössük a 0-ás, 1-es portot, meg a GND-t? Nyilván mindegyiket valahova - de nem mindegy, hogy hova. Ha mondjuk a GND-t az egyik dobra kötöd, a 0-ás portot az ütőre, a 2-eset meg a másik dobra, akkor csak az első dob fog dobolni. Amikor az ütővel a 2-es dobra ütnél, akkor az 1-es és 2-es port záródik össze, nem pedig a GND és a 2-es port. Viszont, ha a második dobot az elsőhöz érinted, akkor meg szól :)
Tehát a logika: a GND legyen az ütőn, a többi bemenet meg a felületeken, így bármely ütés a GND-vel kapcsolja össze a megütött felület inputját.
Ahogy a videón is látszik, sokat segít, ha a fólia le van ragasztva az asztalra, vagy rá van ragasztva valami nehezebbre: a bal oldali dob, ahol a fólia egy CD lemezen van, sokkal stabilabb mint a jobb oldali, ahol a fólia csak úgy zizeg a semmi közepén.