Съдържание:

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

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

Видео: Робот, който казва дали продавач на електроника ви изневерява или не: 6 стъпки
Видео: Жена се върна от 3800 г., за да предупреди 2024, Юли
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.
  • Изчистване на бъгове

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