Sadržaj:

Robot koji govori da li vas prodavač elektronike vara ili ne: 6 koraka
Robot koji govori da li vas prodavač elektronike vara ili ne: 6 koraka

Video: Robot koji govori da li vas prodavač elektronike vara ili ne: 6 koraka

Video: Robot koji govori da li vas prodavač elektronike vara ili ne: 6 koraka
Video: STEFAN MIHIĆ SE HVATA SA ŽENOM U TOALETU! 2024, Srpanj
Anonim
Robot koji govori da li vas prodavač elektronike vara ili ne
Robot koji govori da li vas prodavač elektronike vara ili ne

Prošle godine smo ja i tata otišli u novootvorenu trgovinu robotike/elektronike vrlo blizu mjesta gdje živimo. Kad sam tamo ušao, bilo je puno elektronike, serova, senzora, Raspberry pis -a i Arduinosa. Sljedećeg smo dana otišli u istu trgovinu i kupili mnoge senzore i 3 Arduina u vrijednosti od oko 150 USD. Čim sam otišao kući, nijedan drugi proizvod nije uspio osim Arduino Mega. Prevareni smo za oko 130 USD što je puno.

Odlučio sam stvoriti robota koji može testirati oko 12 senzora i 2 motora (još uvijek radi na servo) i može utvrditi je li proizvod neispravan.

Uđimo ravno u to!

Pribor

1. Arduino UNO

2. 2.4 TFT zaslon osjetljiv na dodir

3. par kratkospojnih žica

4. senzori i motori kako biste ih mogli testirati (ovdje sam koristio - senzor pokreta, senzor plina MQ6, osjetnik zvuka, potenciometar i osjetnik razine vode)

Korak 1: Kako to radi ……

Image
Image

Programirao sam Arduino za stvaranje interaktivnog korisničkog sučelja s TFT zaslonom. Kao što znamo, TFT zaslon ima samo jedan slobodni pin, tj. A5 pin. (ako koristite UNO). Dakle, svaki senzor koji koristi analogne pinove za čitanje podataka kompatibilan je s ovom postavkom …

U korisničkom sučelju možete promijeniti boju pozadine radne površine i otvoriti aplikaciju koju sam za Arduino razvio za testiranje senzora.

