Innholdsfortegnelse:

En robot som forteller om en elektronikkleverandør lurer deg eller ikke: 6 trinn
En robot som forteller om en elektronikkleverandør lurer deg eller ikke: 6 trinn

Video: En robot som forteller om en elektronikkleverandør lurer deg eller ikke: 6 trinn

Video: En robot som forteller om en elektronikkleverandør lurer deg eller ikke: 6 trinn
Video: Hvordan reagerer børn, når man fortæller, at der ikke er råd til at holde jul? 2024, November
Anonim
En robot som forteller om en elektronikkleverandør lurer deg eller ikke
En robot som forteller om en elektronikkleverandør lurer deg eller ikke

I fjor dro jeg og min far til en nyåpnet robot/elektronikkbutikk like i nærheten av der vi bor. Da jeg kom inn der, var den full av elektronikk, serov, sensorer, bringebærpis og Arduinos. Dagen etter dro vi til den samme butikken og kjøpte mange senorer og 3 Arduinoer til en verdi av rundt 150 dollar. Så snart jeg dro hjem, fungerte ingen andre produkter bortsett fra Arduino Mega. Vi ble lurt for omtrent 130 USD, noe som er mye.

Så jeg bestemte meg for å lage en robot som kan teste omtrent 12 sensorer og 2 motorer (jobber fortsatt med servoen) og kan avgjøre om produktet er defekt.

La oss komme rett inn i det!

Rekvisita

1. Arduino UNO

2. 2,4 TFT berøringsskjerm

3. par hoppetråder

4. sensorer og motorer slik at du kan teste dem (her brukte jeg - Bevegelsessensor, MQ6 gassensor, Lydsensor, potensiometer og vannstandssensor)

Trinn 1: Slik fungerer det …

Image
Image

Jeg har programmert en Arduino for å lage og interaktiv UI med en TFT -skjerm. Som vi vet, har TFT -skjermen bare en ledig pinne, det vil si A5 -pinnen. (hvis du bruker UNO). Så enhver sensor som bruker analoge pinner for å lese data er kompatibel med dette oppsettet …

I brukergrensesnittet kan du endre bakgrunnsfargen på skrivebordet, og du kan åpne appen som ble utviklet for Arduino av meg for å teste sensorer.

Når du åpner appen, kan du se 2 alternativer, INPUT og OUTPUT. så hvis du klikker på Input, viser den 4 sensorer (Den er kompatibel med 12, men jeg har ennå ikke programmert den etterhvert som jeg har eksamener som nærmer meg.. ingen tid:(. Alle kan redigere koden …)

Og den kan også sjekke om servomotoren fungerer. Du kobler den til sporet.

ta en titt:

Trinn 2: Last opp koden

Koden er et 600 -linjers program som jeg omhyggelig har kodet på omtrent 50 timer. Den har noen få feil, så vær så snill å endre den og send den til meg i e -posten min ([email protected]).

Last opp koden og koble TFT -skjoldet til Arduino. Jeg anbefaler deg å leke med brukergrensesnittet slik at du får et bedre grep om det.

Koden:

#inkludere

#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 0x000F #define RED 0xF800 #define RED 0xF800 #define RED 0xF800 #defin #define MAGENTA GUL 0xF81F #define 0xFFE0 #define HVIT 0xFFFF #define lightgrey 0xC618 #define LILLA 0x780F #define OLIVEN 0x7BE0 #define Seleksjon #define YP A1 #define XM A2 #define YM 7 #define XP 6 #define TS_MINX 940 #define TS_MINY 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 lyd; røye tilstand = 6; int touch = 0; int farge = SVART; int redir = 0; int ota; ugyldig oppsett () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation (45); tft.setTextSize (0,5); tft.fillScreen (HVIT); tft.setCursor (60, 160); tft.setTextColor (SVART); tft.print ("Sveip for å logge inn"); } void loop () {float sensorVoltage; float sensorValue; TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); hvis (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) {touch = 26; }} if (touch == 1 && state == 6) {tft.setRotation (0); tft.fillScreen (farge); lyd = 0; tft.fillRect (200, 180, 80, 140, WHITE); tft.drawRect (201, 181, 81, 141, SVART); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, SVART); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, SVART); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, SVART); tft.fillRect (45, 180, 30, 120, BLÅ); tft.drawRect (46, 181, 31, 121, SVART); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, SVART); tft.fillRect (115, 180, 30, 120, GRØNN); tft.drawRect (116, 181, 31, 121, SVART); tft.fillRect (150, 180, 30, 120, GUL); tft.drawRect (151, 181, 31, 121, SVART); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, HVIT); tft.drawTriangle (210, 30, 210, 50, 220, 40, SVART); tft.drawRect (200, 35, 12, 12, SVART); tft.drawCircle (210, 40, 14, WHITE); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Innstillinger"); tft.fillRoundRect (45, 75, 75, 75, 4, WHITE); tft.drawRoundRect (45, 75, 75, 75, 4, SVART); tft.fillRect (75, 75, 15, 30, SVART); tft.fillRect (75, 120, 15, 30, SVART); tft.fillRect (90, 105, 30, 15, SVART); tft.fillRect (45, 105, 30, 15, SVART); tilstand = 7; berøring = 0; ota = 0; } if (touch == 2) {tft.fillScreen (WHITE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, HVIT); tft.drawTriangle (210, 30, 210, 50, 220, 40, SVART); tft.drawRect (200, 35, 12, 12, SVART); tft.drawCircle (210, 40, 14, SVART); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SVART); tft.drawLine (300, 30, 270, 30, SVART); tft.setCursor (20, 200); tft.print ("personalisering"); tft.setCursor (20, 170); tft.print ("logg ut"); tft.setCursor (20, 140); tft.print ("periferiutstyr"); tft.setCursor (20, 110); tft.print ("Om"); berøring = 1; tilstand = 2; } if (touch == 10 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (10, 160); tft.setTextColor (SVART); tft.print ("Laget og utviklet"); tft.setCursor (100, 190); tft.print ("av:"); tft.setCursor (60, 220); tft.print ("En tenåring fra India"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, HVIT); tft.drawTriangle (210, 30, 210, 50, 220, 40, SVART); tft.drawRect (200, 35, 12, 12, SVART); tft.drawCircle (210, 40, 14, SVART); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SVART); tft.drawLine (300, 30, 270, 30, SVART); tilstand = 6; } if (touch == 11 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (60, 40); tft.print ("Velg en"); tft.setCursor (40, 60); tft.print ("bakgrunnsfarge"); tft.fillRect (60, 180, 45, 45, RØD); tft.fillRect (120, 180, 45, 45, GUL); tft.fillRect (180, 180, 45, 45, BLÅ); tft.fillRect (240, 180, 45, 45, GRØNN); 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, HVIT); tft.drawRect (60, 80, 45, 45, SVART); tft.fillRect (120, 80, 45, 45, SVART); tft.fillRect (180, 80, 45, 45, OLIVE); 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, HVIT); tft.drawTriangle (210, 30, 210, 50, 220, 40, SVART); tft.drawRect (200, 35, 12, 12, SVART); tft.drawCircle (210, 40, 14, SVART); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SVART); tft.drawLine (300, 30, 270, 30, SVART); tilstand = 6; hvis (redir == 1) {color = WHITE; } hvis (redir == 2) {color = SVART; } hvis (redir == 3) {color = OLIVE; } hvis (redir == 4) {color = PURPLE; } hvis (redir == 5) {color = MAGENTA; } hvis (redir == 6) {color = NAVY; } hvis (redir == 7) {color = LIGHTGREY; } hvis (redir == 8) {color = CYAN; } hvis (redir == 9) {color = RED; } hvis (redir == 10) {color = GUL; } hvis (redir == 11) {color = BLUE; } hvis (redir == 12) {color = GRØNN; }} hvis (berør == 26) {ota = 1; tft.fillScreen (HVIT); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, HVIT); tft.drawTriangle (210, 30, 210, 50, 220, 40, SVART); tft.drawRect (200, 35, 12, 12, SVART); tft.drawCircle (210, 40, 14, SVART); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SVART); tft.drawLine (300, 30, 270, 30, SVART); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Inndata"); tft.setCursor (30, 150); tft.print ("Output"); tft.drawRect (25, 130, 90, 30, SVART); tft.drawRect (25, 60, 90, 30, SVART); if (s. x> 190 && s. x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Vannstand"); tft.setCursor (150, 170); tft.print ("Gassnivå"); tft.setCursor (150, 120); tft.print ("Avstand"); tft.setCursor (150, 70); tft.print ("Lyd"); berøring = 1; tilstand = 2; }}} mens (lyd == 1) {tft.fillScreen (WHITE); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Lydnivå ="); Serial.println (sensorVoltage); forsinkelse (1000); hvis (lyd == 0) {pause; }}}}

Trinn 3: Påkrevde biblioteker:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • Berøringsskjerm. H

Github lenker for det samme:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

Trinn 4: Tilkoblingene

Slap It All Together
Slap It All Together

Du trenger 6 hoppetråder. 3 hanner og 3 hunner. lodde dem direkte til Arduino -brettet slik:

Trinn 5: Slå alt sammen

Fest ledningene til arduinoen (se bildet), bruk litt limpistol om nødvendig …

Fest deretter TFT -skjoldet, og test deretter sensorene dine.

Takk for at du rullet helt ned. Husk å stemme på meg hvis du synes dette prosjektet var unikt og nyttig

Glad i å lage og pass på elektroniske svindlere?

Trinn 6: Ytterligere forbedringer:

  • Mer sensorkompatibilitet
  • Servomotorkoden måtte være ferdig
  • En annen app som kan koble til Bluetooth -moduler, slik at vi kan kontrollere en Bluetooth -drevet robot med den.
  • Feilrettinger

Anbefalt: