Sadržaj:
- Supplies
- Korak 1: Kako to funkcionira ……
- Korak 2: Učitavanje koda
- Korak 3: Potrebne biblioteke:
- Korak 4: Veze
- Korak 5: Ošamarite sve zajedno
- Korak 6: Daljnja poboljšanja:
Video: Robot koji govori da li vas prodavač elektronike vara ili ne: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
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 ……
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
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:
Učinite da vaš računar govori šta pišete koristeći Notepad: 3 koraka
Neka vaš računar govori šta pišete koristeći Notepad: Evo jednog zanimljivog koda koji smo stvorili da bi vaš računar govorio ono što unosite. Za izradu ćemo koristiti bilježnicu. Počnimo
Uređaj za mjerenje UV-indeksa koji govori, koji koristi senzor VEML6075 i mali drugar: 5 koraka
Uređaj za mjerenje UV-indeksa koji govori, pomoću senzora VEML6075 i Malog prijatelja: Dolaze ljeta! Sunce sija! Što je odlično. No, kako ultraljubičasto (UV) zračenje postaje sve intenzivnije, ljudi poput mene dobivaju pjege, male smeđe otočiće koji plivaju u moru crvene, opečene od sunca, kože koja svrbi. Biti u mogućnosti imati informacije u stvarnom vremenu
Kako napraviti vlastiti USB auto punjač za bilo koji IPod ili druge uređaje koji se pune putem USB -a: 10 koraka (sa slikama)
Kako napraviti vlastiti USB auto punjač za bilo koji IPod ili druge uređaje koji se pune putem USB -a: Izradite USB punjač za automobil za bilo koji iPod ili drugi uređaj koji se puni putem USB -a spajanjem automobilskog adaptera koji izlazi 5V i USB ženski utikač. Najvažniji dio ovog projekta je osigurati da je izlaz vašeg odabranog adaptera za automobil opklada
Kako provaliti iz zatvora vaš 1.1.4 ili niži IPhone ili IPod Touch: 4 koraka
Kako provaliti iz vašeg jailbreak -a 1.1.4 ili nižeg iPhone -a ili IPod Touch -a: Kako jailbreak -om izvršiti 1.1.4 ili stariju verziju iPhone -a ili iPod Touch -a i instalirati aplikacije trećih strana. UPOZORENJE: Neću biti odgovoran za štetu nanesenu vašem iPhoneu, iPod Touch -u ili računaru. Međutim, ZiPhone nikada nije oštetio iPhone ili iPod kako bi
RGB LED sistem koji se može kontrolirati za vaš dom ili ured: 5 koraka (sa slikama)
RGB LED sistem koji se može kontrolirati za vaš dom ili ured: Da li su svjetla u vašem domu ili radnom prostoru dosadna? Želite li dodati malo energije ili raspoloženja u svoju sobu? Ovaj Instructable vam pokazuje kako stvoriti kontrolisani RGB LED niz za upotrebu u vašem domu ili uredu. Vaša crvena, zelena, plava LED d