Prilikom otvaranja aplikacije možete vidjeti 2 mogućnosti, ULAZ i IZLAZ. pa ako kliknete Unos, prikazuje 4 senzora (Kompatibilno je s 12, ali tek ga moram programirati jer mi se bliže ispiti …. nema vremena:(. Svatko je slobodan uređivati kôd …)

Također može provjeriti radi li servo motor ako ga spojite u utor.

Pogledaj:

Korak 2: Prijenos koda

Kôd je program od 600 linija koji sam pomno kodirao za oko 50 sati. Ima nekoliko grešaka pa ga izmijenite i pošaljite mi na moju poštu ([email protected]).

Prenesite kôd i spojite TFT štit na Arduino. Preporučujem vam da se poigrate s korisničkim sučeljem kako biste se bolje snašli u njemu.

Kod:

#uključ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 PLAVO 0x001F #define NAVY 0x000FexFine0define0define0define0define0define0define0define0define0de #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #Xdefine Xdefine Xdefine Xefine9 160 #define TS_MAXX 160 #define TS_MAXY 970 TouchScreen ts = Zaslon osjetljiv na dodir (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; stanje char = 6; int dodir = 0; int boja = CRNO; 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 (BIJELO); tft.setCursor (60, 160); tft.setTextColor (CRNO); tft.print ("Prijeđite prstom za prijavu"); } void loop () {float sensorVoltage; osjetnik plovkaVrijednost; TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); if (pz> MINPRISAK && 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) {dodir = 26; }} if (dodir == 1 && stanje == 6) {tft.setRotation (0); tft.fillScreen (u boji); zvuk = 0; tft.fillRect (200, 180, 80, 140, BIJELO); tft.drawRect (201, 181, 81, 141, CRNO); tft.fillRect (80, 30, 100, 100, CIJAN); tft.drawRect (81, 31, 101, 101, CRNO); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, CRNO); tft.fillRect (10, 180, 30, 120, LJUBIČASTO); tft.drawRect (11, 181, 31, 121, CRNO); tft.fillRect (45, 180, 30, 120, PLAVO); tft.drawRect (46, 181, 31, 121, CRNO); tft.fillRect (80, 180, 30, 120, CIJAN); tft.drawRect (81, 181, 31, 121, CRNO); tft.fillRect (115, 180, 30, 120, ZELENO); tft.drawRect (116, 181, 31, 121, CRNO); tft.fillRect (150, 180, 30, 120, ŽUTI); tft.drawRect (151, 181, 31, 121, CRNO); tft.fillTriangle (210, 30, 210, 50, 220, 40, BIJELO); tft.fillRect (200, 35, 12, 12, BIJELO); tft.drawTriangle (210, 30, 210, 50, 220, 40, CRNO); tft.drawRect (200, 35, 12, 12, CRNO); tft.drawCircle (210, 40, 14, BIJELO); //tft.fillTriange(a1, b1, a2, b2, c1, c2, CRVENO); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Postavke"); tft.fillRoundRect (45, 75, 75, 75, 4, BIJELO); tft.drawRoundRect (45, 75, 75, 75, 4, CRNO); tft.fillRect (75, 75, 15, 30, CRNO); tft.fillRect (75, 120, 15, 30, CRNO); tft.fillRect (90, 105, 30, 15, CRNO); tft.fillRect (45, 105, 30, 15, CRNO); stanje = 7; dodir = 0; ota = 0; } if (dodir == 2) {tft.fillScreen (BIJELO); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BIJELO); tft.fillRect (200, 35, 12, 12, BIJELO); tft.drawTriangle (210, 30, 210, 50, 220, 40, CRNO); tft.drawRect (200, 35, 12, 12, CRNO); tft.drawCircle (210, 40, 14, CRNO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, CRNO); tft.drawLine (300, 30, 270, 30, CRNO); tft.setCursor (20, 200); tft.print ("personalizacija"); tft.setCursor (20, 170); tft.print ("odjava"); tft.setCursor (20, 140); tft.print ("periferni uređaji"); tft.setCursor (20, 110); tft.print ("O"); dodir = 1; stanje = 2; } if (dodir == 10 && stanje == 2) {tft.fillScreen (BIJELO); tft.setCursor (10, 160); tft.setTextColor (CRNO); tft.print ("Stvoreno i razvijeno"); tft.setCursor (100, 190); tft.print ("autor:"); tft.setCursor (60, 220); tft.print ("Tinejdžer iz Indije"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BIJELO); tft.fillRect (200, 35, 12, 12, BIJELO); tft.drawTriangle (210, 30, 210, 50, 220, 40, CRNO); tft.drawRect (200, 35, 12, 12, CRNO); tft.drawCircle (210, 40, 14, CRNO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, CRNO); tft.drawLine (300, 30, 270, 30, CRNO); stanje = 6; } if (dodir == 11 && stanje == 2) {tft.fillScreen (BIJELO); tft.setCursor (60, 40); tft.print ("Odaberite a"); tft.setCursor (40, 60); tft.print ("boja pozadine"); tft.fillRect (60, 180, 45, 45, CRVENO); tft.fillRect (120, 180, 45, 45, ŽUTI); tft.fillRect (180, 180, 45, 45, PLAVO); 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, CIJAN); tft.fillRect (60, 80, 45, 45, BIJELO); tft.drawRect (60, 80, 45, 45, CRNO); tft.fillRect (120, 80, 45, 45, CRNO); tft.fillRect (180, 80, 45, 45, MASLINA); tft.fillRect (240, 80, 45, 45, LJUBIČASTO); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BIJELO); tft.fillRect (200, 35, 12, 12, BIJELO); tft.drawTriangle (210, 30, 210, 50, 220, 40, CRNO); tft.drawRect (200, 35, 12, 12, CRNO); tft.drawCircle (210, 40, 14, CRNO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, CRNO); tft.drawLine (300, 30, 270, 30, CRNO); 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; }} if (dodir == 26) {ota = 1; tft.fillScreen (BIJELO); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BIJELO); tft.fillRect (200, 35, 12, 12, BIJELO); tft.drawTriangle (210, 30, 210, 50, 220, 40, CRNO); tft.drawRect (200, 35, 12, 12, CRNO); tft.drawCircle (210, 40, 14, CRNO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, CRNO); tft.drawLine (300, 30, 270, 30, CRNO); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Unos"); tft.setCursor (30, 150); tft.print ("Izlaz"); tft.drawRect (25, 130, 90, 30, CRNO); tft.drawRect (25, 60, 90, 30, CRNO); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Razina vode"); tft.setCursor (150, 170); tft.print ("Razina plina"); tft.setCursor (150, 120); tft.print ("Udaljenost"); tft.setCursor (150, 70); tft.print ("Zvuk"); dodir = 1; stanje = 2; }}} while (zvuk == 1) {tft.fillScreen (BIJELO); sensorValue = analogRead (A5); sensorVoltage = osjetnikVrijednost; tft.setCursor (60, 160); tft.print (osjetnikVoltage); Serial.println ("Razina zvuka ="); Serial.println (sensorVoltage); kašnjenje (1000); if (zvuk == 0) {break; }}}}

Korak 3: Potrebne knjižnice:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • Zaslon osjetljiv na dodir.h

Github veze za isto:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

Korak 4: Veze

Udari sve zajedno
Udari sve zajedno

Potrebno vam je 6 kratkospojnih žica. 3 mužjaka i 3 ženke. lemite ih izravno na Arduino ploču ovako:

Korak 5: Ošamarite sve zajedno

Utaknite žice u arduino (pogledajte sliku), po potrebi upotrijebite pištolj za ljepilo …

Zatim pričvrstite TFT štit i testirajte svoje senzore.

Hvala vam što ste se kretali dolje. Glasajte za mene ako smatrate da je ovaj projekt jedinstven i od pomoći

Sretno u stvaranju i čuvajte se prijevara elektronike?

Korak 6: Daljnja poboljšanja:

  • Više kompatibilnosti senzora
  • Kod servo motora morao je biti dovršen
  • Još jedna aplikacija koja se može spojiti s Bluetooth modulima tako da pomoću nje možemo upravljati robotom s Bluetoothom.
  • Ispravke pogrešaka

Preporučeni: