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, Juli
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 prodavnicu robotike/elektronike vrlo blizu mjesta gdje živimo. Kad sam ušao tamo, bilo je puno elektronike, serova, senzora, Raspberry pis -a i Arduinosa. Sljedećeg dana otišli smo 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 mnogo.

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 pravo u to!

Supplies

1. Arduino UNO

2. 2.4 TFT ekran osetljiv na dodir

3. nekoliko kratkospojnih žica

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

Korak 1: Kako to funkcionira ……

Image
Image

Programirao sam Arduino za stvaranje interaktivnog korisničkog sučelja s TFT zaslonom. Kao što znamo, TFT ekran ima samo jedan slobodni pin, to jest 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: Učitavanje koda

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

Otpremite 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:

#include

#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 0x000FexFine0deFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEFine0DEEEEEEEEEEEEEEEEEEEEEEEEEEEHEH #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #XD #define Xdefine9 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; stanje char = 6; int touch = 0; int boja = BLACK; 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 ("Prevucite prstom da biste se prijavili"); } 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) {touch = 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, CYAN); 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, PURPLE); 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, CYAN); 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 ("Kreirano 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, CYAN); 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, OLIVE); 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 ("Vodostaj"); tft.setCursor (150, 170); tft.print ("Nivo gasa"); 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 = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Nivo zvuka ="); Serial.println (sensorVoltage); kašnjenje (1000); if (zvuk == 0) {break; }}}}

Korak 3: Potrebne biblioteke:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • TouchScreen.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 direktno 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 skrolovali do kraja. Glasajte za mene ako smatrate da je ovaj projekt jedinstven i od pomoći

Sretno u stvaranju i čuvajte se prevaranata u elektronici?

Korak 6: Daljnja poboljšanja:

  • Više kompatibilnosti senzora
  • Kod servo motora je morao biti dovršen
  • Još jedna aplikacija koja se može spojiti s Bluetooth modulima tako da pomoću nje možemo kontrolirati robota s Bluetooth -om.
  • Popravljanje grešaka

Preporučuje se: