Робот, който казва дали продавач на електроника ви изневерява или не: 6 стъпки
Робот, който казва дали продавач на електроника ви изневерява или не: 6 стъпки
Anonim
Робот, който казва дали продавач на електроника ви изневерява или не
Робот, който казва дали продавач на електроника ви изневерява или не

Миналата година аз и баща ми отидохме в новооткрит магазин за роботика/електроника много близо до мястото, където живеем. Когато влязох там, беше пълно с електроника, серова, сензори, Raspberry pis и Arduinos. На следващия ден отидохме в същия магазин и купихме много сензори и 3 Arduino на стойност около 150 USD. Веднага след като се прибрах, никой друг продукт не работи, освен Arduino Mega. Бяхме измамени за около 130 USD, което е много.

Така че реших да създам робот, който да тества около 12 сензора и 2 двигателя (все още работи върху сервото) и да може да определи дали продуктът е дефектен.

Нека се впуснем направо в това!

Консумативи

1. Arduino UNO

2. 2.4 TFT сензорен екран

3. няколко джъмперни проводника

4. сензори и двигатели, за да можете да ги тествате (тук използвах - сензор за движение, сензор за газ MQ6, сензор за звук, потенциометър и сензор за нивото на водата)

Стъпка 1: Как работи ……

Image
Image

Програмирал съм Arduino за създаване и интерактивен потребителски интерфейс с TFT дисплей. Както знаем, TFT дисплеят има само един свободен щифт, т.е. щифт A5. (ако използвате UNO). Така че всеки сензор, който използва аналогови щифтове за четене на данни, е съвместим с тази настройка …

В потребителския интерфейс можете да промените цвета на фона на работния плот и можете да отворите приложението, разработено за Arduino от мен, за да тества сензори.

При отваряне на приложението можете да видите 2 опции, INPUT и OUTPUT. така че, ако щракнете върху Въвеждане, той показва 4 сензора (Съвместим е с 12, но тепърва ще го програмирам, тъй като предстоят изпити ….но време:(. Всеки е свободен да редактира кода …)

Освен това може да провери дали сервомоторът работи, като го свържете към слота.

погледни:

Стъпка 2: Качване на кода

Кодът е програма от 600 реда, която щателно кодирах за около 50 часа. Той има няколко грешки, така че моля, променете го и ми го изпратете на моята поща ([email protected]).

Качете кода и свържете TFT щита към Arduino. Препоръчвам ви да си поиграете с потребителския интерфейс, за да го разберете по -добре.

Кодът:

#включва

#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 0x000FefineFine0define0define0define0define0define0dex #определи MAGENTA 0xF81F #дефинирай ЖЪЛТО 0xFFE0 #определи БЯЛО 0xFFFF #определи LIGHTGREY 0xC618 #дефинирай PURPLE 0x780F #дефинирай OLIVE 0x7BE0 #дефинирай селекция #дефинирай YP A1 #дефинирай XD #дефинирай XD 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 звук; char състояние = 6; int touch = 0; int цвят = ЧЕРЕН; 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 (БЯЛ); tft.setCursor (60, 160); tft.setTextColor (ЧЕРЕН); tft.print ("Плъзнете, за да влезете"); } void loop () {float sensorVoltage; датчик за поплавъкValue; 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 && 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; }} ако (докоснете == 1 && state == 6) {tft.setRotation (0); tft.fillScreen (цветен); звук = 0; tft.fillRect (200, 180, 80, 140, БЯЛ); tft.drawRect (201, 181, 81, 141, ЧЕРЕН); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, ЧЕРЕН); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, ЧЕРЕН); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, ЧЕРЕН); tft.fillRect (45, 180, 30, 120, СИН); tft.drawRect (46, 181, 31, 121, ЧЕРЕН); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, ЧЕРЕН); tft.fillRect (115, 180, 30, 120, ЗЕЛЕН); tft.drawRect (116, 181, 31, 121, ЧЕРЕН); tft.fillRect (150, 180, 30, 120, ЖЪЛТ); tft.drawRect (151, 181, 31, 121, ЧЕРЕН); tft.fillTriangle (210, 30, 210, 50, 220, 40, БЯЛ); tft.fillRect (200, 35, 12, 12, БЯЛ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ЧЕРЕН); tft.drawRect (200, 35, 12, 12, ЧЕРЕН); tft.drawCircle (210, 40, 14, БЯЛ); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Настройки"); tft.fillRoundRect (45, 75, 75, 75, 4, БЯЛ); tft.drawRoundRect (45, 75, 75, 75, 4, ЧЕРЕН); tft.fillRect (75, 75, 15, 30, ЧЕРЕН); tft.fillRect (75, 120, 15, 30, ЧЕРЕН); tft.fillRect (90, 105, 30, 15, ЧЕРЕН); tft.fillRect (45, 105, 30, 15, ЧЕРЕН); състояние = 7; докосване = 0; ota = 0; } if (докоснете == 2) {tft.fillScreen (БЯЛ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, БЯЛ); tft.fillRect (200, 35, 12, 12, БЯЛ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ЧЕРЕН); tft.drawRect (200, 35, 12, 12, ЧЕРЕН); tft.drawCircle (210, 40, 14, ЧЕРЕН); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ЧЕРЕН); tft.drawLine (300, 30, 270, 30, ЧЕРЕН); tft.setCursor (20, 200); tft.print ("персонализиране"); tft.setCursor (20, 170); tft.print ("излизане"); tft.setCursor (20, 140); tft.print ("периферни устройства"); tft.setCursor (20, 110); tft.print ("Всичко за"); докосване = 1; състояние = 2; } if (докоснете == 10 && state == 2) {tft.fillScreen (БЯЛ); tft.setCursor (10, 160); tft.setTextColor (ЧЕРЕН); tft.print ("Създадено и разработено"); tft.setCursor (100, 190); tft.print ("от:"); tft.setCursor (60, 220); tft.print ("Тийнейджър от Индия"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, БЯЛ); tft.fillRect (200, 35, 12, 12, БЯЛ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ЧЕРЕН); tft.drawRect (200, 35, 12, 12, ЧЕРЕН); tft.drawCircle (210, 40, 14, ЧЕРЕН); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ЧЕРЕН); tft.drawLine (300, 30, 270, 30, ЧЕРЕН); състояние = 6; } if (докоснете == 11 && state == 2) {tft.fillScreen (БЯЛ); tft.setCursor (60, 40); tft.print ("Изберете a"); tft.setCursor (40, 60); tft.print ("цвят на фона"); tft.fillRect (60, 180, 45, 45, ЧЕРВЕН); tft.fillRect (120, 180, 45, 45, ЖЪЛТО); tft.fillRect (180, 180, 45, 45, СИН); tft.fillRect (240, 180, 45, 45, ЗЕЛЕН); 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, БЯЛ); tft.drawRect (60, 80, 45, 45, ЧЕРЕН); tft.fillRect (120, 80, 45, 45, ЧЕРЕН); 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, БЯЛ); tft.fillRect (200, 35, 12, 12, БЯЛ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ЧЕРЕН); tft.drawRect (200, 35, 12, 12, ЧЕРЕН); tft.drawCircle (210, 40, 14, ЧЕРЕН); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ЧЕРЕН); tft.drawLine (300, 30, 270, 30, ЧЕРЕН); състояние = 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; }} ако (докоснете == 26) {ota = 1; tft.fillScreen (БЯЛ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, БЯЛ); tft.fillRect (200, 35, 12, 12, БЯЛ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ЧЕРЕН); tft.drawRect (200, 35, 12, 12, ЧЕРЕН); tft.drawCircle (210, 40, 14, ЧЕРЕН); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ЧЕРЕН); tft.drawLine (300, 30, 270, 30, ЧЕРЕН); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Вход"); tft.setCursor (30, 150); tft.print ("Изход"); tft.drawRect (25, 130, 90, 30, ЧЕРЕН); tft.drawRect (25, 60, 90, 30, ЧЕРЕН); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Ниво на водата"); tft.setCursor (150, 170); tft.print ("Ниво на газ"); tft.setCursor (150, 120); tft.print ("Разстояние"); tft.setCursor (150, 70); tft.print ("Звук"); докосване = 1; състояние = 2; }}} while (звук == 1) {tft.fillScreen (БЯЛ); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Ниво на звука ="); Serial.println (sensorVoltage); забавяне (1000); if (звук == 0) {break; }}}}

Стъпка 3: Необходими библиотеки:

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

Github връзки за същото:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

Стъпка 4: Връзките

Удари всичко заедно
Удари всичко заедно

Имате нужда от 6 джъмперни проводника. 3 мъжки и 3 женски. запоявайте ги директно към дъската на Arduino така:

Стъпка 5: Плеснете всичко заедно

Пъхнете проводниците към arduino (вижте изображението), използвайте пистолет за лепило, ако е необходимо …

След това прикрепете TFT щита и тествайте сензорите си.

Благодаря ви, че превъртате докрай надолу. Не забравяйте да гласувате за мен, ако смятате, че този проект е уникален и полезен

Приятно правене и се пазете от измамниците по електроника?

Стъпка 6: Допълнителни подобрения:

  • Повече съвместимост със сензори
  • Кодът на серво мотора трябваше да бъде завършен
  • Друго приложение, което може да взаимодейства с Bluetooth модули, така че да можем да управляваме с него робот с Bluetooth.
  • Изчистване на бъгове

Препоръчано: