Obsah:
- Zásoby
- Krok 1: Jak to funguje …
- Krok 2: Nahrání kódu
- Krok 3: Požadované knihovny:
- Krok 4: Připojení
- Krok 5: Slap It All together
- Krok 6: Další vylepšení:
Video: Robot, který zjistí, zda vás prodejce elektroniky podvádí nebo ne: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
V loňském roce jsme s tátou šli do nově otevřeného obchodu s robotikou/elektronikou velmi blízko místa, kde žijeme. Když jsem tam vstoupil, bylo to plné elektroniky, serovů, senzorů, Raspberry pis a Arduinos. Druhý den jsme šli do stejného obchodu a koupili mnoho senátorů a 3 Arduiny v hodnotě asi 150 USD. Jakmile jsem šel domů, nefungovaly žádné jiné produkty kromě Arduino Mega. Byli jsme scammed asi 130 USD, což je hodně.
Rozhodl jsem se tedy vytvořit robota, který dokáže otestovat asi 12 senzorů a 2 motory (stále pracuje na servu) a dokáže určit, zda je produkt vadný.
Pojďme rovnou do toho!
Zásoby
1. Arduino UNO
2. 2,4 dotykový displej TFT
3. pár propojovacích vodičů
4. senzory a motory, abyste je mohli vyzkoušet (zde jsem použil - pohybový senzor, plynový senzor MQ6, zvukový senzor, potenciometr a snímač hladiny vody)
Krok 1: Jak to funguje …
Naprogramoval jsem Arduino na vytváření a interaktivní uživatelské rozhraní s TFT displejem. Jak víme, displej TFT má pouze jeden volný pin, tj. Kolík A5. (pokud používáte UNO). Takže jakýkoli senzor, který ke čtení dat používá analogové piny, je s tímto nastavením kompatibilní …
V uživatelském rozhraní můžete změnit barvu pozadí plochy a můžete otevřít aplikaci, kterou jsem pro Arduino vyvinul pro testování senzorů.
Při otevření aplikace vidíte 2 možnosti, VSTUP a VÝSTUP. takže pokud kliknete na Vstup, zobrazí se 4 senzory (Je kompatibilní s 12, ale zatím je nemám programovat, protože se blíží zkoušky….bez času:(. Kdokoli může kód upravit…)
A může také zkontrolovat, zda servomotor funguje, připojte jej do slotu.
podívej se:
Krok 2: Nahrání kódu
Kód je 600řádkový program, který jsem pečlivě nakódoval asi za 50 hodin. Má několik chyb, takže je prosím upravte a pošlete mi je na moji poštu ([email protected]).
Nahrajte kód a připojte štít TFT k Arduinu. Doporučuji vám pohrát si s uživatelským rozhraním, abyste se v něm lépe zorientovali.
Kód:
#zahrnout
#include #include #include #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 #define BLUE 0x001F #define NAVY 0x000F #define RED 0xF800 # #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XM A2 #define XM A2 #define XM A2 #define 160 #define TS_MAXX 160 #define TS_MAXY 970 TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); #define BOXSIZE 40 #define PENRADIUS 3 #define MINPRESSURE 10 #define MAXPRESSURE 1000 int zvuk; znakový stav = 6; int dotek = 0; int barva = ČERNÁ; int redir = 0; int ota; neplatné nastavení () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation (45); tft.setTextSize (0,5); tft.fillScreen (BÍLÁ); tft.setCursor (60, 160); tft.setTextColor (ČERNÁ); tft.print („Přejetím se přihlásíte“); } void loop () {float sensorVoltage; float sensorValue; TSPoint p = ts.getPoint (); pinMode (XM, VÝSTUP); pinMode (YP, OUTPUT); if (pz> MINPRESSURE && pz 240 && px 130 && py 240 && px 20 && py 240 && px 20 && py 160 && px 12 && py 240 && px 20 && py 240 && px 20 && py 40 && px 15 && py 150 && px 40 && py 150 && px 80 && py 150 && px 120 && py 150 && px 170 && py 90 && px 40 && py 90 && px 80 && py 90 && px 120 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 100 && px 20 && py 200 && px 100 && py 100 && px 20 && py 100 && px 20 && py 100 && px 20 && py <100) {touch = 26; }} if (touch == 1 && state == 6) {tft.setRotation (0); tft.fillScreen (barva); zvuk = 0; tft.fillRect (200, 180, 80, 140, BÍLÁ); tft.drawRect (201, 181, 81, 141, ČERNÁ); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, ČERNÁ); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, ČERNÝ); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, ČERNÝ); tft.fillRect (45, 180, 30, 120, MODRÁ); tft.drawRect (46, 181, 31, 121, ČERNÝ); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, ČERNÝ); tft.fillRect (115, 180, 30, 120, ZELENÁ); tft.drawRect (116, 181, 31, 121, ČERNÁ); tft.fillRect (150, 180, 30, 120, ŽLUTÝ); tft.drawRect (151, 181, 31, 121, ČERNÝ); tft.fillTriangle (210, 30, 210, 50, 220, 40, BÍLÁ); tft.fillRect (200, 35, 12, 12, BÍLÁ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČERNÁ); tft.drawRect (200, 35, 12, 12, ČERNÝ); tft.drawCircle (210, 40, 14, BÍLÁ); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print („Nastavení“); tft.fillRoundRect (45, 75, 75, 75, 4, BÍLÁ); tft.drawRoundRect (45, 75, 75, 75, 4, ČERNÁ); tft.fillRect (75, 75, 15, 30, ČERNÝ); tft.fillRect (75, 120, 15, 30, ČERNÝ); tft.fillRect (90, 105, 30, 15, ČERNÁ); tft.fillRect (45, 105, 30, 15, ČERNÁ); stav = 7; dotek = 0; ota = 0; } if (touch == 2) {tft.fillScreen (WHITE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BÍLÁ); tft.fillRect (200, 35, 12, 12, BÍLÁ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČERNÁ); tft.drawRect (200, 35, 12, 12, ČERNÝ); tft.drawCircle (210, 40, 14, ČERNÁ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČERNÁ); tft.drawLine (300, 30, 270, 30, ČERNÁ); tft.setCursor (20, 200); tft.print („personalizace“); tft.setCursor (20, 170); tft.print („odhlásit se“); tft.setCursor (20, 140); tft.print („periferie“); tft.setCursor (20, 110); tft.print („O aplikaci“); dotek = 1; stav = 2; } if (touch == 10 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (10, 160); tft.setTextColor (ČERNÁ); tft.print ("Vytvořeno a vyvinuto"); tft.setCursor (100, 190); tft.print ("od:"); tft.setCursor (60, 220); tft.print („Dospívající z Indie“); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BÍLÁ); tft.fillRect (200, 35, 12, 12, BÍLÁ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČERNÁ); tft.drawRect (200, 35, 12, 12, ČERNÝ); tft.drawCircle (210, 40, 14, ČERNÁ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČERNÁ); tft.drawLine (300, 30, 270, 30, ČERNÁ); stav = 6; } if (touch == 11 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (60, 40); tft.print („Pick a“); tft.setCursor (40, 60); tft.print ("barva pozadí"); tft.fillRect (60, 180, 45, 45, ČERVENÁ); tft.fillRect (120, 180, 45, 45, ŽLUTÝ); tft.fillRect (180, 180, 45, 45, MODRÁ); tft.fillRect (240, 180, 45, 45, ZELENÁ); tft.fillRect (60, 130, 45, 45, MAGENTA); tft.fillRect (120, 130, 45, 45, NAVY); tft.fillRect (180, 130, 45, 45, LIGHTGREY); tft.fillRect (240, 130, 45, 45, CYAN); tft.fillRect (60, 80, 45, 45, BÍLÁ); tft.drawRect (60, 80, 45, 45, ČERNÝ); tft.fillRect (120, 80, 45, 45, ČERNÝ); tft.fillRect (180, 80, 45, 45, OLIVE); tft.fillRect (240, 80, 45, 45, PURPLE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BÍLÁ); tft.fillRect (200, 35, 12, 12, BÍLÁ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČERNÁ); tft.drawRect (200, 35, 12, 12, ČERNÝ); tft.drawCircle (210, 40, 14, ČERNÁ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČERNÁ); tft.drawLine (300, 30, 270, 30, ČERNÁ); stav = 6; if (redir == 1) {color = WHITE; } if (redir == 2) {color = BLACK; } if (redir == 3) {color = OLIVE; } if (redir == 4) {color = PURPLE; } if (redir == 5) {color = MAGENTA; } if (redir == 6) {color = NAVY; } if (redir == 7) {color = LIGHTGREY; } if (redir == 8) {color = CYAN; } if (redir == 9) {color = RED; } if (redir == 10) {color = YELLOW; } if (redir == 11) {color = BLUE; } if (redir == 12) {color = GREEN; }} if (touch == 26) {ota = 1; tft.fillScreen (BÍLÁ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BÍLÁ); tft.fillRect (200, 35, 12, 12, BÍLÁ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČERNÁ); tft.drawRect (200, 35, 12, 12, ČERNÝ); tft.drawCircle (210, 40, 14, ČERNÁ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČERNÁ); tft.drawLine (300, 30, 270, 30, ČERNÁ); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Vstup"); tft.setCursor (30, 150); tft.print ("Výstup"); tft.drawRect (25, 130, 90, 30, ČERNÝ); tft.drawRect (25, 60, 90, 30, ČERNÝ); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Hladina vody"); tft.setCursor (150, 170); tft.print ("Hladina plynu"); tft.setCursor (150, 120); tft.print („Vzdálenost“); tft.setCursor (150, 70); tft.print („Zvuk“); dotek = 1; stav = 2; }}} while (sound == 1) {tft.fillScreen (WHITE); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Hladina zvuku ="); Serial.println (sensorVoltage); zpoždění (1000); if (zvuk == 0) {break; }}}}
Krok 3: Požadované knihovny:
- Adafruit_GFX.h
- Adafruit_TFTLCD.h
- TouchScreen.h
Github odkazy pro totéž:
github.com/adafruit/Adafruit-GFX-Library
github.com/adafruit/TFTLCD-Library
github.com/adafruit/Adafruit_TouchScreen
Krok 4: Připojení
Potřebujete 6 propojovacích vodičů. 3 muži a 3 ženy. pájejte je přímo na desku Arduino takto:
Krok 5: Slap It All together
Zastrčte dráty do arduina (viz obrázek), v případě potřeby použijte lepicí pistoli …
Poté připevněte štít TFT a poté otestujte své senzory.
Děkujeme, že jste se posunuli úplně dolů. Pokud máte pocit, že je tento projekt jedinečný a užitečný, určitě pro mě hlasujte
Šťastné vytváření a pozor na podvodníky s elektronikou?
Krok 6: Další vylepšení:
- Větší kompatibilita senzorů
- Bylo nutné dokončit kód servomotoru
- Další aplikace, která může komunikovat s moduly Bluetooth, abychom s ní mohli ovládat robota poháněného technologií Bluetooth.
- Oprava chyb
Doporučuje:
MyPetBot (robot, který vás sleduje): 10 kroků (s obrázky)
MyPetBot (Bot, který vás sleduje): Ai je jednou z nejkrásnějších aplikací matematiky. Je to v podstatě spousta operací s maticemi optimalizovaných tak, aby odpovídaly výsledku, který hledáte. Naštěstí existuje spousta open source nástrojů, které nám umožňují toho využít. Původně jsem
Hovorný prodejce karet Lego: 20 kroků (s obrázky)
Hovorný prodejce karet Lego: Většina lidí hraje karetní hry pro zábavu, ale také přináší několik výhod pro naše emoční a duševní zdraví. Je to jedna z nejpopulárnějších indoorových aktivit. Většina karetních her jako Rummy a Poker potřebuje dealera. Tak jsme tady
Jak proměnit váš mobilní telefon LG EnV 2 na přenosný vytáčený modem pro váš notebook (nebo stolní počítač): 7 kroků
Jak proměnit váš mobilní telefon LG EnV 2 na přenosný vytáčený modem pro váš notebook (nebo stolní počítač): Všichni jsme někdy měli potřebu používat internet tam, kde to nebylo možné, například v autě , nebo na dovolené, kde si za používání své wifi účtují nákladnou částku peněz za hodinu. konečně jsem přišel na jednoduchý způsob, jak získat
Více pevných nebo optických jednotek v počítači, který opravdu neumí: 8 kroků
Několik pevných disků nebo optických jednotek v počítači, který opravdu neumí: PRVNÍ DOBA Takže jsem to po letech trollování a čtení vytvořil podle pokynů, konečně jsem měl odvahu vytvořit si vlastní. Stručně řečeno, ukazuji vám, jak nainstalovat hardware (v tomto případě dva pevné disky IDE a dvě optické jednotky IDE) do IDE m
Zkontrolujte, zda je váš osobní server snadný: 3 kroky
Zkontrolovat na svém osobním serveru s lehkostí: Jste na svém počítači, flirtujete s nějakou " dívkou " na MSN, když si uvědomíte, že váš server může každou sekundu vybuchnout. Naštěstí můžete na monitoru stisknout jednoduché tlačítko a zachránit svět. (V horším případě se nedostávám do situace, kdy si to neplánujeme) Všechno