Mündəricat:

Bir elektronika satıcısının sizi aldatdığını və ya etmədiyini söyləyən bir robot: 6 addım
Bir elektronika satıcısının sizi aldatdığını və ya etmədiyini söyləyən bir robot: 6 addım

Video: Bir elektronika satıcısının sizi aldatdığını və ya etmədiyini söyləyən bir robot: 6 addım

Video: Bir elektronika satıcısının sizi aldatdığını və ya etmədiyini söyləyən bir robot: 6 addım
Video: ARABALARIN 10 GİZLİ ÖZELLİĞİ! 2024, Noyabr
Anonim
Bir elektronika satıcısının sizi aldatdığını və ya etmədiyini söyləyən bir robot
Bir elektronika satıcısının sizi aldatdığını və ya etmədiyini söyləyən bir robot

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 …

Image
Image

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

Hamısını Birlikdə Çırpın
Hamısını Birlikdə Çırpın

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ə: