Turinys:

Robotas, nurodantis, ar elektronikos pardavėjas jus apgaudinėja, ar ne: 6 veiksmai
Robotas, nurodantis, ar elektronikos pardavėjas jus apgaudinėja, ar ne: 6 veiksmai

Video: Robotas, nurodantis, ar elektronikos pardavėjas jus apgaudinėja, ar ne: 6 veiksmai

Video: Robotas, nurodantis, ar elektronikos pardavėjas jus apgaudinėja, ar ne: 6 veiksmai
Video: This is how you would train in the US 💀#electronics #arduino #engineering 2024, Lapkritis
Anonim
Robotas, kuris pasako, ar elektronikos pardavėjas jus apgaudinėja, ar ne
Robotas, kuris pasako, ar elektronikos pardavėjas jus apgaudinėja, ar ne

Praėjusiais metais aš ir mano tėtis nuėjome į naujai atidarytą robotikos/elektronikos parduotuvę visai netoli mūsų gyvenamosios vietos. Kai aš ten įėjau, ten buvo pilna elektronikos, serovų, jutiklių, „Raspberry pis“ir „Arduinos“. Kitą dieną mes nuėjome į tą pačią parduotuvę ir nusipirkome daug senatorių ir 3 „Arduinos“, kurių vertė apie 150 USD. Kai tik grįžau namo, jokie kiti produktai neveikė, išskyrus „Arduino Mega“. Mus apgavo už maždaug 130 USD, o tai yra daug.

Taigi, aš nusprendžiau sukurti robotą, kuris galėtų išbandyti apie 12 jutiklių ir 2 variklius (vis dar veikia su servo sistema) ir galėtų nustatyti, ar produktas yra sugedęs.

Eikime tiesiai į tai!

Prekės

1. Arduino UNO

2. 2,4 colio TFT jutiklinis ekranas

3. pora trumpiklių

4. jutikliai ir varikliai, kad galėtumėte juos išbandyti (čia aš naudojau - judesio jutiklį, MQ6 dujų jutiklį, garso jutiklį, potenciometrą ir vandens lygio jutiklį)

1 žingsnis: kaip tai veikia …

Image
Image

Aš užprogramavau „Arduino“sukurti interaktyvią vartotojo sąsają su TFT ekranu. Kaip žinome, TFT ekranas turi tik vieną laisvą kaištį, ty A5 kaištį. (jei naudojate UNO). Taigi bet kuris jutiklis, kuris naudoja analoginius kaiščius duomenims skaityti, yra suderinamas su šia sąranka …

Naudotojo sąsajoje galite pakeisti darbalaukio fono spalvą ir atidaryti programą, kurią aš sukūriau „Arduino“, kad išbandytumėte jutiklius.

Atidarę programą galite pamatyti 2 parinktis: Įvestis ir Išvestis. taigi, jei spustelėsite Įvestis, bus rodomi 4 jutikliai (jis suderinamas su 12, bet aš dar jo neužprogramuoju, nes artėja egzaminai….nieko laiko:(. Kiekvienas gali laisvai redaguoti kodą …)

Jis taip pat gali patikrinti, ar veikia jūsų servo variklis, prijunkite jį prie lizdo.

Pažvelk:

2 veiksmas: įkelkite kodą

Kodas yra 600 eilučių programa, kurią kruopščiai užkodavau maždaug per 50 valandų. Jame yra keletas klaidų, todėl plz ją pataisykite ir atsiųskite man el. Paštu ([email protected]).

Įkelkite kodą ir prijunkite TFT skydą prie „Arduino“. Rekomenduoju pažaisti su vartotojo sąsaja, kad geriau suprastumėte.

Kodas:

#įtraukti

#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 Navi #define MAGENTA 0xF81F #define GELTONA 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XP # # # # # # 160 #define TS_MAXX 160 #define TS_MAXY 970 Jutiklinis ekranas ts = jutiklinis ekranas (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 sound; char būsena = 6; int touch = 0; int spalva = JUODA; 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 (BALTAS); tft.setCursor (60, 160); tft.setTextColor (JUODA); tft.print („Perbraukite, kad prisijungtumėte“); } void loop () {float sensorVoltage; float sensorValue; TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); jei (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 && 150 py <100) {lietimas = 26; }} if (touch == 1 && state == 6) {tft.setRotation (0); tft.fillScreen (spalva); garsas = 0; tft.fillRect (200, 180, 80, 140, BALTA); tft.drawRect (201, 181, 81, 141, JUODAS); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, JUODA); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, JUODA); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, JUODA); tft.fillRect (45, 180, 30, 120, MĖLYNA); tft.drawRect (46, 181, 31, 121, JUODA); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, JUODAS); tft.fillRect (115, 180, 30, 120, GREEN); tft.drawRect (116, 181, 31, 121, JUODAS); tft.fillRect (150, 180, 30, 120, GELTONA); tft.drawRect (151, 181, 31, 121, JUODAS); tft.fillTriangle (210, 30, 210, 50, 220, 40, BALTAS); tft.fillRect (200, 35, 12, 12, BALTA); tft.drawTriangle (210, 30, 210, 50, 220, 40, BLACK); tft.drawRect (200, 35, 12, 12, JUODA); tft.drawCircle (210, 40, 14, BALTA); //tft.fillTriange (a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print („Nustatymai“); tft.fillRoundRect (45, 75, 75, 75, 4, BALTAS); tft.drawRoundRect (45, 75, 75, 75, 4, BLACK); tft.fillRect (75, 75, 15, 30, JUODA); tft.fillRect (75, 120, 15, 30, JUODA); tft.fillRect (90, 105, 30, 15, JUODA); tft.fillRect (45, 105, 30, 15, JUODA); būsena = 7; prisilietimas = 0; ota = 0; } if (touch == 2) {tft.fillScreen (BALTA); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BALTAS); tft.fillRect (200, 35, 12, 12, BALTA); tft.drawTriangle (210, 30, 210, 50, 220, 40, BLACK); tft.drawRect (200, 35, 12, 12, JUODA); tft.drawCircle (210, 40, 14, JUODA); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, BLACK); tft.drawLine (300, 30, 270, 30, JUODA); tft.setCursor (20, 200); tft.print („personalizavimas“); tft.setCursor (20, 170); tft.print („atsijungti“); tft.setCursor (20, 140); tft.print („periferiniai įrenginiai“); tft.setCursor (20, 110); tft.print („Apie“); prisilietimas = 1; būsena = 2; } if (touch == 10 && state == 2) {tft.fillScreen (BALTA); tft.setCursor (10, 160); tft.setTextColor (JUODA); tft.print („Sukurta ir sukurta“); tft.setCursor (100, 190); tft.print ("pagal:"); tft.setCursor (60, 220); tft.print („Paauglys iš Indijos“); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BALTAS); tft.fillRect (200, 35, 12, 12, BALTA); tft.drawTriangle (210, 30, 210, 50, 220, 40, BLACK); tft.drawRect (200, 35, 12, 12, JUODA); tft.drawCircle (210, 40, 14, JUODA); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, BLACK); tft.drawLine (300, 30, 270, 30, JUODA); būsena = 6; } if (touch == 11 && state == 2) {tft.fillScreen (BALTA); tft.setCursor (60, 40); tft.print („Pasirinkite a“); tft.setCursor (40, 60); tft.print ("fono spalva"); tft.fillRect (60, 180, 45, 45, RED); tft.fillRect (120, 180, 45, 45, GELTONA); tft.fillRect (180, 180, 45, 45, MĖLYNA); 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, BALTA); tft.drawRect (60, 80, 45, 45, JUODA); tft.fillRect (120, 80, 45, 45, JUODA); 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, BALTAS); tft.fillRect (200, 35, 12, 12, BALTA); tft.drawTriangle (210, 30, 210, 50, 220, 40, BLACK); tft.drawRect (200, 35, 12, 12, JUODA); tft.drawCircle (210, 40, 14, JUODA); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, JUODA); tft.drawLine (300, 30, 270, 30, JUODA); būsena = 6; if (redir == 1) {spalva = BALTA; } jei (redir == 2) {spalva = JUODA; } if (redir == 3) {color = OLIVE; } if (redir == 4) {color = PURPLE; } jei (redir == 5) {spalva = MAGENTA; } jei (redir == 6) {spalva = NAVY; } jei (redir == 7) {spalva = LIGHTGREY; } jei (redir == 8) {spalva = CYAN; } jei (redir == 9) {spalva = RAUDONA; } jei (redir == 10) {spalva = GELTONA; } jei (redir == 11) {spalva = MĖLYNA; } jei (redir == 12) {spalva = ŽALIA; }} if (touch == 26) {ota = 1; tft.fillScreen (BALTAS); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BALTAS); tft.fillRect (200, 35, 12, 12, BALTA); tft.drawTriangle (210, 30, 210, 50, 220, 40, BLACK); tft.drawRect (200, 35, 12, 12, JUODA); tft.drawCircle (210, 40, 14, JUODA); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, BLACK); tft.drawLine (300, 30, 270, 30, JUODA); tft.setRotation (1); tft.setCursor (30, 80); tft.print („Įvestis“); tft.setCursor (30, 150); tft.print („Išvestis“); tft.drawRect (25, 130, 90, 30, JUODA); tft.drawRect (25, 60, 90, 30, JUODA); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print („Vandens lygis“); tft.setCursor (150, 170); tft.print („Dujų lygis“); tft.setCursor (150, 120); tft.print („Atstumas“); tft.setCursor (150, 70); tft.print („Garsas“); prisilietimas = 1; būsena = 2; }}} while (garsas == 1) {tft.fillScreen (BALTAS); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Garso lygis ="); Serial.println (sensorVoltage); vėlavimas (1000); if (garsas == 0) {break; }}}}

3 veiksmas: reikalingos bibliotekos:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • Jutiklinis ekranas.h

„Github“nuorodos į tą patį:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

4 žingsnis: jungtys

Sumuškite viską kartu
Sumuškite viską kartu

Jums reikia 6 jungiamųjų laidų. 3 patinai ir 3 patelės. lituokite juos tiesiai prie „Arduino“plokštės taip:

5 žingsnis: sudėkite viską kartu

Prijunkite laidus prie arduino (žr. Paveikslėlį), jei reikia, naudokite klijų pistoletą …

Tada pritvirtinkite TFT skydą, tada patikrinkite jutiklius.

Dėkojame, kad slinkote iki galo. Būtinai balsuokite už mane, jei manėte, kad šis projektas yra unikalus ir naudingas

Laimingai kuriate ir saugokitės elektronikos sukčių?

6 veiksmas: tolesni patobulinimai:

  • Daugiau jutiklių suderinamumo
  • Servo variklio kodas turėjo būti baigtas
  • Kita programa, kuri gali sąveikauti su „Bluetooth“moduliais, kad galėtume su juo valdyti „Bluetooth“maitinamą robotą.
  • Riktų pataisymai

Rekomenduojamas: