Indholdsfortegnelse:

En robot, der fortæller, om en elektronikleverandør snyder dig eller ej: 6 trin
En robot, der fortæller, om en elektronikleverandør snyder dig eller ej: 6 trin

Video: En robot, der fortæller, om en elektronikleverandør snyder dig eller ej: 6 trin

Video: En robot, der fortæller, om en elektronikleverandør snyder dig eller ej: 6 trin
Video: Jeg er bange for min far 2024, November
Anonim
En robot, der fortæller, om en elektronikleverandør snyder dig eller ej
En robot, der fortæller, om en elektronikleverandør snyder dig eller ej

Sidste år gik jeg og min far til en nyåbnet robot/elektronikbutik meget tæt på, hvor vi bor. Da jeg kom ind der, var den fuld af elektronik, serovs, sensorer, hindbærpis og Arduinos. Den næste dag gik vi til den samme butik og købte mange senorer og 3 Arduinos til en værdi af omkring 150 USD. Så snart jeg gik hjem, virkede ingen andre produkter undtagen Arduino Mega. Vi blev snydt for omkring 130 USD, hvilket er meget.

Så jeg besluttede at oprette en robot, der kan teste omkring 12 sensorer og 2 motorer (stadig arbejder på servoen) og kan afgøre, om produktet er defekt.

Lad os komme direkte ind i det!

Forbrugsvarer

1. Arduino UNO

2. 2,4 TFT touchscreen display

3. par springtråde

4. sensorer og motorer, så du kan teste dem (her brugte jeg - Bevægelsessensor, MQ6 gassensor, Lydsensor, potentiometer og vandstandssensor)

Trin 1: Sådan fungerer det …

Image
Image

Jeg har programmeret en Arduino til at oprette og interaktiv UI med et TFT -display. Som vi ved, har TFT -skærmen kun en ledig pin, det vil sige A5 -stiften. (hvis du bruger UNO). Så enhver sensor, der bruger analoge ben til at læse data, er kompatibel med denne opsætning …

I brugergrænsefladen kan du ændre skrivebordsbaggrundsfarven, og du kan åbne den app, der blev udviklet til Arduino af mig for at teste sensorer.

Ved åbning af appen kan du se 2 muligheder, INPUT og OUTPUT. Så hvis du klikker på Input, viser den 4 sensorer (Den er kompatibel med 12, men jeg skal endnu ikke programmere den, da jeg har eksamener, der nærmer sig.. ingen tid:(. Alle kan redigere koden …)

Og den kan også kontrollere, om servomotoren fungerer, når du tilslutter den til slottet.

kig:

Trin 2: Upload af koden

Koden er et program med 600 linjer, som jeg omhyggeligt har kodet på cirka 50 timer. Det har et par fejl, så plz ændrer det og send det til mig i min mail ([email protected]).

Upload koden, og tilslut TFT -skjoldet til Arduino. Jeg anbefaler dig at lege med brugergrænsefladen, så du får et bedre kendskab til det.

Koden:

#omfatte

#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 0xF0de #define RED 0xF800 #define RED 0xF800 #define RED 0xF06 #800 #define MAGENTA 0xF81F #define GUL 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XM A2 #define XM A2 #define XM A2 #define XM A2 #define XM A2 #define XM A2 #define XM A2 #define XM A2 #define XM A2 #define XM A2 #define XM A2 #define XM A2 #define 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; char tilstand = 6; int touch = 0; int farve = SORT; int redir = 0; int ota; ugyldig opsætning () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation (45); tft.setTextSize (0,5); tft.fillScreen (HVID); tft.setCursor (60, 160); tft.setTextColor (SORT); tft.print ("Stryg for at logge ind"); } void loop () {float sensorVoltage; float sensorVærdi; 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 (farve); lyd = 0; tft.fillRect (200, 180, 80, 140, HVID); tft.drawRect (201, 181, 81, 141, SORT); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, SORT); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, SORT); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, SORT); tft.fillRect (45, 180, 30, 120, BLÅ); tft.drawRect (46, 181, 31, 121, SORT); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, SORT); tft.fillRect (115, 180, 30, 120, GRØN); tft.drawRect (116, 181, 31, 121, SORT); tft.fillRect (150, 180, 30, 120, GUL); tft.drawRect (151, 181, 31, 121, SORT); tft.fillTriangle (210, 30, 210, 50, 220, 40, HVID); tft.fillRect (200, 35, 12, 12, HVID); tft.drawTriangle (210, 30, 210, 50, 220, 40, SORT); tft.drawRect (200, 35, 12, 12, SORT); tft.drawCircle (210, 40, 14, HVID); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Indstillinger"); tft.fillRoundRect (45, 75, 75, 75, 4, WHITE); tft.drawRoundRect (45, 75, 75, 75, 4, SORT); tft.fillRect (75, 75, 15, 30, SORT); tft.fillRect (75, 120, 15, 30, SORT); tft.fillRect (90, 105, 30, 15, SORT); tft.fillRect (45, 105, 30, 15, SORT); tilstand = 7; berøring = 0; ota = 0; } hvis (tryk == 2) {tft.fillScreen (WHITE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, HVID); tft.fillRect (200, 35, 12, 12, HVID); tft.drawTriangle (210, 30, 210, 50, 220, 40, SORT); tft.drawRect (200, 35, 12, 12, SORT); tft.drawCircle (210, 40, 14, SORT); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SORT); tft.drawLine (300, 30, 270, 30, SORT); tft.setCursor (20, 200); tft.print ("personalisering"); tft.setCursor (20, 170); tft.print ("log ud"); tft.setCursor (20, 140); tft.print ("periferiudstyr"); tft.setCursor (20, 110); tft.print ("Om"); berøring = 1; tilstand = 2; } hvis (touch == 10 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (10, 160); tft.setTextColor (SORT); tft.print ("Oprettet og udviklet"); tft.setCursor (100, 190); tft.print ("af:"); tft.setCursor (60, 220); tft.print ("En teenager fra Indien"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, HVID); tft.fillRect (200, 35, 12, 12, HVID); tft.drawTriangle (210, 30, 210, 50, 220, 40, SORT); tft.drawRect (200, 35, 12, 12, SORT); tft.drawCircle (210, 40, 14, SORT); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SORT); tft.drawLine (300, 30, 270, 30, SORT); tilstand = 6; } hvis (touch == 11 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (60, 40); tft.print ("Vælg en"); tft.setCursor (40, 60); tft.print ("baggrundsfarve"); 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ØN); 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, HVID); tft.drawRect (60, 80, 45, 45, SORT); tft.fillRect (120, 80, 45, 45, SORT); 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, HVID); tft.fillRect (200, 35, 12, 12, HVID); tft.drawTriangle (210, 30, 210, 50, 220, 40, SORT); tft.drawRect (200, 35, 12, 12, SORT); tft.drawCircle (210, 40, 14, SORT); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SORT); tft.drawLine (300, 30, 270, 30, SORT); tilstand = 6; hvis (redir == 1) {color = WHITE; } hvis (redir == 2) {color = SORT; } 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 = RØD; } hvis (redir == 10) {color = GUL; } hvis (redir == 11) {color = BLUE; } hvis (redir == 12) {color = GRØN; }} hvis (tryk == 26) {ota = 1; tft.fillScreen (HVID); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, HVID); tft.fillRect (200, 35, 12, 12, HVID); tft.drawTriangle (210, 30, 210, 50, 220, 40, SORT); tft.drawRect (200, 35, 12, 12, SORT); tft.drawCircle (210, 40, 14, SORT); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SORT); tft.drawLine (300, 30, 270, 30, SORT); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Input"); tft.setCursor (30, 150); tft.print ("Output"); tft.drawRect (25, 130, 90, 30, SORT); tft.drawRect (25, 60, 90, 30, SORT); hvis (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Vandstand"); tft.setCursor (150, 170); tft.print ("Gasniveau"); tft.setCursor (150, 120); tft.print ("Distance"); 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 ("Lydniveau ="); Serial.println (sensorVoltage); forsinkelse (1000); hvis (lyd == 0) {pause; }}}}

Trin 3: Påkrævet biblioteker:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • TouchScreen. H

Github linker til det samme:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

Trin 4: Forbindelserne

Slap det hele sammen
Slap det hele sammen

Du skal bruge 6 jumperwires. 3 hanner og 3 hunner. lod dem direkte til Arduino -kortet sådan:

Trin 5: Slap det hele sammen

Træk ledningerne ind i arduinoen (se billede), Brug lidt limpistol om nødvendigt …

Sæt derefter TFT -skjoldet på, og test derefter dine sensorer.

Tak fordi du rullede helt ned. Sørg for at stemme på mig, hvis du syntes, at dette projekt var unikt og nyttigt

Glad for at lave og pas på med elektroniske svindlere?

Trin 6: Yderligere forbedringer:

  • Mere sensorkompatibilitet
  • Servomotorkoden skulle være færdig
  • En anden app, der kan interface med Bluetooth -moduler, så vi kan styre en Bluetooth -drevet robot med den.
  • Fejlrettelser

Anbefalede: