Mundarija:
- Ta'minotlar
- 1 -qadam: Bu qanday ishlaydi …
- 2 -qadam: Kodni yuklash
- 3 -qadam: Kutubxonalar kerak:
- 4 -qadam: Ulanishlar
- 5 -qadam: Hammasini bir -biriga urish
- 6 -qadam: qo'shimcha yaxshilanishlar:
Video: Elektron sotuvchi sizni aldayaptimi yoki yo'qligini aytadigan robot: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
O'tgan yili men va dadam biz yashayotgan joyga juda yaqinda ochilgan robototexnika/elektronika do'koniga bordik. Men u erga kirganimda, u elektronika, serovlar, datchiklar, malina pis va Arduinosga to'la edi. Ertasi kuni biz o'sha do'konga bordik va 150 senaga yaqin bo'lgan ko'plab senorlarni va 3 Arduino sotib oldik. Uyga qaytganimdan so'ng, Arduino Mega -dan boshqa hech qanday mahsulot ishlamadi. Bizni taxminan 130 dollarga aldashdi, bu juda ko'p.
Shunday qilib, men 12 ta sensor va 2 ta dvigatelni sinovdan o'tkaza oladigan robotni yaratishga qaror qildim (hali servoda ishlaydi) va mahsulotning nosozligini aniqlay oladi.
Keling, bunga to'g'ridan -to'g'ri kiraylik!
Ta'minotlar
1. Arduino UNO
2. 2,4 dyuymli TFT sensorli ekran
3. bir nechta o'tish simlari
4. Siz ularni sinab ko'rishingiz uchun sensorlar va motorlar (bu erda men ishlatganman - Harakat sensori, MQ6 gaz sensori, Ovoz sensori, potensiometr va suv sathi sensori)
1 -qadam: Bu qanday ishlaydi …
Men Arduino -ni TFT displeyli interaktiv interfeys yaratish uchun dasturlashtirdim. Ma'lumki, TFT displeyida faqat bitta bo'sh pin bor, ya'ni A5 pinli. (agar siz BMTdan foydalansangiz). Ma'lumotni o'qish uchun analog pinlardan foydalanadigan har qanday sensor ushbu sozlash bilan mos keladi …
UI -da siz ish stoli fon rangini o'zgartirishingiz mumkin va men sensorlarni sinab ko'rish uchun men Arduino uchun ishlab chiqqan dasturni ochishingiz mumkin.
Ilovani ochganingizda, siz ikkita variantni ko'rishingiz mumkin: INPUT va OUTPUT. Agar siz "Kirish" tugmachasini bosgan bo'lsangiz, u 4 ta sensorni ko'rsatadi (u 12 bilan mos keladi, lekin men hali dasturlamayman, chunki menda imtihonlar yaqinlashmoqda …. vaqt yo'q:(. Har kim kodni tahrir qilishi mumkin …)
Shuningdek, u sizning servo dvigatelingiz uni uyaga ulashini tekshirishi mumkin.
qarang:
2 -qadam: Kodni yuklash
Kod - bu taxminan 50 soat ichida sinchkovlik bilan kodlangan 600 qatorli dastur. U bir nechta xatolarga ega, shuning uchun uni o'zgartiring va menga pochta orqali yuboring ([email protected]).
Kodni yuklang va TFT qalqonini Arduino -ga ulang. Sizga yaxshiroq UI bilan o'ynashni maslahat beraman.
Kod:
#qo'shing
#include #include #dexine 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 NAVYFF0x00F0x00F #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Tanlash #define Tin Adefine TP2. 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); #dexine BOXSIZE 40 #defrine PENRADIUS 3 #deinine MINPRESSURE 10 #dexine MAXPRESSURE 1000 int tovush; char holati = 6; int touch = 0; int rangi = QARA; 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 (oq); tft.setCursor (60, 160); tft.setTextColor (Qora); tft.print ("Kirish uchun suring"); } void loop () {float sensorVoltage; suzish sensori qiymati; TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); agar (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) {tegish = 26; }} if (tegish == 1 && state == 6) {tft.setRotation (0); tft.fillScreen (rang); ovoz = 0; tft.fillRect (200, 180, 80, 140, oq); tft.drawRect (201, 181, 81, 141, Qora); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, QORA); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, QORA); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, Qora); tft.fillRect (45, 180, 30, 120, KO'K); tft.drawRect (46, 181, 31, 121, Qora); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, Qora); tft.fillRect (115, 180, 30, 120, Yashil); tft.drawRect (116, 181, 31, 121, Qora); tft.fillRect (150, 180, 30, 120, SARI); tft.drawRect (151, 181, 31, 121, Qora); tft.fillTriangle (210, 30, 210, 50, 220, 40, oq); tft.fillRect (200, 35, 12, 12, oq); tft.drawTriangle (210, 30, 210, 50, 220, 40, QORA); tft.drawRect (200, 35, 12, 12, QORA); tft.drawCircle (210, 40, 14, oq); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Sozlamalar"); tft.fillRoundRect (45, 75, 75, 75, 4, oq); tft.drawRoundRect (45, 75, 75, 75, 4, QORA); tft.fillRect (75, 75, 15, 30, Qora); tft.fillRect (75, 120, 15, 30, Qora); tft.fillRect (90, 105, 30, 15, Qora); tft.fillRect (45, 105, 30, 15, Qora); davlat = 7; tegish = 0; ota = 0; } agar (tegish == 2) {tft.fillScreen (WHITE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, oq); tft.fillRect (200, 35, 12, 12, oq); tft.drawTriangle (210, 30, 210, 50, 220, 40, QORA); tft.drawRect (200, 35, 12, 12, QORA); tft.drawCircle (210, 40, 14, Qora); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, Qora); tft.drawLine (300, 30, 270, 30, Qora); tft.setCursor (20, 200); tft.print ("shaxsiylashtirish"); tft.setCursor (20, 170); tft.print ("chiqish"); tft.setCursor (20, 140); tft.print ("tashqi qurilmalar"); tft.setCursor (20, 110); tft.print ("Haqida"); teginish = 1; holat = 2; } agar (tegish == 10 && hol == 2) {tft.fillScreen (WHITE); tft.setCursor (10, 160); tft.setTextColor (Qora); tft.print ("Yaratilgan va ishlab chiqilgan"); tft.setCursor (100, 190); tft.print ("tomonidan:"); tft.setCursor (60, 220); tft.print ("Hindistonlik o'smir"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, oq); tft.fillRect (200, 35, 12, 12, oq); tft.drawTriangle (210, 30, 210, 50, 220, 40, QORA); tft.drawRect (200, 35, 12, 12, QORA); tft.drawCircle (210, 40, 14, Qora); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, Qora); tft.drawLine (300, 30, 270, 30, Qora); davlat = 6; } if (touch == 11 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (60, 40); tft.print ("Tanlash"); tft.setCursor (40, 60); tft.print ("fon rangi"); tft.fillRect (60, 180, 45, 45, RED); tft.fillRect (120, 180, 45, 45, SARI); tft.fillRect (180, 180, 45, 45, moviy); tft.fillRect (240, 180, 45, 45, Yashil); 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, oq); tft.drawRect (60, 80, 45, 45, Qora); tft.fillRect (120, 80, 45, 45, Qora); 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, oq); tft.fillRect (200, 35, 12, 12, oq); tft.drawTriangle (210, 30, 210, 50, 220, 40, QORA); tft.drawRect (200, 35, 12, 12, QORA); tft.drawCircle (210, 40, 14, Qora); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, Qora); tft.drawLine (300, 30, 270, 30, Qora); davlat = 6; if (redir == 1) {color = WHITE; } if (redir == 2) {color = QARA; } 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 = SARI; } if (redir == 11) {color = KO'Z; } if (redir == 12) {color = Yashil; }} if (tegish == 26) {ota = 1; tft.fillScreen (oq); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, oq); tft.fillRect (200, 35, 12, 12, oq); tft.drawTriangle (210, 30, 210, 50, 220, 40, QORA); tft.drawRect (200, 35, 12, 12, QORA); tft.drawCircle (210, 40, 14, Qora); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, Qora); tft.drawLine (300, 30, 270, 30, Qora); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Kirish"); tft.setCursor (30, 150); tft.print ("Chiqish"); tft.drawRect (25, 130, 90, 30, Qora); tft.drawRect (25, 60, 90, 30, Qora); if (p.x> 190 && p.x 30 && p <y <90) {tft.setCursor (150, 220); tft.print ("Suv sathi"); tft.setCursor (150, 170); tft.print ("Gaz darajasi"); tft.setCursor (150, 120); tft.print ("Masofa"); tft.setCursor (150, 70); tft.print ("Ovoz"); teginish = 1; holat = 2; }}} while (tovush == 1) {tft.fillScreen (OQ); sensorValue = analogRead (A5); sensorVoltaj = sensorValue; tft.setCursor (60, 160); tft.print (sensor kuchlanish); Serial.println ("Ovoz darajasi ="); Serial.println (sensor kuchlanish); kechikish (1000); if (tovush == 0) {tanaffus; }}}}
3 -qadam: Kutubxonalar kerak:
- Adafruit_GFX.h
- Adafruit_TFTLCD.h
- TouchScreen.h
Github havolalari bir xil:
github.com/adafruit/Adafruit-GFX-Library
github.com/adafruit/TFTLCD-Library
github.com/adafruit/Adafruit_TouchScreen
4 -qadam: Ulanishlar
Sizga 6 ta o'tish simlari kerak. 3 erkak va 3 urg'ochi. ularni to'g'ridan -to'g'ri Arduino kartasiga lehimlang:
5 -qadam: Hammasini bir -biriga urish
Arduino -ga simlarni ulang (rasmga qarang), agar kerak bo'lsa, yopishqoq tabancadan foydalaning …
Keyin TFT qalqonini ulang va sensorlaringizni tekshiring.
Barchasini pastga aylantirganingiz uchun tashakkur. Agar siz ushbu loyiha o'ziga xos va foydali deb hisoblasangiz, menga ovoz berishga ishonch hosil qiling
Baxtli bo'lasizmi va Electronics firibgarlaridan ehtiyot bo'lasizmi?
6 -qadam: qo'shimcha yaxshilanishlar:
- Sensorlarning ko'proq mosligi
- Servo dvigatel kodini tugatish kerak edi
- Bluetooth modullari bilan aloqa o'rnatadigan yana bir ilova, bunda biz Bluetooth bilan ishlaydigan robotni boshqaramiz.
- Xatoliklar tuzatildi
Tavsiya:
S.H.I.E.L.D - Kimdir sizni kuzatyaptimi ?: 4 qadam (rasmlar bilan)
S.H.I.E.L.D - Kimdir Sizni Ko'ryaptimi ?: Men mikrofoni yoki kamerasi yoqilganligini payqamaganlarida, xijolat tortgan odamlarning ko'plab videolarini ko'rdim va bu menga bu loyihaning g'oyasini berdi. Men C# -da oddiy dastur yozdim, u kamera yoki mikrofon qachon ishlatilishini aniqlaydi
Talos, sayohat paytida sizni xavfsiz saqlaydi: 5 qadam
Talos, yurish paytida sizni xavfsiz saqlaydi: Qatnov paytida tazyiq qurboni bo'lish ko'p odamlar, ayniqsa ayollar uchun odatiy holdir. Qaysi mamlakatda bo'lishidan qat'i nazar, jamoat transportida sayohat qilish sizni jinsiy zo'ravonlikka olib kelishi yoki hatto uyga ketayotganingizda kuzatib qo'yishi mumkinligini biladi. Ularda
Bulutli bulut sizni davolaydi (yig'ilish funktsiyasiga ega bo'lgan to'siqlardan qochadigan robot): 8 qadam
Bulutli bulut sizni davolaydi (yig'ish funktsiyali to'siqlardan qochadigan robot): foydasiz mashina - Arduino roboti
Gidratator - sizni suv ichishga undovchi qurilma: 8 qadam (rasmlar bilan)
Gidratator - sizni suv ichishga undovchi qurilma: etarli miqdorda suv ichish hamma uchun juda muhim. Ammo har kuni men kerak bo'lgandan ko'ra kamroq suv ichaman. Menga o'xshagan odamlar borligini bilaman, ularga suv ichishni eslatish kerak. Agar siz bizdan bo'lsangiz, bu loyiha sizning hayotingizni o'zgartiradi
Janob Wallplate boshi sizni kuzatadi: 9 qadam (rasmlar bilan)
Janob Wallplate boshi sizni kuzatib turadi: bu janob Wallplate-ning ko'z illyuzion robotining yanada ilg'or versiyasi https://www.instructables.com/id/Mr-Wallplates-Eye-Illusion. Ultrasonik sensor sizga janob Wallplate -ning boshi sizni oldingizda yurganingizda kuzatib borishiga imkon beradi. Jarayonni sarhisob qilish mumkin