İçindekiler:
- Gereçler
- Adım 1: Arduino ile Ünlüler Oyununu Geliştirmek
- Adım 2:
- Aşama 3:
- Adım 4: Proje Fikri
- Adım 5:
- Adım 6: Oyunun Programlama Mantığını Oluşturma
- 7. Adım:
- Adım 8:
- Adım 9: Void Setup() İşlevi
- Adım 10: Ana İşlev Void Loop()
- Adım 11:
- Adım 12: Sonuç
- Adım 13: Onay
Video: Arduino ve YX5300 MP3 Modülü Catalex ile Ünlüler Oyunu: 13 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bu soruyu okuyabiliyor musun? Bu tuhaf! Bu soruyu bilerek sordum. Bu metni okuyabiliyorsanız, bunun nedeni tüm alfabeyi bilmeniz ve elbette tüm sesli harfleri öğrenmiş olmanızdır.
Sesli harfler tüm kelimelerde bulunur. Her birinden kaçmak imkansızdır. Şimdi size bir soru sorayım. Çocukluğunuz eğlenceliydi ve teknolojik kaynaklar içeriyor muydu?
Öğrenme kaynaklarının az olduğuna ve ünlüleri ve alfabeyi öğrenmek için geleneksel yöntemler kullandığına eminim.
Sonuçta, sesli harfleri öğrenmek için bazı teknolojik kaynakları kullanmak mümkün müdür?
Bu yazımda size bir oyun aracılığıyla öğrencilerinize ve çocuklarınıza sesli harfleri nasıl öğreteceğinizi öğreteceğim.
Çocuğunuzun/öğrencinizin harfin sesini duyacağı ve doğru harfi belirtmek için bir düğmeye basması gereken sesli bir sistem oluşturmayı öğreteceğim.
Böylece oynarken öğrenecekler ve çalışmaya her zaman motive olacaklar.
Şimdi size kendi oyununuzu yaratmanız ve çocuklara sesli harfleri öğretmeniz için adım adım süreci göstereceğim.
Gereçler
JLCPCB Baskılı Devre Kartı
Arduino Uno'su
Buton Anahtarı
10kR Direnç
Erkek Başlık 2, 54mm 1x7
Adım 1: Arduino ile Ünlüler Oyununu Geliştirmek
Oyunun kalbi Vowels'ın JLCPCB baskılı devre kartıdır. Bu bağlantıya erişebilir ve proje dosyalarını indirebilirsiniz. 5 düğmesi vardır. Bir sesli harfi temsil etmek ve onu Arduino'nuza bağlamak için her düğmeyi kullanacaksınız.
Baskılı devre kartı Şekil 1'de gösterilmiştir.
Adım 2:
Bu PCB Projesi ile Arduino'ya bağlayabilir ve oyununuzu oluşturabilirsiniz. Ardından, projeyi protoboardunuzda birleştirmeniz veya oluşturmanız için size elektronik bir şema sunacağım.
Aşama 3:
Bu şemadan elektronik kartın düzenini kurduk. Şekil 2'de gösterilmiştir ve dosyaları indirebilir ve projenizi yapabilirsiniz.
Arduino'dan 5 pin seçin ve kart üzerindeki jumperları Arduino'ya bağlayın. Veya aksi takdirde aşağıdaki elektronik diyagramı monte edebilirsiniz.
Adım 4: Proje Fikri
Arduino ile MP3 ses sistemi kurmayı öğreteceğim. Bu sistem, mektubu söyleyen sesin yeniden üretilmesinden sorumlu olacaktır. Her harfin sesi, 1'in A'yı ve 5'in U'yu temsil ettiği 1'den 5'e kadar bir değer kullanılarak çizilecektir.
Bu nedenle çocuk sesi duyduğunda klavyeye bakmalı, sesli harfin yazılışını tanımalı ve doğru tuşa basmalıdır.
Başarısız olursa, sistem Kırmızı LED'i 3 kez yanıp söner. Aksi takdirde, sistem 5 saniye boyunca sesli uyarıyı etkinleştirecek ve yeni bir sesli harf çizecektir.
Bunu yapmak için aşağıdaki devreyi monte etmelisiniz.
Bu devrede Arduino üzerindeki MP3 Modülü ile sesli harf kartını bağlayacaksınız. Bluetooth modülü, Catalex MP3 Modülünü temsil etmek için kullanıldı.
Arduino, 5 sayıyı sıralamaktan ve ardından çizilen sesli harfi etkinleştirmek için komutu göndermekten sorumlu olacaktır
Adım 5:
Bundan sonra, çocuk yukarıdaki Şekilde gösterildiği gibi bir düğmeyi duyup basana kadar bekleyeceğiz.
Yukarıdaki her düğme, alfabenin bir sesli harfini temsil eder. Ardından, bu proje için programlama mantığını nasıl oluşturacağınızı size göstereceğim.
Adım 6: Oyunun Programlama Mantığını Oluşturma
Ünlü oyun sistemi, YX5300 modülünün çalışmasına dayanmaktadır. Bu modülün bazı işlevleri vardır, ancak oyunun çalışma yapısını YX5300 modülünün ana işlevleri üzerinden sunmaya odaklanacağız.
Aşağıda size projenin tüm programlama mantığını sunuyorum.
7. Adım:
Aşağıda, çocuklar için bu eğlenceli oyunun mantığını oluşturmanın adım adım adımlarını anlatacağım.
#Dahil etmek
#define ARDUINO_RX 5 //Seri MP3 Çalar modülünün TX'ine bağlanmalı #define ARDUINO_TX 6 //Modülün RX'ine bağlanın SoftwareSerial mp3(ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf[8] = {0}; // Gönder komutları için arabellek. // YEREL OLARAK DAHA İYİ statik uint8_t ansbuf[10] = {0}; // Cevaplar için arabellek. // YEREL OLARAK DAHA İYİ String mp3Answer; // MP3'ten cevap. String cevabı(void); Dize sbyte2hex(uint8_t b); /************ Komut baytı **************************/ #define CMD_NEXT_SONG 0X01 // Sonrakini oynat şarkı. #define CMD_PREV_SONG 0X02 // Önceki şarkıyı çal. #define CMD_PLAY_W_INDEX 0X03 #define CMD_VOLUME_UP 0X04 #define CMD_VOLUME_DOWN 0X05 #define CMD_SET_VOLUME 0X06 #define CMD_SNG_CYCL_PLAY 0X08 // Single Cycle Play. #define CMD_SEL_DEV 0X09 #define CMD_SLEEP_MODE 0X0A #define CMD_WAKE_UP 0X0B #define CMD_RESET 0X0C #define CMD_PLAY 0X0D #define CMD_PAUSE 0X0E #define CMD_PLAY_FOLDER_TOPFILE 0X0F'yi sürekli oynatmayı durdur. //define 0X0F #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Tek döngü ayarlayın. # define CMD_SET_DAC 0x1A # define DAC_ON 0x00 # define DAC_OFF 0x01 # define CMD_PLAY_W_VOL 0x22 # define CMD_PLAYING_N 0x4C # define CMD_QUERY_STATUS 0x42 # define CMD_QUERY_VOLUME 0x43 # define CMD_QUERY_FLDR_TRACKS 0x4e # define CMD_QUERY_TOT_TRACKS 0x48 # define CMD_QUERY_FLDR_COUNT 0x4f / ********* *** Opsiyonlar **************************/ #define DEV_TF 0X02 /************** ******************************************************* *****/ int sayı; bayt tahmini; bayt buzzer = 2; bayt pini = 0; bayt SortNumber = 0; bool düğmesi = 0; geçersiz kurulum() { Serial.begin(9600); mp3.begin(9600); gecikme(500); for(pin = 8; pin 13) { pin = 8; } Serial.println("Varrendo…"); Seri.println(pin); //gecikme(1000); }while(düğme != 1); Serial.println("Saiu…"); if(button == 1 && (pin-1) != SortNumber) { sendCommand(0x03, 0, 6); gecikme(3000); } if(button == 1 && (pin-1) == SortNumber) { sendCommand(0x03, 0, 7); gecikme(3000); } // Cevabı kontrol edin. if (mp3.available()) { Serial.println(decodeMP3Answer()); } gecikme(100); //Serial.println("Tocando musica…"); } /******************************************************* ***********************************/ /* sendMP3Command işlevi: bir 'c' komutu arayın ve MP3'e gönderin */ /*Parametre: c. MP3 Komutu kodu, yardım için 'h'. */ /*Dönüş: void */ void sendMP3Command(char c) { switch (c) { case '?': case 'h': Serial.println("HELP "); Serial.println(" p = Oynat"); Serial.println(" P = Duraklat"); Serial.println(" > = Sonraki"); Serial.println(" ': Serial.println("Sonraki"); sendCommand(CMD_NEXT_SONG); sendCommand(CMD_PLAYING_N); // ara verilen dosyanın sayısını sor; case ' Hafıza kartı takılı."; break; case 0x3D: decodingMP3Answer += " -> Tamamlanan oynatma num " + String(ansbuf[6], DEC); //sendCommand(CMD_NEXT_SONG); //sendCommand(CMD_PLAYING_N); // break çalmakta olan dosyanın sayısını sor; case 0x40: decodingMP3Answer += " -> Error"; break; case 0x41: decodingMP3Answer += " -> Veri doğru bir şekilde alındı. "; break; case 0x42: decodingMP3Answer += " -> Çalma durumu: " + String(ansbuf[6], DEC); break; case 0x48: decodingMP3Answer += " -> Dosya sayısı: " + String(ansbuf[6], DEC); break; case 0x4C: decodingMP3Answer += " -> Çalıyor: " + String(ansbuf[6], DEC); break; case 0x4E: decodingMP3Answer += " -> Klasör dosya sayısı: " + String(ansbuf[6], DEC); break; case 0x4F: decodingMP3Answer += " -> Klasör sayısı: " + String(ansbuf [6], DEC); ara; } kodu çözülmüş MP3Answer'ı döndür; } /**************************************** *************** ***********************************/ /*İşlev: MP3'e komut gönder */ /*Parametre: bayt komut */ /*Parametre: komut için bayt dat1 parametresi */ /*Parametre: komut için bayt dat2 parametresi */ void sendCommand(bayt komutu){ sendCommand(komut, 0, 0); } void sendCommand(bayt komutu, bayt tarih1, bayt tarih2){ gecikme(20); Send_buf[0] = 0x7E; // Send_buf[1] = 0xFF; // Send_buf[2] = 0x06; // Len Send_buf[3] = komut; // Send_buf[4] = 0x01; // 0x00 HAYIR, 0x01 geri bildirim Send_buf[5] = dat1; // veri Send_buf[6] = veri2; // veri Send_buf[7] = 0xEF; // Serial.print("Gönderiliyor: "); for (uint8_t i = 0; i < 8; i++) { mp3.write(Send_buf); Serial.print(sbyte2hex(Send_buf)); } Seri.println(); } /******************************************************* ***********************************/ /*İşlev: sbyte2hex. HEX biçiminde bir bayt verisi döndürür. */ /*Parametre:- uint8_t b. HEX'e dönüştürülecek bayt. */ /*Dönüş: String */ String sbyte2hex(uint8_t b) { String shex; shex = "0X"; if (b < 16) shex += "0"; shex += String(b, HEX); shex += " "; geri dönüş shex; } /******************************************************* ***********************************/ /*İşlev: shex2int. HEX dizesinden bir int döndürür. */ /*Parametre: s. char *s HEX'e dönüştürmek için. */ /*Parametre: n. char *s' uzunluğu. */ /*Dönüş: int */ int shex2int(char *s, int n){ int r = 0; for (int i=0; i='0' && s='A' && s<='F'){ r *= 16; r += (s - 'A') + 10; } } r'yi döndür; } /******************************************************* ***********************************/ /*İşlev: cevap. mp3 UART modülünden bir String yanıtı döndürür. */ /*Parametre:- uint8_t b. geçersiz. */ /*Dönüş: Dize. Cevap iyi biçimlendirilmişse cevap. */ String sanswer(void) { uint8_t i = 0; Dize mp3cevap = ""; // Sadece 10 Bayt alırken (mp3.available() && (i < 10)) { uint8_t b = mp3.read(); cevap = b; ben++; mp3answer += sbyte2hex(b); } // cevap formatı doğruysa. if ((ansbuf[0] == 0x7E) && (ansbuf[9] == 0xEF)) { return mp3answer; } dönüş "???: " + mp3cevap; }
Öncelikle YX5300 modülünün tüm program değişkenlerini ve erişim kayıt adreslerini tanımlıyoruz.
#Dahil etmek
#define ARDUINO_RX 5 //Seri MP3 Çalar modülünün TX'ine bağlanmalı #define ARDUINO_TX 6 //SoftwareSerial mp3(ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf[8] = {0}; // Gönder komutları için arabellek. // YEREL OLARAK DAHA İYİ statik uint8_t ansbuf[10] = {0}; // Cevaplar için arabellek. // YEREL OLARAK DAHA İYİ String mp3Answer; // MP3'ten cevap. String cevabı(void); Dize sbyte2hex(uint8_t b); /************ Komut baytı **************************/ #define CMD_NEXT_SONG 0X01 // Sonrakini oynat şarkı. #define CMD_PREV_SONG 0X02 // Önceki şarkıyı çal. #define CMD_PLAY_W_INDEX 0X03 #define CMD_VOLUME_UP 0X04 #define CMD_VOLUME_DOWN 0X05 #define CMD_SET_VOLUME 0X06 #define CMD_SNG_CYCL_PLAY 0X08 // Single Cycle Play. #define CMD_SEL_DEV 0X09 #define CMD_SLEEP_MODE 0X0A #define CMD_WAKE_UP 0X0B #define CMD_RESET 0X0C #define CMD_PLAY 0X0D #define CMD_PAUSE 0X0E #define CMD_PLAY_FOLDER_TOPFILE 0X0F oynamayı durdur #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Tek döngü ayarlayın. # define CMD_SET_DAC 0x1A # define DAC_ON 0x00 # define DAC_OFF 0x01 # define CMD_PLAY_W_VOL 0x22 # define CMD_PLAYING_N 0x4C # define CMD_QUERY_STATUS 0x42 # define CMD_QUERY_VOLUME 0x43 # define CMD_QUERY_FLDR_TRACKS 0x4e # define CMD_QUERY_TOT_TRACKS 0x48 # define CMD_QUERY_FLDR_COUNT 0x4f / ********* *** Opsiyonlar **************************/ #define DEV_TF 0X02 /************** ******************************************************* *****/ int sayı; bayt tahmini; bayt buzzer = 2; bayt pini = 0; bayt SortNumber = 0; bool düğmesi = 0;
Adım 8:
Bu kayıt adresleri, modülün çalışmasını yapılandırmak için kullanılır. Örneğin, aşağıdaki kayıt adresine bakın.
#define CMD_PLAY_W_INDEX 0X03
0x03 adresi CMD_PLAY_W_INDEX adıyla tanımlanır. Numarasından bir şarkıyı tetiklemek için kullanılır yani sesin numarasını girersiniz ve çalınacaktır.
Bu değerlerle onları kullanacağız ve projemizin işleyişini yapılandıracağız.
Kullanılacak çeşitli adresleri tanımladıktan sonra setup fonksiyonuna girip projemiz için pinleri ve seri iletişimi yapılandıracağız.
Adım 9: Void Setup() İşlevi
Ardından, geçersiz kurulum işlevine bakın. Buton pinlerinin tüm ayarlarını, MP3 modülünün seri iletişimini ve MP3'te kart modülünün başlatılmasını yaptım.
geçersiz kurulum()
{ Serial.başlangıç(9600); mp3.begin(9600); gecikme(500); for(pin = 8; pin < 13; pin++) { pinMode(pin, INPUT); } sendCommand(CMD_SEL_DEV, 0, DEV_TF); gecikme(500); }
Bilgisayarın seri numarasına veri yazdırmak için seri haberleşmeyi başlattım ve ardından mp3 nesnesi üzerinden seri haberleşmeye başladık.
Seri.başla(9600);
mp3.begin(9600); gecikme(500);
Mp3 modülü, Arduino serisi tarafından alınan komutlarla kontrol edilir. Bu süreçte SoftwareSerial kütüphanesini kullandık ve Arduino dijital pinleri üzerinde bir seri öykündük.
Böylece Arduino'yu kendisine gönderilen komutlar aracılığıyla MP3 modülünü kontrol etmek için kullanabileceksiniz.
Ayrıca dijital pinlerin konfigürasyonunu ve MP3 Card modülünün başlatılmasını yaptık.
for(pin = 8; pin < 13; pin++) { pinMode(pin, INPUT); } sendCommand(CMD_SEL_DEV, 0, DEV_TF); gecikme(500);
Konfigürasyonu yaptıktan sonra void loop fonksiyonunda ana mantığa gitmeliyiz.
Adım 10: Ana İşlev Void Loop()
Kod çok basittir ve tüm mantıksal yapı aşağıda sunulmaktadır. Aşağıda size ana fonksiyonun tam mantığını anlatacağım.
boşluk döngüsü()
{ pin = 8; randomSeed(analogRead(A0)); sayı = rastgele(8, 12); SortNumber = sayı; sayı = sayı - 7; Seri.println(sayı); sendCommand(0x03, 0, sayı); gecikme(1000); do { düğme = digitalRead(pin); Serial.println(düğme); pin++; if(pin > 13) {pin = 8; } Serial.println("Varrendo…"); Seri.println(pin); //gecikme(1000); }while(düğme != 1); Serial.println("Saiu…"); if(button == 1 && (pin-1) != SortNumber) { sendCommand(0x03, 0, 6); gecikme(3000); } if(button == 1 && (pin-1) == SortNumber) { sendCommand(0x03, 0, 7); gecikme(3000); } // Cevabı kontrol edin. if (mp3.available()) { Serial.println(decodeMP3Answer()); } gecikme(100); //Serial.println("Tocando musica…"); }
Döngü işlevi döngüsünün her başlangıcında, bir sesli harfin sesini oluşturmak için 8 ile 12 arasında yeni bir değer üreteceğiz. 8'den 12'ye kadar olan değer, sesli harfin dijital pinini ifade eder.
Rastgele değer üretme kodu aşağıda gösterilmiştir.
pim = 8;
randomSeed(analogRead(A0)); sayı = rastgele(8, 12); SortNumber = sayı;
Ayrıca 8 ile 12 arasında çekilen miktardan 7 çıkarıyoruz. Bu, hafıza kartında kayıtlı şarkıların 1 ila 5'inin konumlarını göstermemizi sağlayacaktır.
sayı = sayı - 7;
Daha sonra aşağıdaki çizgiye çizilen sesli harfin sesini çoğalttım.
sendCommand(0x03, 0, sayı);
gecikme(1000);
Şimdi önemli zaman geldi: Çocuğun bastığı düğmeyi okuyacağımız an. Kod kısmı aşağıda sunulmaktadır.
yapmak
{ buton = digitalRead(pin); Serial.println(düğme); pin++; if(pin > 13) {pin = 8; } Serial.println("Varrendo…"); Seri.println(pin); //gecikme(1000); }while(düğme != 1);
Bu döngü, kullanıcı düğmelere basana kadar yürütülecektir. Döngü, 5 dijital pimi taramanıza izin verir ve çocuk düğmelerden birine bastığı anda döngüden çıkar ve çocuğun doğru yanıt verip vermediğini kontrol eder.
Aşağıdaki kodu kullanarak doğrulamayı yapacaksınız.
if(düğme == 1 && (pin-1) != SıralamaNumarası)
{ sendCommand(0x03, 0, 6); gecikme(3000); } if(button == 1 && (pin-1) == SortNumber) { sendCommand(0x03, 0, 7); gecikme(3000); }
Kullanıcı bir butona basıldığında ve pinin tetiklenen değeri çizilen pinden (SortNumber) farklı olduğu için hata yaptığında ilk koşul uygulanacaktır.
Bu noktada aşağıdaki komutu uygulamalısınız.
sendCommand(0x03, 0, 6);
gecikme(3000);
Bu komut, yanlış yanıt tonunu tetiklemek için kullanılır. Son olarak, çocuğun haklı olup olmadığını kontrol etmek için kullanılacak ikinci koşulumuz var.
if(düğme == 1 && (pin-1) == SıralamaNumarası)
{ sendCommand(0x03, 0, 7); gecikme(3000); }
Adım 11:
Bir tuşa basılmışsa ve basılan dijital pin, çekilen pin ile aynı ise, sistem doğru cevap sesini tetikleyecektir.
Size açıkladığım gibi, bu kod çok basittir ve herhangi bir çocuğun Arduino ile bir oyun aracılığıyla sesli harf bilgilerini geliştirmesine yardımcı olacaktır.
Yukarıdaki şekilde ses kutusu MP3 Modülü YX5300'ün SD Kartında depolanan şarkıyı yürütmektedir.
Adım 12: Sonuç
Sınıf eğitiminin sürekli olarak değiştirilmesi gerekiyor ve Arduino eğlenceli görevler oluşturmada harika bir müttefik olabilir.
Bu proje sayesinde, her bir sesli harfin ses ve yazım bilgisi yoluyla çocukların becerilerini geliştirebilecek basit bir etkinlik geliştirmek mümkün oldu.
Geleneksel öğretim yöntemlerinden farklı olarak, çocuklar oyunlar ve elektronikler aracılığıyla sınıf eğlencesi yoluyla öğreneceklerdir.
Adım 13: Onay
Bu proje, JLCPCB şirketinin desteği ve teşviki sayesinde geliştirildi. Eğitimi teşvik ettiler ve bizi sınıfta çocuklara öğretmek için sesli harf oyunu geliştirmeye davet ettiler.
Game of Vowels'ın elektronik plakalarını satın almak isterseniz bu bağlantıya erişebilir ve JLCPCB'de 2 dolara 10 adet satın alabilirsiniz.
Önerilen:
Arduino ile DFMini Player MP3 Modülü Nasıl Kullanılır: 4 Adım
Arduino ile DFMini Player MP3 Modülü Nasıl Kullanılır: Birkaç proje, bir tür işlevsellik eklemek için ses üretimi gerektirir. Bu projeler arasında, örneğin görme engelliler için erişilebilirlik, MP3 müzik çalarlar ve ses seslerinin robotlar tarafından yürütülmesini vurguluyoruz. Tüm bu sistemlerde
MP3 Ses Modülü ile Faz Kutusu Nasıl Yapılır: 4 Adım
MP3 Ses Modülü ile Faz Kutusu Nasıl Yapılır: Son kendin yap projemden hatırlattığım bir miktar Kristal Epoksi Reçine var ve onu boşa harcamak istemiyorum. Tasarruf ilkeleri üzerine, epoksiyi küçük bir şeyler yapmak için kullanmaya karar verdim. Bazen depresyona girdiğinde, sadece konuşmak istemezsin. Ben sadece
ESP32 ile PWM - Arduino IDE ile ESP 32'de PWM ile LED Karartma: 6 Adım
ESP32 ile PWM | Arduino IDE ile ESP 32'de PWM ile LED Karartma: Bu talimatta Arduino IDE & PWM temel olarak herhangi bir MCU'dan analog çıkış üretmek için kullanılır ve bu analog çıkış 0V ile 3.3V (esp32 durumunda) arasında herhangi bir şey olabilir & itibaren
Konuşan Arduino - Arduino İle Modül Olmadan MP3 Çalmak - PCM Kullanarak Arduino'dan Mp3 Dosyası Çalmak: 6 Adım
Konuşan Arduino | Arduino İle Modül Olmadan MP3 Çalmak | Arduino'dan PCM Kullanarak Mp3 Dosyası Çalma: Bu talimatta, herhangi bir ses modülü kullanmadan arduino ile bir mp3 dosyasının nasıl çalınacağını öğreneceğiz, burada Arduino için 16 bit PCM 8kHZ frekansı çalan PCM kütüphanesini kullanacağız, hadi bunu yapalım
E32-433T LoRa Modülü Eğitimi - E32 Modülü için DIY Breakout Board: 6 Adım
E32-433T LoRa Modülü Eğitimi | E32 Modülü için DIY Breakout Board: Hey, naber beyler! Akarsh burada CETech'ten. Bu projem, yüksek güçlü 1 watt'lık bir alıcı-verici modülü olan eByte'den E32 LoRa modülünün çalışmasını anlamak için daha çok bir öğrenme eğrisi. Çalışmayı anladıktan sonra, tasarımım var