Mündəricat:
- Təchizat
- Addım 1: Necə Çalışır …
- Addım 2: Kodun Yüklənməsi
- Addım 3: Tələb olunan kitabxanalar:
- Addım 4: Bağlantılar
- Addım 5: Hamısını bir yerə vurun
- Addım 6: Əlavə Təkmilləşdirmələr:
Video: Bir elektronika satıcısının sizi aldatdığını və ya etmədiyini söyləyən bir robot: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
Keçən il atamla birlikdə yaşadığımız yerə çox yaxın bir zamanda yeni açılan robototexnika/elektronika mağazasına getdik. Oraya girəndə elektronika, serovlar, sensorlar, Moruq pis və Arduinosla dolu idi. Ertəsi gün eyni mağazaya getdik və təxminən 150 ABŞ dolları dəyərində bir çox senor və 3 Arduino aldıq. Evə gedən kimi Arduino Mega -dan başqa heç bir məhsul işləmədi. Təxminən 130 ABŞ dolları məbləğində aldadıldıq.
Beləliklə, təxminən 12 sensoru və 2 mühərriki sınaya bilən (hələ də servo üzərində işləyir) və məhsulun qüsurlu olub olmadığını müəyyən edə bilən bir robot yaratmağa qərar verdim.
Gəlin birbaşa buna girək!
Təchizat
1. Arduino UNO
2. 2.4 TFT toxunma ekranı
3. cüt keçid telləri
4. test edə biləcəyiniz sensorlar və mühərriklər (burada istifadə etdim - Hərəkət sensoru, MQ6 qaz sensoru, Səs sensoru, potensiometr və su səviyyəsi sensoru)
Addım 1: Necə Çalışır …
TFT displeyli interaktiv UI yaratmaq üçün Arduino proqramlaşdırmışam. Bildiyimiz kimi, TFT ekranında yalnız bir pulsuz pin var, yəni A5 pin. (UNO -dan istifadə edirsinizsə). Beləliklə, məlumatları oxumaq üçün Analog pinlərdən istifadə edən hər hansı bir sensor bu quruluşa uyğundur …
İstifadəçi interfeysində, masa üstü arxa plan rəngini dəyişə bilərsiniz və sensorları yoxlamaq üçün Arduino üçün hazırladığım proqramı aça bilərsiniz.
Tətbiqi açdıqda GİRİŞ və ÇIXIŞ 2 variantını görə bilərsiniz. Buna görə Giriş düyməsini basarsanız, 4 sensoru göstərir (12 ilə uyğundur, amma imtahanlar yaxınlaşdığına görə hələ proqramlaşdırmamışam ….
Ayrıca, servo motorunuzun onu yuvaya bağladığını yoxlaya bilər.
bir baxın:
Addım 2: Kodun Yüklənməsi
Kod, təxminən 50 saat ərzində diqqətlə kodladığım 600 xəttli bir proqramdır. Bir neçə səhvləri var, buna görə düzəliş edin və mənə poçtuma göndərin ([email protected]).
Kodu yükləyin və TFT qalxanını Arduino -ya qoşun. İstifadəçi interfeysi ilə daha yaxşı məşğul olmağınızı məsləhət görürəm.
Kod:
#daxil edin
#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 MAVİ 0x001F #define NAVYFin 0x00F #0x00F #0x00F #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define BEYAZ 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define TineFineEPE1 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 #define PENRADIUS 3 #dein MINPRESSURE 10 #dexine MAXPRESSURE 1000 int səsi; char vəziyyəti = 6; int touch = 0; int rəngi = QARA; int redir = 0; int ana; void setup () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation (45); tft.setTextSize (0.5); tft.fillScreen (BEYAZ); tft.setCursor (60, 160); tft.setTextColor (SİYAH); tft.print ("Giriş üçün sürüşdürün"); } void loop () {float sensorVoltage; üzmə sensoruDəyər; TSPoint p = ts.getPoint (); pinMode (XM, Çıxış); pinMode (YP, ÇIXIŞ); əgər (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 (rəngli); səs = 0; tft.fillRect (200, 180, 80, 140, BEYAZ); tft.drawRect (201, 181, 81, 141, SİYAH); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, SİYAH); tft.fillRect (10, 30, 50, 100, Dəniz Qüvvələri); tft.drawRect (11, 31, 51, 101, SİYAH); tft.fillRect (10, 180, 30, 120, BURCU); tft.drawRect (11, 181, 31, 121, SİYAH); tft.fillRect (45, 180, 30, 120, MAVİ); tft.drawRect (46, 181, 31, 121, SİYAH); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, SİYAH); tft.fillRect (115, 180, 30, 120, GREEN); tft.drawRect (116, 181, 31, 121, SİYAH); tft.fillRect (150, 180, 30, 120, SARI); tft.drawRect (151, 181, 31, 121, SİYAH); tft.fillTriangle (210, 30, 210, 50, 220, 40, BEYAZ); tft.fillRect (200, 35, 12, 12, BEYAZ); tft.drawTriangle (210, 30, 210, 50, 220, 40, SİYAH); tft.drawRect (200, 35, 12, 12, SİYAH); tft.drawCircle (210, 40, 14, BEYAZ); //tft.fillTriange(a1, b1, a2, b2, c1, c2, QIRMIZI); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Ayarlar"); tft.fillRoundRect (45, 75, 75, 75, 4, BEYAZ); tft.drawRoundRect (45, 75, 75, 75, 4, SİYAH); tft.fillRect (75, 75, 15, 30, SİYAH); tft.fillRect (75, 120, 15, 30, SİYAH); tft.fillRect (90, 105, 30, 15, SİYAH); tft.fillRect (45, 105, 30, 15, SİYAH); vəziyyət = 7; toxunma = 0; ana = 0; } əgər (toxun == 2) {tft.fillScreen (BEYAZ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BEYAZ); tft.fillRect (200, 35, 12, 12, BEYAZ); tft.drawTriangle (210, 30, 210, 50, 220, 40, SİYAH); tft.drawRect (200, 35, 12, 12, SİYAH); tft.drawCircle (210, 40, 14, SİYAH); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SİYAH); tft.drawLine (300, 30, 270, 30, SİYAH); tft.setCursor (20, 200); tft.print ("fərdiləşdirmə"); tft.setCursor (20, 170); tft.print ("çıx"); tft.setCursor (20, 140); tft.print ("ətraf qurğular"); tft.setCursor (20, 110); tft.print ("Haqqında"); toxunma = 1; vəziyyət = 2; } if (touch == 10 && state == 2) {tft.fillScreen (BEYAZ); tft.setCursor (10, 160); tft.setTextColor (SİYAH); tft.print ("Yaradıldı və inkişaf etdirildi"); tft.setCursor (100, 190); tft.print ("tərəfindən:"); tft.setCursor (60, 220); tft.print ("Hindistanlı bir yeniyetmə"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BEYAZ); tft.fillRect (200, 35, 12, 12, BEYAZ); tft.drawTriangle (210, 30, 210, 50, 220, 40, SİYAH); tft.drawRect (200, 35, 12, 12, SİYAH); tft.drawCircle (210, 40, 14, SİYAH); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SİYAH); tft.drawLine (300, 30, 270, 30, SİYAH); vəziyyət = 6; } if (touch == 11 && state == 2) {tft.fillScreen (BEYAZ); tft.setCursor (60, 40); tft.print ("A seçin"); tft.setCursor (40, 60); tft.print ("fon rəngi"); tft.fillRect (60, 180, 45, 45, QIRMIZI); tft.fillRect (120, 180, 45, 45, SARI); tft.fillRect (180, 180, 45, 45, MAVİ); 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, BEYAZ); tft.drawRect (60, 80, 45, 45, SİYAH); tft.fillRect (120, 80, 45, 45, SİYAH); tft.fillRect (180, 80, 45, 45, ZEYTİN); tft.fillRect (240, 80, 45, 45, Purple); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BEYAZ); tft.fillRect (200, 35, 12, 12, BEYAZ); tft.drawTriangle (210, 30, 210, 50, 220, 40, SİYAH); tft.drawRect (200, 35, 12, 12, SİYAH); tft.drawCircle (210, 40, 14, SİYAH); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SİYAH); tft.drawLine (300, 30, 270, 30, SİYAH); vəziyyət = 6; əgər (redir == 1) {color = BEYAZ; } if (redir == 2) {color = BLACK; } if (redir == 3) {color = OLIVE; } if (redir == 4) {color = PURPLE; } əgər (redir == 5) {color = MAGENTA; } if (redir == 6) {color = NAVY; } əgər (redir == 7) {color = LIGHTGREY; } if (redir == 8) {color = CYAN; } if (redir == 9) {color = QIRMIZI; } if (redir == 10) {color = SARI; } if (redir == 11) {color = BLUE; } if (redir == 12) {color = GREEN; }} if (toxun == 26) {ota = 1; tft.fillScreen (BEYAZ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BEYAZ); tft.fillRect (200, 35, 12, 12, BEYAZ); tft.drawTriangle (210, 30, 210, 50, 220, 40, SİYAH); tft.drawRect (200, 35, 12, 12, SİYAH); tft.drawCircle (210, 40, 14, SİYAH); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, SİYAH); tft.drawLine (300, 30, 270, 30, SİYAH); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Giriş"); tft.setCursor (30, 150); tft.print ("Çıxış"); tft.drawRect (25, 130, 90, 30, SİYAH); tft.drawRect (25, 60, 90, 30, SİYAH); əgər (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Su səviyyəsi"); tft.setCursor (150, 170); tft.print ("Qaz səviyyəsi"); tft.setCursor (150, 120); tft.print ("Məsafə"); tft.setCursor (150, 70); tft.print ("Səs"); toxunma = 1; vəziyyət = 2; }}} isə (səs == 1) {tft.fillScreen (BEYAZ); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Səs səviyyəsi ="); Serial.println (sensorVoltage); gecikmə (1000); if (səs == 0) {fasilə; }}}}
Addım 3: Tələb olunan kitabxanalar:
- Adafruit_GFX.h
- Adafruit_TFTLCD.h
- TouchScreen.h
Eyni şey üçün Github bağlantıları:
github.com/adafruit/Adafruit-GFX-Library
github.com/adafruit/TFTLCD-Library
github.com/adafruit/Adafruit_TouchScreen
Addım 4: Bağlantılar
6 keçid telinə ehtiyacınız var. 3 kişi və 3 qadın. Onları birbaşa Arduino lövhəsinə belə lehimləyin:
Addım 5: Hamısını bir yerə vurun
Telləri arduinoya bağlayın (şəkilə baxın), Lazım gələrsə bir az yapışqan silahı istifadə edin …
Sonra TFT qalxanını bağlayın və sonra Sensorlarınızı sınayın.
Sonuna qədər sürüşdürdüyünüz üçün təşəkkür edirəm. Bu layihənin unikal və faydalı olduğunu hiss edirsinizsə, mənə səs verməyinizə əmin olun
Xoşbəxt olmaq və Electronics fırıldaqçılarından ehtiyatlanmaq?
Addım 6: Əlavə Təkmilləşdirmələr:
- Daha çox sensor uyğunluğu
- Servo motor kodu bitməli idi
- Bluetooth modulları ilə əlaqə qura bilən başqa bir tətbiq, bununla birlikdə Bluetooth ilə işləyən bir robotu idarə edə bilərik.
- Hata düzəlişləri
Tövsiyə:
Talos, gediş zamanı sizi təhlükəsiz saxlayır: 5 addım
Talos, Getdiyiniz müddətdə sizi təhlükəsiz saxlayır: İşə gedərkən təcavüz qurbanı olmaq, bir çox insanlar, xüsusən də qadınlar üçün olduqca yaygın bir şeydir. Ölkə nə olursa olsun, ictimai nəqliyyata minmək, evə gedərkən cinsi təcavüzə məruz qala biləcəyinizi və hətta təqib oluna biləcəyinizə bərabərdir. Onlarda
MyPetBot (sizi izləyən bir bot): 10 addım (şəkillərlə)
MyPetBot (Sizi İzləyən Bot): Ai riyaziyyatın ən gözəl tətbiqlərindən biridir. Əsasən axtardığınız nəticəyə uyğun olaraq optimallaşdırılmış bir çox matris əməliyyatıdır. Xoşbəxtlikdən, istifadə etməyimizə imkan verən bir çox açıq mənbə vasitəsi var. Mən əvvəlcə ha
Nəmləndirici - sizi su içməyə təşviq edən bir cihaz: 8 addım (şəkillərlə)
Nəmləndirici - Sizi Su İçməyə Həvəsləndirən Cihaz: Kifayət qədər su içmək hər kəs üçün çox vacibdir. Ancaq hər gün içməli olduğumdan daha az su içirəm. Bilirəm ki, mənim kimi su içməyi xatırlatmaq lazım olan insanlar var. Bizdən birisinizsə, bu layihə sizin həyatınızı dəyişəcək
Cənab Wallplatein Başı Sizi İzləməyə Dönür: 9 Adım (Şəkillərlə)
Cənab Wallplate'in Başı Sizi İzləməyə Dönür: Bu, Bay Wallplate'in Göz Illusion Robotunun daha inkişaf etmiş bir versiyasıdır https://www.instructables.com/id/Mr-Wallplates-Eye-Illusion. Ultrasonik sensor, cənab Wallplate -in başının önündə gedərkən sizi izləməsinə imkan verir. Bu prosesi ümumiləşdirmək olar
SlouchyBoard - Sıxılmamaq üçün sizi narahat edən bir yol (EasyEDA -ya giriş): 4 addım (şəkillərlə)
SlouchyBoard - Sıxılmaqdan çəkinməyin zəhlətökən bir yolu (EasyEDA -ya giriş): Slouchy lövhə, əyilmə sensoru, piezo səs siqnalı və ATTiny 85 istifadə edərkən sinir bozucu bir səs çıxarmaq üçün istifadə olunan 30 mm x 30 mm ölçülü kiçik bir PCB (Çaplı Devre Kartı) dir. istifadəçi əyilir. Lövhə istifadəçilərin köynəyinə və ya şapkasına yapışdırıla bilər ki, onlar aşağı düşəndə