Obsah:

Použijte 1 analogový vstup pro 6 tlačítek pro Arduino: 6 kroků
Použijte 1 analogový vstup pro 6 tlačítek pro Arduino: 6 kroků

Video: Použijte 1 analogový vstup pro 6 tlačítek pro Arduino: 6 kroků

Video: Použijte 1 analogový vstup pro 6 tlačítek pro Arduino: 6 kroků
Video: Arduino: Základy 01 | Seznámení s Arduinem [sub] 2024, Červenec
Anonim
Pro Arduino použijte 1 analogový vstup pro 6 tlačítek
Pro Arduino použijte 1 analogový vstup pro 6 tlačítek

Často jsem přemýšlel, jak bych mohl pro svůj Arduino získat více digitálních vstupů. Nedávno mě napadlo, že bych měl být schopen použít jeden z analogových vstupů pro zavedení více digitálních vstupů. Rychle jsem vyhledal a zjistil, kde to lidé dokážou, ale že to umožňuje pouze stisknutí jednoho tlačítka najednou. Chci mít možnost SKUTEČNĚ stisknout libovolnou kombinaci tlačítek. Takže s pomocí OBCHODŮ TINKERCAD jsem se rozhodl to uskutečnit.

Proč bych měl chtít současné stisknutí tlačítka? Jak je znázorněno na návrhu obvodů TinkerCad, lze jej použít pro vstupy přepínačů DIP pro výběr různých režimů v programu.

Obvod, na který jsem přišel, využívá 5V zdroj dostupný z Arduina a používá 7 rezistorů a 6 tlačítek nebo přepínačů.

Krok 1: Okruh

Okruh
Okruh

Arduino má analogové vstupy, které přijímají vstup 0V až 5V. Tento vstup má 10bitové rozlišení, což znamená, že signál je rozdělen na 2^10 segmentů nebo 1024 počítání. Na základě toho by maximum, které bychom mohli kdy zadat do analogového vstupu, a současně umožnit současné stisknutí, bylo 10 tlačítek na 1 analogový vstup. Ale tohle není dokonalý svět. Ve vodičích je odpor, šum z vnějších zdrojů a nedokonalé napájení. Abych měl dostatek flexibility, plánoval jsem navrhnout toto pro 6 tlačítek. To bylo částečně ovlivněno skutečností, že obvody TinkerCAD měly objekt DIP Switch se 6 přepínači, což usnadnilo testování.

Prvním krokem v mém návrhu bylo zajistit, aby každé tlačítko při individuálním stisknutí poskytovalo jedinečné napětí. To vyloučilo, že všechny odpory mají stejnou hodnotu. Dalším krokem bylo, že hodnoty odporu, když byly přidány paralelně, nemohly mít stejný odpor jako jakákoli jednotlivá hodnota odporu. Pokud jsou odpory zapojeny paralelně, lze výsledný odpor vypočítat pomocí Rx = 1/[(1/R1)+(1/R2)]. Pokud tedy R1 = 2000 a R2 = 1000, Rx = 667. Spekuloval jsem, že zdvojnásobením velikosti každého rezistoru neuvidím stejný odpor u žádné z kombinací.

Takže můj obvod do tohoto bodu měl mít 6 přepínačů, každý s vlastním odporem. K dokončení tohoto obvodu je však zapotřebí ještě jeden odpor.

Poslední odpor má 3 účely. Nejprve funguje jako odpor Pull-Down. Bez rezistoru, když nejsou stisknuta žádná tlačítka, je obvod neúplný. To by umožnilo napětí na analogovém vstupu Arduino plavat na jakýkoli napěťový potenciál. Odpor Pull-Down v podstatě stahuje napětí na 0 V. Druhým účelem je omezit proud tohoto obvodu. Ohmův zákon uvádí, že V = IR nebo napětí = proud vynásobený odporem. U daného zdroje napětí platí, že čím větší je odpor, tím menší bude proud. Pokud by tedy byl na odpor 500 ohmů aplikován signál 5 V, největší proud, který bychom mohli vidět, by byl 0,01 A nebo 10 mA. Třetím účelem je poskytnout signální napětí. Celkový proud protékající posledním odporem by byl: i = 5V/Rtotal, kde Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Zahrňte však pouze 1/Rx pro každý odpor, který má stisknuté odpovídající tlačítko. Z celkového proudu bude napětí dodávané do analogového vstupu i*Rlast nebo i*500.

Krok 2: Důkaz - Excel

Důkaz - Excel
Důkaz - Excel

Nejrychlejším a nejsnadnějším způsobem, jak dokázat, že s tímto obvodem získám jedinečné odpory a tím i jedinečná napětí, bylo využití schopností Excelu.

Nastavil jsem všechny možné kombinace přepínacích vstupů a uspořádal je postupně podle binárních vzorů. Hodnota „1“znamená, že je spínač zapnutý, prázdný znamená, že je vypnutý. V horní části tabulky jsem vložil hodnoty odporu pro každý spínač a pro stahovací odpor. Potom jsem vypočítal ekvivalentní odpor pro každou z kombinací, kromě případů, kdy jsou všechny odpory vypnuté, protože tyto odpory nebudou mít vliv, aniž by je měl napájecí zdroj. Aby byly moje výpočty snadné, abych mohl kopírovat a vkládat do každé kombinace, zahrnul jsem do výpočtu všechny kombinace vynásobením každé hodnoty spínače (0 nebo 1) její hodnoty převráceného odporu. Pokud by byl vypínač vypnutý, odstranil by se tím jeho odpor z výpočtu. Výslednou rovnici lze vidět na obrázku tabulky, ale Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Pomocí Itotal = 5V / Req určíme celkový proud obvodem. Jedná se o stejný proud, který prochází odporem Pull-down a poskytuje nám napětí pro náš analogový vstup. To se vypočítá jako Vin = celkem x Rx. Když zkoumáme data Req i Vin, vidíme, že skutečně máme jedinečné hodnoty.

V tuto chvíli se zdá, že náš obvod bude fungovat. Nyní zjistěte, jak programovat Arduino.

Krok 3: Programování Arduino

Programování Arduino
Programování Arduino
Programování Arduino
Programování Arduino
Programování Arduino
Programování Arduino

Když jsem začal přemýšlet o tom, jak naprogramovat Arduino, původně jsem plánoval nastavení jednotlivých rozsahů napětí pro určení, zda je spínač zapnutý nebo vypnutý. Ale když jsem jednu noc ležel v posteli, napadlo mě, že bych k tomu měl najít rovnici. Jak? VYNIKAT. Excel má schopnost vypočítat rovnice tak, aby co nejlépe odpovídaly datům v grafu. K tomu budu chtít rovnici Integer Value přepínačů (binární) versus napěťový vstup odpovídající této hodnotě. V mém sešitu aplikace Excel jsem vložil celočíselnou hodnotu na levou stranu tabulky. Nyní k určení mé rovnice.

Zde je rychlý návod, jak určit rovnici čáry v Excelu.

1) Vyberte buňku, která neobsahuje žádná data. Pokud máte vybranou buňku, která obsahuje data, Excel se pokusí odhadnout, co chcete trendovat. Díky tomu je nastavení trendu mnohem obtížnější, protože Excel jen zřídka předpovídá správně.

2) Vyberte kartu „Vložit“a vyberte graf „Rozptyl“.

3) Klikněte pravým tlačítkem do pole grafu a klikněte na „Vybrat data…“. Zobrazí se okno „Vybrat zdroj dat“. Kliknutím na tlačítko Přidat pokračujte k výběru dat.

4) Zadejte název série (volitelně). Vyberte rozsah pro osu X kliknutím na šipku nahoru a výběrem dat napětí. Vyberte rozsah pro osu Y kliknutím na šipku nahoru a výběrem Integer Data (0-63).

5) Klikněte pravým tlačítkem na datové body a vyberte „Přidat trendovou linii…“V okně „Formátovat linii trendu“vyberte tlačítko Polynom. Při pohledu na trend vidíme, že Pořadí 2 se zcela neshoduje. Vybral jsem Objednávku 3 a cítil jsem, že to bylo mnohem přesnější. Zaškrtněte políčko „Zobrazit rovnici na grafu“. V grafu je nyní zobrazena konečná rovnice.

6) Hotovo.

OK. Zpět k programu Arduino. Nyní, když máme rovnici, je programování Arduina snadné. Celé číslo, které představuje polohy přepínače, se vypočítá v 1 řádku kódu. Použitím funkce „bitread“můžeme uchopit hodnotu každého jednotlivého bitu a znát tak stav každého tlačítka. (VIZ FOTKY)

Krok 4: Obvody TinkerCAD

Obvody TinkerCAD
Obvody TinkerCAD

Pokud jste si neobjednali obvody TinkerCAD, udělejte to nyní. POČKEJTE!!!! Dokončete čtení mého Instructable a poté se podívejte. TinkerCAD Circuits velmi usnadňuje testování obvodů Arduino. Obsahuje několik elektrických předmětů a Arduinos, dokonce vám umožňuje naprogramovat Arduino pro testování.

Abych otestoval svůj obvod, nastavil jsem 6 přepínačů pomocí sady přepínačů DIP a přivázal je k odporům. Abych dokázal, že hodnota napětí v mé tabulce Excel byla správná, zobrazil jsem voltmetr na vstupu do Arduina. To vše fungovalo podle očekávání.

Abych dokázal, že programování Arduino fungovalo, vyslal jsem stavy přepínačů do LED pomocí digitálních výstupů Arduina.

Poté jsem přepnul každý přepínač pro každou možnou kombinaci a jsem hrdý na to, že mohu říci „FUNGUJE“!!!

Krok 5: „Tak dlouho a díky za všechny ryby“. (odkaz 1)

Ještě to musím vyzkoušet na skutečném vybavení, protože právě cestuji za prací. Ale poté, co jsem to dokázal s TinkerCAD Circuits, věřím, že to bude fungovat. Problém spočívá v tom, že hodnoty odporů, které jsem uvedl, nejsou všechny standardní hodnoty pro odpory. Abych to obešel, plánuji použít potenciometry a kombinace odporů, abych získal hodnoty, které potřebuji.

Děkuji, že jste si přečetli můj návod. Doufám, že vám to pomůže s vašimi projekty.

Zanechte prosím komentáře, pokud jste se pokusili vyřešit stejnou překážku a jak jste ji vyřešili. Rád bych se dozvěděl více způsobů, jak toho dosáhnout.

Krok 6: Reference

Nemyslel sis, že bych poskytl nabídku bez uvedení odkazu na její zdroj, že?

čj. 1: Adams, Douglas. Tak dlouho a díky za všechny ryby. (4. kniha „Trilogie“Stopařova průvodce po galaxii)

Doporučuje: