Obsah:

Robot, ktorý zistí, či vás predajca elektroniky podvádza alebo nie: 6 krokov
Robot, ktorý zistí, či vás predajca elektroniky podvádza alebo nie: 6 krokov

Video: Robot, ktorý zistí, či vás predajca elektroniky podvádza alebo nie: 6 krokov

Video: Robot, ktorý zistí, či vás predajca elektroniky podvádza alebo nie: 6 krokov
Video: Часть 3 — Аудиокнига «Джунгли» Эптона Синклера (гл. 08–12) 2024, Júl
Anonim
Robot, ktorý zistí, či vás predajca elektroniky podvádza alebo nie
Robot, ktorý zistí, či vás predajca elektroniky podvádza alebo nie

Minulý rok sme sa s otcom vybrali do novootvoreného obchodu s robotikou/elektronikou, veľmi blízko miesta, kde žijeme. Keď som tam vstúpil, bolo to plné elektroniky, serov, senzorov, Raspberry pis a Arduinos. Nasledujúci deň sme šli do rovnakého obchodu a kúpili sme veľa senátorov a 3 Arduino v hodnote asi 150 USD. Hneď ako som išiel domov, okrem Arduino Mega nefungoval žiadny iný výrobok. Boli sme scammed za asi 130 USD, čo je veľa.

Rozhodol som sa teda vytvoriť robota, ktorý dokáže otestovať asi 12 senzorov a 2 motory (stále pracuje na servo) a dokáže zistiť, či je produkt chybný.

Poďme priamo do toho!

Zásoby

1. Arduino UNO

2. 2,4 dotykový displej TFT

3. pár prepojovacích káblov

4. senzory a motory, aby ste ich mohli otestovať (tu som použil - pohybový senzor, plynový senzor MQ6, zvukový senzor, potenciometer a snímač hladiny vody)

Krok 1: Ako to funguje …

Image
Image

Naprogramoval som Arduino na vytváranie a interaktívne používateľské rozhranie s displejom TFT. Ako vieme, TFT displej má iba jeden voľný kolík, tj. Kolík A5. (ak používate UNO). Takže akýkoľvek snímač, ktorý používa analógové piny na čítanie údajov, je kompatibilný s týmto nastavením …

V používateľskom rozhraní môžete zmeniť farbu pozadia pracovnej plochy a môžete otvoriť aplikáciu, ktorú som vyvinul pre Arduino na testovanie senzorov.

Po otvorení aplikácie sa vám zobrazia 2 možnosti, VSTUP a VÝSTUP. takže ak kliknete na Vstup, zobrazí sa 4 senzory (Je kompatibilný s 12, ale ešte ho musím naprogramovať, pretože sa blížia skúšky….nie je čas:(. Ktokoľvek môže voľne upravovať kód …)

A môže tiež skontrolovať, či váš servomotor funguje, keď ho pripojíte do zásuvky.

pozrieť sa:

Krok 2: Odovzdanie kódu

Kód je 600 -riadkový program, ktorý som starostlivo nakódoval asi za 50 hodín. Má niekoľko chýb, preto ich prosím opravte a pošlite mi ich na moju poštu ([email protected]).

Nahrajte kód a pripojte štít TFT k Arduinu. Odporúčam vám hrať sa s používateľským rozhraním, aby ste sa v ňom lepšie zorientovali.

Kód:

#zahrnúť

#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 # 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 sound; znakový stav = 6; int dotyk = 0; vnútorná farba = ČIERNA; int redir = 0; int ota; void setup () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation (45); tft.setTextSize (0,5); tft.fillScreen (BIELY); tft.setCursor (60, 160); tft.setTextColor (ČIERNA); tft.print („Potiahnutím prstom sa prihlásite“); } void loop () {float sensorVoltage; plavákový senzorHodnota; 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 (farba); zvuk = 0; tft.fillRect (200, 180, 80, 140, BIELY); tft.drawRect (201, 181, 81, 141, ČIERNY); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, ČIERNY); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, ČIERNY); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, ČIERNY); tft.fillRect (45, 180, 30, 120, MODRÁ); tft.drawRect (46, 181, 31, 121, ČIERNY); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, ČIERNY); tft.fillRect (115, 180, 30, 120, ZELENÁ); tft.drawRect (116, 181, 31, 121, ČIERNY); tft.fillRect (150, 180, 30, 120, ŽLTÝ); tft.drawRect (151, 181, 31, 121, ČIERNY); tft.fillTriangle (210, 30, 210, 50, 220, 40, BIELY); tft.fillRect (200, 35, 12, 12, BIELY); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČIERNY); tft.drawRect (200, 35, 12, 12, ČIERNY); tft.drawCircle (210, 40, 14, BIELY); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print („Nastavenia“); tft.fillRoundRect (45, 75, 75, 75, 4, BIELY); tft.drawRoundRect (45, 75, 75, 75, 4, ČIERNY); tft.fillRect (75, 75, 15, 30, ČIERNY); tft.fillRect (75, 120, 15, 30, ČIERNY); tft.fillRect (90, 105, 30, 15, ČIERNY); tft.fillRect (45, 105, 30, 15, ČIERNY); stav = 7; dotyk = 0; ota = 0; } if (touch == 2) {tft.fillScreen (WHITE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BIELY); tft.fillRect (200, 35, 12, 12, BIELY); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČIERNY); tft.drawRect (200, 35, 12, 12, ČIERNY); tft.drawCircle (210, 40, 14, ČIERNY); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČIERNY); tft.drawLine (300, 30, 270, 30, ČIERNY); tft.setCursor (20, 200); tft.print ("personalizácia"); tft.setCursor (20, 170); tft.print ("odhlásiť sa"); tft.setCursor (20, 140); tft.print („periférne zariadenia“); tft.setCursor (20, 110); tft.print („O mne“); dotyk = 1; stav = 2; } if (touch == 10 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (10, 160); tft.setTextColor (ČIERNA); tft.print ("Vytvorené a vyvinuté"); tft.setCursor (100, 190); tft.print ("od:"); tft.setCursor (60, 220); tft.print („Tínedžer z Indie“); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BIELY); tft.fillRect (200, 35, 12, 12, BIELY); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČIERNY); tft.drawRect (200, 35, 12, 12, ČIERNY); tft.drawCircle (210, 40, 14, ČIERNY); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČIERNY); tft.drawLine (300, 30, 270, 30, ČIERNY); stav = 6; } if (touch == 11 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (60, 40); tft.print („Vyberte si“); tft.setCursor (40, 60); tft.print ("farba pozadia"); tft.fillRect (60, 180, 45, 45, ČERVENÁ); tft.fillRect (120, 180, 45, 45, ŽLTÝ); 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, BIELY); tft.drawRect (60, 80, 45, 45, ČIERNY); tft.fillRect (120, 80, 45, 45, ČIERNY); 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, BIELY); tft.fillRect (200, 35, 12, 12, BIELY); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČIERNY); tft.drawRect (200, 35, 12, 12, ČIERNY); tft.drawCircle (210, 40, 14, ČIERNY); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČIERNY); tft.drawLine (300, 30, 270, 30, ČIERNY); 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 (BIELY); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BIELY); tft.fillRect (200, 35, 12, 12, BIELY); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČIERNY); tft.drawRect (200, 35, 12, 12, ČIERNY); tft.drawCircle (210, 40, 14, ČIERNY); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČIERNY); tft.drawLine (300, 30, 270, 30, ČIERNY); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Vstup"); tft.setCursor (30, 150); tft.print ("Výstup"); tft.drawRect (25, 130, 90, 30, ČIERNY); tft.drawRect (25, 60, 90, 30, ČIERNY); if (str.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 („vzdialenosť“); tft.setCursor (150, 70); tft.print („Zvuk“); dotyk = 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); oneskorenie (1000); if (zvuk == 0) {prestávka; }}}}

Krok 3: Potrebné knižnice:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • TouchScreen.h

Odkazy na Github pre to isté:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

Krok 4: Pripojenia

Dajte to všetko dohromady
Dajte to všetko dohromady

Potrebujete 6 prepojovacích káblov. 3 muži a 3 ženy. spájkujte ich priamo na dosku Arduino takto:

Krok 5: Spojte to všetko dohromady

Zastrčte drôty do arduina (pozri obrázok), v prípade potreby použite lepiacu pištoľ …

Potom pripevnite štít TFT a potom otestujte svoje senzory.

Ďakujem, že ste sa posúvali úplne dole. Ak máte pocit, že tento projekt je jedinečný a nápomocný, hlasujte za mňa

Radosť z tvorby a dajte si pozor na podvodníkov s elektronikou?

Krok 6: Ďalšie vylepšenia:

  • Väčšia kompatibilita senzorov
  • Kód servomotora bolo potrebné dokončiť
  • Ďalšia aplikácia, ktorá môže pracovať s modulmi Bluetooth, aby sme pomocou nej mohli ovládať robota poháňaného technológiou Bluetooth.
  • Opravy chýb

Odporúča: