Përmbajtje:
- Furnizimet
- Hapi 1: Si funksionon….
- Hapi 2: Ngarkimi i Kodit
- Hapi 3: Kërkohen biblioteka:
- Hapi 4: Lidhjet
- Hapi 5: Përplasini të gjitha së bashku
- Hapi 6: Përmirësime të mëtejshme:
Video: Një robot që tregon nëse një shitës i pajisjeve elektronike ju mashtron apo jo: 6 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
Vitin e kaluar, unë dhe babai im shkuam në një dyqan të sapo hapur robotikë/elektronikë shumë afër vendit ku jetojmë. Ndërsa hyra atje, ishte plot elektronikë, serov, sensorë, pis mjedër dhe Arduinos. Të nesërmen, shkuam në të njëjtin dyqan dhe blemë shumë senorë dhe 3 Arduinos me vlerë rreth 150 dollarë. Sapo shkova në shtëpi, asnjë produkt tjetër nuk funksionoi përveç Arduino Mega. Ne u mashtruam për rreth 130 dollarë, që është shumë.
Kështu, vendosa të krijoj një robot që mund të testojë rreth 12 sensorë dhe 2 motorë (ende punon në servo) dhe mund të përcaktojë nëse produkti është i gabuar.
Le të futemi drejtpërdrejt në të!
Furnizimet
1. Arduino UNO
2. Ekran me prekje 2.4 TFT
3. çift telash kërcyes
4. sensorë dhe motorë në mënyrë që t'i provoni (këtu kam përdorur - Sensori i lëvizjes, sensori i gazit MQ6, Sensori i zërit, potenciometri dhe sensori i nivelit të ujit)
Hapi 1: Si funksionon….
Unë kam programuar një Arduino për të krijuar dhe ndërfaqe ndërvepruese me një ekran TFT. Siç e dimë, ekrani TFT ka vetëm një kunj falas, pra A5. (nëse përdorni UNO). Pra, çdo sensor që përdor kunjat analoge për të lexuar të dhëna është i pajtueshëm me këtë konfigurim…
Në UI, ju mund të ndryshoni ngjyrën e sfondit të desktopit dhe mund të hapni aplikacionin i cili është zhvilluar për Arduino nga unë për të testuar sensorët.
Me hapjen e aplikacionit, mund të shihni 2 opsione, INPUT dhe OUTPUT. kështu që nëse klikoni Input, Ai tregon 4 sensorë (compatibleshtë në përputhje me 12, por akoma nuk e programoj pasi kam afruar provimet …. asnjë kohë:(. Çdokush është i lirë të modifikojë kodin …)
Dhe gjithashtu mund të kontrollojë nëse funksionon servo motori i lidhur me ju në slot.
hidhini një sy:
Hapi 2: Ngarkimi i Kodit
Kodi është një program me 600 rreshta që e kodova me përpikëri në rreth 50 orë. Ai ka disa defekte, kështu që ju lutemi ndryshoni dhe më dërgoni në postën time ([email protected]).
Ngarko kodin dhe lidhe mburojën TFT me Arduino. Unë ju rekomandoj të luani me UI në mënyrë që të mësoni më mirë.
Kodi:
#përfshi
#përfshi #përfshi #përfshi #përcakto LCD_CS A3 #përcakto LCD_CD A2 #përcakto LCD_WR A1 #përcakto LCD_RD A0 #përcakto LCD_RESET A4 #përkufizo ZI 0x0000 #përkufizo BLUE 0x001F #define NAV 0 0F000F #0 #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Seine #defineSineFineSine #defineSineFineSine #defineYSineSine #defineYSineSine2deSine #defineYSineSine2deSine #defineYSineSine2deSine #defineYPineYineYineExine #EfineYineSineFineSine2EfineYineSine #defineYSineSine #defineExineSine2DineFineYPEINEFine 7Mine #EfineSineSine_FineYineSine #EfineYineYineYine Aine 160 #përcakto TS_MAXX 160 #përcakto TS_MAXY 970 TouchScreen ts = Ekran me prekje (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 tingull; gjendje char = 6; int prekje = 0; int ngjyra = E ZE; int redir = 0; int ota; void setup () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.filloj (0x9325); tft.setRotation (45); tft.setTextSize (0.5); tft.fillScreen (E BARDH); tft.setCursor (60, 160); tft.setTextColor (E ZI); tft.print ("Rrëshqit për të hyrë"); } void loop () {float sensorVoltage; sensor notuesVlera; TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); 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) {prek = 26; }} if (prek == 1 && gjendjen == 6) {tft.setRotation (0); tft.fillScreen (ngjyra); tingull = 0; tft.fillRect (200, 180, 80, 140, WHITE); tft.drawRect (201, 181, 81, 141, ZI); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, ZI); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, ZI); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, ZI); tft.fillRect (45, 180, 30, 120, BLUE); tft.drawRect (46, 181, 31, 121, ZI); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, ZI); tft.fillRect (115, 180, 30, 120, GREEN); tft.drawRect (116, 181, 31, 121, ZI); tft.fillRect (150, 180, 30, 120, YELLOW); tft.drawRect (151, 181, 31, 121, ZI); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, BARDH); tft.drawTriangle (210, 30, 210, 50, 220, 40, ZI); tft.drawRect (200, 35, 12, 12, ZI); tft.drawCircle (210, 40, 14, BARDH); //tft.fillTriange(a1, b1, a2, b2, c1, c2, KUQ); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Cilësimet"); tft.fillRoundRect (45, 75, 75, 75, 4, BARDH); tft.drawRoundRect (45, 75, 75, 75, 4, ZI); tft.fillRect (75, 75, 15, 30, ZI); tft.fillRect (75, 120, 15, 30, ZI); tft.fillRect (90, 105, 30, 15, ZI); tft.fillRect (45, 105, 30, 15, ZI); gjendje = 7; prek = 0; ota = 0; } if (prek == 2) {tft.fillScreen (E BARDH); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, BARDH); tft.drawTriangle (210, 30, 210, 50, 220, 40, ZI); tft.drawRect (200, 35, 12, 12, ZI); tft.drawCircle (210, 40, 14, ZI); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ZI); tft.drawLine (300, 30, 270, 30, ZI); tft.setCursor (20, 200); tft.print ("personalizim"); tft.setCursor (20, 170); tft.print ("dilni"); tft.setCursor (20, 140); tft.print ("periferikësh"); tft.setCursor (20, 110); tft.print ("Rreth"); prek = 1; gjendje = 2; } if (prek == 10 && gjendja == 2) {tft.fillScreen (E BARDH); tft.setCursor (10, 160); tft.setTextColor (E ZI); tft.print ("Krijuar dhe zhvilluar"); tft.setCursor (100, 190); tft.print ("nga:"); tft.setCursor (60, 220); tft.print ("Një adoleshent nga India"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, BARDH); tft.drawTriangle (210, 30, 210, 50, 220, 40, ZI); tft.drawRect (200, 35, 12, 12, ZI); tft.drawCircle (210, 40, 14, ZI); tft.setRotation (45); tft.fillTrekëndësh (270, 40, 270, 20, 260, 30, ZI); tft.drawLine (300, 30, 270, 30, ZI); gjendje = 6; } if (prek == 11 && gjendja == 2) {tft.fillScreen (E BARDH); tft.setCursor (60, 40); tft.print ("Zgjidh një"); tft.setCursor (40, 60); tft.print ("ngjyra e sfondit"); tft.fillRect (60, 180, 45, 45, KUQ); tft.fillRect (120, 180, 45, 45, YELLOW); tft.fillRect (180, 180, 45, 45, BLUE); tft.fillRect (240, 180, 45, 45, GREEN); 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, E BARDH); tft.drawRect (60, 80, 45, 45, ZI); tft.fillRect (120, 80, 45, 45, ZI); tft.fillRect (180, 80, 45, 45, ULIRI); tft.fillRect (240, 80, 45, 45, PURPLE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, BARDH); tft.drawTriangle (210, 30, 210, 50, 220, 40, ZI); tft.drawRect (200, 35, 12, 12, ZI); tft.drawCircle (210, 40, 14, ZI); tft.setRotation (45); tft.fillTrekëndësh (270, 40, 270, 20, 260, 30, ZI); tft.drawLine (300, 30, 270, 30, ZI); gjendje = 6; nëse (redir == 1) {ngjyra = E BARDH; } 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 = KUQ; } if (redir == 10) {color = YELLOW; } if (redir == 11) {color = BLUE; } if (redir == 12) {color = GREEN; }} if (prek == 26) {ota = 1; tft.fillScreen (E BARDH); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, BARDH); tft.drawTriangle (210, 30, 210, 50, 220, 40, ZI); tft.drawRect (200, 35, 12, 12, ZI); tft.drawCircle (210, 40, 14, ZI); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ZI); tft.drawLine (300, 30, 270, 30, ZI); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Input"); tft.setCursor (30, 150); tft.print ("Output"); tft.drawRect (25, 130, 90, 30, ZI); tft.drawRect (25, 60, 90, 30, ZI); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Niveli i ujit"); tft.setCursor (150, 170); tft.print ("Niveli i gazit"); tft.setCursor (150, 120); tft.print ("Distanca"); tft.setCursor (150, 70); tft.print ("Tingull"); prek = 1; gjendje = 2; }}} ndërsa (tingulli == 1) {tft.fillScreen (E BARDH); sensorVlera = analogRead (A5); sensorVoltage = sensorVlera; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Niveli i zërit ="); Serial.println (sensorVoltage); vonesa (1000); nëse (tingulli == 0) {pushim; }}}}
Hapi 3: Kërkohen biblioteka:
- Adafruit_GFX.h
- Adafruit_TFTLCD.h
- Ekran me prekje.h
Lidhjet Github për të njëjtën gjë:
github.com/adafruit/Adafruit-GFX-Library
github.com/adafruit/TFTLCD-Library
github.com/adafruit/Adafruit_TouchScreen
Hapi 4: Lidhjet
Keni nevojë për 6 tela kërcyes. 3 meshkuj dhe 3 femra. lidhini ato drejtpërdrejt në bordin Arduino si kjo:
Hapi 5: Përplasini të gjitha së bashku
Futni telat në arduino (referojuni figurës), Përdorni disa armë zam nëse është e nevojshme …
Pastaj lidhni mburojën TFT, pastaj provoni sensorët tuaj.
Faleminderit që lëvizni poshtë. Sigurohuni që të votoni për mua nëse mendoni se ky projekt ishte unik dhe i dobishëm
Gëzuar bërjen dhe kujdes nga mashtruesit e Elektronikës?
Hapi 6: Përmirësime të mëtejshme:
- Më shumë pajtueshmëri me sensorë
- Kodi i servo motorit duhej të përfundonte
- Një aplikacion tjetër që mund të ndërlidhet me modulet Bluetooth në mënyrë që ne të mund të kontrollojmë një robot të mundësuar me Bluetooth me të.
- Rregullimet e defekteve në kod
Recommended:
Një version pa tel i A është dera ime e garazhit e hapur apo e mbyllur?: 7 hapa
Një version pa tel i … A është dera ime e garazhit e hapur apo e mbyllur?: Ne donim një sistem tregues të thjeshtë, të lirë dhe të besueshëm i cili na tregonte nëse dyert e garazhit tonë ishin të hapura apo të mbyllura. Ka shumë " A është dera ime e garazhit e hapur " projekte. Shumica më e madhe e këtyre projekteve janë të lidhur ngushtë. Në rastin tim të drejtuar
Tregon një llambë reaktive me zë + gjëra të çuditshme : 8 hapa (me fotografi)
Llamba reaktive e zërit Shfaq + Gjëra të Huaj …: Për më shumë fotografi dhe përditësime të projektit: @capricorn_one
Qese elektronike tekstile elektronike që pulson: 4 hapa
Çanta Elektronike e Tekstileve që pulson: Në këtë tutorial do të mësoni se si të lyeni arnën LED të çantës tuaj të tekstilit
Të vaksinohesh apo jo? një projekt mbi vëzhgimin e imunitetit të tufës përmes simulimit të sëmundjes: 15 hapa
Të vaksinohesh apo jo? një projekt mbi vëzhgimin e imunitetit të tufës përmes simulimit të sëmundjes: Vështrim i përgjithshëm i projektit: Projekti ynë eksploron imunitetin e tufës dhe shpreson të inkurajojë njerëzit që të bëjnë vaksinime për të ulur shkallën e infeksionit në komunitetet tona. Programi ynë simulon sesi një sëmundje infekton një popullatë me përqindje të ndryshme të vaksinimit
Bëni korniza të pajisjeve elektronike nga kompjuterët e vjetër: 6 hapa (me fotografi)
Krijoni korniza të pajisjeve elektronike nga kompjuterët e vjetër: Pasi të keni transformuar një laptop të vjetër në një MP3 player, unë ju tregoj se si ta shndërroni një laptop shumë (shumë) të vjetër në një orë dixhitale me " lëkurat " MP3 Player Fundi i projektit ju tregon se çfarë mund të bëni me një laptop më të fundit me