İçindekiler:

Bir Elektronik Satıcısının Sizi Aldatıp Aldatmadığını Söyleyen Robot: 6 Adım
Bir Elektronik Satıcısının Sizi Aldatıp Aldatmadığını Söyleyen Robot: 6 Adım

Video: Bir Elektronik Satıcısının Sizi Aldatıp Aldatmadığını Söyleyen Robot: 6 Adım

Video: Bir Elektronik Satıcısının Sizi Aldatıp Aldatmadığını Söyleyen Robot: 6 Adım
Video: Yapaysın Aşkım (134.Bölüm) - Çok Güzel Hareketler 2 2024, Temmuz
Anonim
Bir Elektronik Satıcısının Sizi Aldatıp Aldatmadığını Söyleyen Robot
Bir Elektronik Satıcısının Sizi Aldatıp Aldatmadığını Söyleyen Robot

Geçen yıl babamla birlikte yaşadığımız yere çok yakın yeni açılan bir robotik/elektronik mağazasına gittik. İçeri girdiğimde elektronikler, serovlar, sensörler, Raspberry pis ve Arduino'larla doluydu. Ertesi gün aynı mağazaya gittik ve birçok senor ve yaklaşık 150 USD değerinde 3 Arduino satın aldık. Eve gider gitmez Arduino Mega dışında hiçbir ürün çalışmadı. Çok fazla olan yaklaşık 130 USD için dolandırıldık.

Bu yüzden yaklaşık 12 sensör ve 2 motoru (hala servo üzerinde çalışıyor) test edebilen ve ürünün arızalı olup olmadığını belirleyebilen bir robot oluşturmaya karar verdim.

Hemen konuya girelim!

Gereçler

1. Arduino UNO

2. 2.4 TFT dokunmatik ekran

3. birkaç atlama teli

4. Test edebilmeniz için sensörler ve motorlar (burada kullandım - Hareket sensörü, MQ6 gaz sensörü, Ses sensörü, potansiyometre ve su seviye sensörü)

Adım 1: Nasıl Çalışır….

Image
Image

TFT ekranlı bir UI oluşturmak ve etkileşimli bir UI oluşturmak için bir Arduino programladım. Bildiğimiz gibi, TFT ekranın yalnızca bir serbest pini vardır, yani A5 pini. (UNO kullanıyorsanız). Yani verileri okumak için Analog pinleri kullanan herhangi bir sensör bu kurulumla uyumludur…

Arayüzde masaüstü arka plan rengini değiştirebilir ve sensörleri test etmek için tarafımca Arduino için geliştirilmiş uygulamayı açabilirsiniz.

Uygulamayı açarken, GİRİŞ ve ÇIKIŞ olmak üzere 2 seçenek görebilirsiniz. yani Giriş'e tıklarsanız, 4 sensör gösterir (12 ile uyumludur, ancak yaklaşan sınavlarım olduğu için henüz programlamadım…. Zamanım yok:(. Herkes kodu düzenlemekte özgür…)

Ayrıca servo motorun çalışıp çalışmadığını yuvaya bağladığınızı da kontrol edebilir.

bir göz atın:

2. Adım: Kodu Yükleme

Kod yaklaşık 50 saatte titizlikle kodladığım 600 satırlık bir programdır. Birkaç hatası var, lütfen düzeltin ve bana postayla gönderin ([email protected]).

Kodu yükleyin ve TFT kalkanını Arduino'ya bağlayın. Daha iyi bir asmak için UI ile oynamanızı tavsiye ederim.

kod:

#Dahil etmek

#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 0x000F #define KIRMIZI 0xF800 #07E0xF0x tanımla #define MACENTA 0xF81F #define SARI 0xFFE0 #define BEYAZ 0xFFFF #define LIGHTGREY 0xC618 #define MOR 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XM A2 #define YM 7 #define XPS 6Xdefine 160 #define TS_MAXX 160 #define TS_MAXY 970 Dokunmatik Ekran ts = Dokunmatik Ekran(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 ses; karakter durumu = 6; int dokunma = 0; int renk = SİYAH; int yönlendirme = 0; int ota; geçersiz kurulum() { 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ş yapmak için kaydırın"); } void loop() { float sensorVoltage; şamandıra sensörüDeğeri; TSPoint p = ts.getPoint(); pinMode(XM, ÇIKIŞ); pinMode(YP, ÇIKIŞ); if (pz > MINBASINÇ && 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) {dokunma = 26; } } if (dokunun == 1 && durum == 6) { tft.setRotation(0); tft.fillScreen(renk); ses = 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, NAVY); tft.drawRect(11, 31, 51, 101, SİYAH); tft.fillRect(10, 180, 30, 120, MOR); 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, YEŞİL); tft.drawRect(116, 181, 31, 121, SİYAH); tft.fillRect(150, 180, 30, 120, SARI); tft.drawRect(151, 181, 31, 121, SİYAH); tft.fillÜçgen(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, KIRMIZI); 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); durum = 7; dokunma = 0; ota = 0; } if (dokunun == 2) { tft.fillScreen(BEYAZ); tft.setRotation(0); tft.fillÜçgen(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.fillÜçgen(270, 40, 270, 20, 260, 30, SİYAH); tft.drawLine(300, 30, 270, 30, SİYAH); tft.setCursor(20, 200); tft.print("kişiselleştirme"); tft.setCursor(20, 170); tft.print("çıkış"); tft.setCursor(20, 140); tft.print("çevre birimleri"); tft.setCursor(20, 110); tft.print("Hakkında"); dokunma = 1; durum = 2; } if (dokunun == 10 && durum == 2){ tft.fillScreen(BEYAZ); tft.setCursor(10, 160); tft.setTextColor(SİYAH); tft.print("Oluşturuldu ve geliştirildi"); tft.setCursor(100, 190); tft.print("tarafından:"); tft.setCursor(60, 220); tft.print("Hindistan'dan bir genç"); tft.setRotation(0); tft.fillÜçgen(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.fillÜçgen(270, 40, 270, 20, 260, 30, SİYAH); tft.drawLine(300, 30, 270, 30, SİYAH); durum = 6; } if (dokunun == 11 && durum == 2){ tft.fillScreen(BEYAZ); tft.setCursor(60, 40); tft.print("Bir Seç"); tft.setCursor(40, 60); tft.print("arka plan rengi"); tft.fillRect(60, 180, 45, 45, KIRMIZI); tft.fillRect(120, 180, 45, 45, SARI); tft.fillRect(180, 180, 45, 45, MAVİ); tft.fillRect(240, 180, 45, 45, YEŞİL); tft.fillRect(60, 130, 45, 45, Eflatun); tft.fillRect(120, 130, 45, 45, NAVY); tft.fillRect(180, 130, 45, 45, AÇIKGRİ); 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, MOR); tft.setRotation(0); tft.fillÜçgen(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.fillÜçgen(270, 40, 270, 20, 260, 30, SİYAH); tft.drawLine(300, 30, 270, 30, SİYAH); durum = 6; if (yönlendirme == 1){ renk = BEYAZ; } if (yönlendirme == 2){ renk = SİYAH; } if (yönlendirme == 3){ renk = ZEYTİN; } if (yönlendirme == 4){ renk = MOR; } if (yönlendirme == 5){ renk = MAGENTA; } if (yönlendirme == 6){ color = NAVY; } if (yönlendirme == 7){ renk = AÇIKGRİ; } if (yönlendirme == 8){ renk = CYAN; } if (yönlendirme == 9){ renk = KIRMIZI; } if (yönlendirme == 10){ renk = SARI; } if (yönlendirme == 11){ renk = MAVİ; } if (yönlendirme == 12){ renk = YEŞİL; } } if (dokunun == 26){ ota = 1; tft.fillScreen(BEYAZ); tft.setRotation(0); tft.fillÜçgen(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.fillÜçgen(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("Çıktı"); tft.drawRect(25, 130, 90, 30, SİYAH); tft.drawRect(25, 60, 90, 30, SİYAH); if (p.x > 190 && p.x 30 && p.y < 90){ tft.setCursor(150, 220); tft.print("Su seviyesi"); tft.setCursor(150, 170); tft.print("Gaz seviyesi"); tft.setCursor(150, 120); tft.print("Mesafe"); tft.setCursor(150, 70); tft.print("Ses"); dokunma = 1; durum = 2; } } } while (ses == 1){ tft.fillScreen(BEYAZ); sensorValue = analogRead(A5); sensorVoltage = sensorValue; tft.setCursor(60, 160); tft.print(sensorVoltage); Serial.println("Ses seviyesi = "); Serial.println(sensorVoltage); gecikme(1000); if (ses == 0){ ara; } } } }

Adım 3: Gerekli Kitaplıklar:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • Dokunmatik Ekran.h

Aynısı için Github bağlantıları:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Kütüphane

github.com/adafruit/Adafruit_TouchScreen

Adım 4: Bağlantılar

Hepsini Bir Araya Getirin
Hepsini Bir Araya Getirin

6 jumper kablosuna ihtiyacınız var. 3 erkek ve 3 dişi. bunları doğrudan Arduino kartına şu şekilde lehimleyin:

Adım 5: Hepsini Bir Araya Getirin

Kabloları arduinoya sokun (resme bakın), Gerekirse biraz tutkal tabancası kullanın…

Ardından TFT kalkanını takın ve Sensörlerinizi test edin.

Tüm yolu aşağı kaydırdığınız için teşekkür ederiz. Bu projenin benzersiz ve faydalı olduğunu düşünüyorsanız bana oy vermeyi unutmayın.

Mutlu olun ve Elektronik dolandırıcılarına dikkat edin?

Adım 6: Diğer İyileştirmeler:

  • Daha fazla sensör uyumluluğu
  • Servo motor kodunun bitirilmesi gerekiyordu
  • Bluetooth ile çalışan bir robotu kontrol edebilmemiz için Bluetooth modülleriyle arayüz oluşturabilen başka bir uygulama.
  • Hata düzeltmeleri

Önerilen: