Kazalo:

Robot, ki pove, ali vas prodajalec elektronike vara ali ne: 6 korakov
Robot, ki pove, ali vas prodajalec elektronike vara ali ne: 6 korakov

Video: Robot, ki pove, ali vas prodajalec elektronike vara ali ne: 6 korakov

Video: Robot, ki pove, ali vas prodajalec elektronike vara ali ne: 6 korakov
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, November
Anonim
Robot, ki pove, ali vas prodajalec elektronike vara ali ne
Robot, ki pove, ali vas prodajalec elektronike vara ali ne

Lani sva z očetom odšla v novo odprto trgovino z robotiko/elektroniko zelo blizu mesta, kjer živimo. Ko sem vstopil tja, je bilo polno elektronike, serov, senzorjev, Raspberry pis in Arduinosa. Naslednji dan smo odšli v isto trgovino in kupili veliko senzorjev in 3 Arduino v vrednosti približno 150 USD. Takoj, ko sem šel domov, niso delovali nobeni drugi izdelki, razen Arduino Mega. Prevarali so nas za približno 130 USD, kar je veliko.

Zato sem se odločil ustvariti robota, ki lahko preizkusi približno 12 senzorjev in 2 motorja (še vedno deluje na servo) in lahko ugotovi, ali je izdelek okvarjen.

Pojdimo naravnost!

Zaloge

1. Arduino UNO

2. 2,4 -palčni zaslon na dotik TFT

3. nekaj mostičnih žic

4. senzorji in motorji, da jih lahko preizkusite (tukaj sem uporabil - senzor gibanja, senzor plina MQ6, senzor zvoka, potenciometer in senzor nivoja vode)

1. korak: Kako deluje ……

Image
Image

Arduino sem programiral za ustvarjanje in interaktivni uporabniški vmesnik s TFT zaslonom. Kot vemo, ima zaslon TFT samo en prosti pin, to je pin A5. (če uporabljate UNO). Torej je kateri koli senzor, ki za branje podatkov uporablja analogne nožice, združljiv s to nastavitvijo …

V uporabniškem vmesniku lahko spremenite barvo ozadja namizja in odprete aplikacijo, ki sem jo za Arduino razvil za testiranje senzorjev.

Ko odprete aplikacijo, lahko vidite 2 možnosti, VHOD in IZHOD. tako da, če kliknete Input, se prikažejo 4 senzorji (združljiv je z 12, vendar ga še ne programiram, ker se mi bližajo izpiti …. ni časa:(. Kodo lahko ureja vsak …)

Prav tako lahko preveri, ali servo motor deluje, če ga priključite v režo.

Poglej:

2. korak: nalaganje kode

Koda je 600 vrstni program, ki sem ga natančno kodiral v približno 50 urah. Ima nekaj hroščev, zato ga popravite in mi ga pošljite na mojo pošto ([email protected]).

Naložite kodo in priključite ščit TFT na Arduino. Priporočam vam, da se poigrate z uporabniškim vmesnikom, da se ga bolje naučite.

Koda:

#vključi

#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 0x000FefineFine0define0define0define0define0define0define0define0 #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #Define Xdefine9 160 #define TS_MAXX 160 #define TS_MAXY 970 TouchScreen ts = Zaslon na dotik (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 zvok; stanje char = 6; int touch = 0; int barva = ČRNA; 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 (BELO); tft.setCursor (60, 160); tft.setTextColor (ČRNO); tft.print ("Povlecite za prijavo"); } void loop () {float sensorVoltage; plavajoči senzorVrednost; TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); če (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 && p 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 (barvno); zvok = 0; tft.fillRect (200, 180, 80, 140, BELO); tft.drawRect (201, 181, 81, 141, ČRNO); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, ČRNO); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, ČRNO); tft.fillRect (10, 180, 30, 120, VIJOLIČNO); tft.drawRect (11, 181, 31, 121, ČRNO); tft.fillRect (45, 180, 30, 120, MODRA); tft.drawRect (46, 181, 31, 121, ČRNO); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, ČRNO); tft.fillRect (115, 180, 30, 120, ZELENO); tft.drawRect (116, 181, 31, 121, ČRNO); tft.fillRect (150, 180, 30, 120, RUMENO); tft.drawRect (151, 181, 31, 121, ČRNO); tft.fillTriangle (210, 30, 210, 50, 220, 40, BELO); tft.fillRect (200, 35, 12, 12, BELO); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČRNO); tft.drawRect (200, 35, 12, 12, ČRNO); tft.drawCircle (210, 40, 14, BELO); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RDEČA); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Nastavitve"); tft.fillRoundRect (45, 75, 75, 75, 4, BELO); tft.drawRoundRect (45, 75, 75, 75, 4, ČRNO); tft.fillRect (75, 75, 15, 30, ČRNO); tft.fillRect (75, 120, 15, 30, ČRNO); tft.fillRect (90, 105, 30, 15, ČRNO); tft.fillRect (45, 105, 30, 15, ČRNO); stanje = 7; dotik = 0; ota = 0; } if (dotaknite se == 2) {tft.fillScreen (BELO); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BELO); tft.fillRect (200, 35, 12, 12, BELO); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČRNO); tft.drawRect (200, 35, 12, 12, ČRNO); tft.drawCircle (210, 40, 14, ČRNO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČRNO); tft.drawLine (300, 30, 270, 30, ČRNO); tft.setCursor (20, 200); tft.print ("personalizacija"); tft.setCursor (20, 170); tft.print ("odjava"); tft.setCursor (20, 140); tft.print ("zunanje naprave"); tft.setCursor (20, 110); tft.print ("O"); dotik = 1; stanje = 2; } if (dotaknite se == 10 && state == 2) {tft.fillScreen (BELO); tft.setCursor (10, 160); tft.setTextColor (ČRNO); tft.print ("Ustvarjeno in razvito"); tft.setCursor (100, 190); tft.print ("avtor:"); tft.setCursor (60, 220); tft.print ("Najstnik iz Indije"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BELO); tft.fillRect (200, 35, 12, 12, BELO); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČRNO); tft.drawRect (200, 35, 12, 12, ČRNO); tft.drawCircle (210, 40, 14, ČRNO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČRNO); tft.drawLine (300, 30, 270, 30, ČRNO); stanje = 6; } if (dotaknite se == 11 && state == 2) {tft.fillScreen (BELO); tft.setCursor (60, 40); tft.print ("Izberite a"); tft.setCursor (40, 60); tft.print ("barva ozadja"); tft.fillRect (60, 180, 45, 45, RDEČA); tft.fillRect (120, 180, 45, 45, RUMENO); tft.fillRect (180, 180, 45, 45, MODRA); tft.fillRect (240, 180, 45, 45, ZELENO); 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, BELO); tft.drawRect (60, 80, 45, 45, ČRNO); tft.fillRect (120, 80, 45, 45, ČRNO); tft.fillRect (180, 80, 45, 45, OLIVE); tft.fillRect (240, 80, 45, 45, VIJOLIČNO); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BELO); tft.fillRect (200, 35, 12, 12, BELO); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČRNO); tft.drawRect (200, 35, 12, 12, ČRNO); tft.drawCircle (210, 40, 14, ČRNO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČRNO); tft.drawLine (300, 30, 270, 30, ČRNO); stanje = 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; }} če (dotaknite se == 26) {ota = 1; tft.fillScreen (BELO); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BELO); tft.fillRect (200, 35, 12, 12, BELO); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČRNO); tft.drawRect (200, 35, 12, 12, ČRNO); tft.drawCircle (210, 40, 14, ČRNO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČRNO); tft.drawLine (300, 30, 270, 30, ČRNO); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Vnos"); tft.setCursor (30, 150); tft.print ("Izhod"); tft.drawRect (25, 130, 90, 30, ČRNO); tft.drawRect (25, 60, 90, 30, ČRNO); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Raven vode"); tft.setCursor (150, 170); tft.print ("Raven plina"); tft.setCursor (150, 120); tft.print ("Razdalja"); tft.setCursor (150, 70); tft.print ("Zvok"); dotik = 1; stanje = 2; }}} while (zvok == 1) {tft.fillScreen (BELO); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Raven zvoka ="); Serial.println (sensorVoltage); zamuda (1000); if (zvok == 0) {break; }}}}

3. korak: potrebne knjižnice:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • Zaslon na dotik.h

Github povezave za isto:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

4. korak: Povezave

Udari vse skupaj
Udari vse skupaj

Potrebujete 6 mostičnih žic. 3 samci in 3 samice. jih spajkajte neposredno na ploščo Arduino tako:

5. korak: Udarite vse skupaj

Žice privijte v arduino (glejte sliko), po potrebi uporabite pištolo za lepilo …

Nato pritrdite TFT ščit in preizkusite svoje senzorje.

Hvala, ker ste se pomaknili do konca. Glasujte zame, če menite, da je bil ta projekt edinstven in koristen

Veseli izdelovanja in se pazite prevarantov elektronike?

6. korak: Nadaljnje izboljšave:

  • Več kompatibilnosti senzorjev
  • Kodo servo motorja je bilo treba dokončati
  • Druga aplikacija, ki se lahko poveže z moduli Bluetooth, tako da lahko z njo upravljamo robota, ki deluje na Bluetooth.
  • Popravljene napake

Priporočena: