İçindekiler:
- Gereçler
- Adım 1: Nasıl Çalışır….
- 2. Adım: Kodu Yükleme
- Adım 3: Gerekli Kitaplıklar:
- Adım 4: Bağlantılar
- Adım 5: Hepsini Bir Araya Getirin
- Adım 6: Diğer İyileştirmeler:
Video: Bir Elektronik Satıcısının Sizi Aldatıp Aldatmadığını Söyleyen Robot: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
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….
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
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:
Arduino: Hediyeler için Şarkı Söyleyen Doğum Günü Kutusu: 14 Adım
Arduino: Hediyeler için Şarkı Söyleyen Doğum Günü Kutusu: Bu Şarkı Söyleyen Doğum Günü Kutusu, Arduino'nun şarkı söyleme ve LED Mum yakma gibi özel işlevler sağlamasına yardımcı olan doğum günü hediyelerini paketlemek amacıyla yapılmıştır. Doğum Günün Kutlu Olsun Şarkısını söyleme ve LED ışığını yakma yetenekleriyle
MyPetBot (Sizi Takip Eden Bir Bot): 10 Adım (Resimlerle)
MyPetBot (Sizi Takip Eden Bir Bot): Ai, matematiğin en güzel uygulamalarından biridir. Temel olarak, aradığınız sonuca uyacak şekilde optimize edilmiş bir dizi matris işlemidir. Neyse ki, onu kullanmamıza izin veren tonlarca açık kaynaklı araç var. Ben aslen
SlouchyBoard - Sizi Sarsıntıdan Korumanın Can Sıkıcı Bir Yolu (EasyEDA'ya Giriş): 4 Adım (Resimlerle)
SlouchyBoard - Sizi Sarsıntıdan Korumanın Can Sıkıcı Bir Yolu (EasyEDA'ya Giriş): Hımbıl pano, bir eğim sensörü, bir piezo zili ve bir ATTiny 85 kullanan küçük bir 30mm x 30mm PCB'dir (Baskılı Devre Kartı). kullanıcı sarkıyor. Tahta, bir kullanıcının gömleğine veya şapkasına takılabilir, böylece kaydıklarında
Arduino Theremin Şarkı Söyleyen Muppet: 6 Adım (Resimlerle)
Arduino Theremin Şarkı Söyleyen Muppet: Arduino ile ilgili bir okul projesi için, şarkı söyleyen bir kukla yapmak için yerleşik bir theremin içeren bir kukla yarattım. Ağzının içinde bir Piezo ziline bağlanan bir fotosel vardır, böylece ağzını açıp kapattığınızda perde değişecektir (parlak
Yanıp Sönen, Şarkı Söyleyen, Marioman: 5 Adım
Yanıp Sönen, Şarkı Söyleyen, Marioman: Super Mario Brothers tema şarkısını çalan yanıp sönen bir Marioman oluşturmak için bir attiny13a, iki LED ve bir tebrik kartı hoparlörü kullanın. Bu, eğlenceli bir yol arayan herkes için kolay ve düşük maliyetli bir proje olabilir. AVR programlamaya girin! Not