İçindekiler:

Şaka Tankı: 5 Adım
Şaka Tankı: 5 Adım

Video: Şaka Tankı: 5 Adım

Video: Şaka Tankı: 5 Adım
Video: Askerden kaçmak isteyen askerin imtihanı 2024, Kasım
Anonim
şaka tankı
şaka tankı

Bu, okulumda HKU'da yaptığım ve Arduino Uno ile bir şeyler yapmamızı gerektiren bir proje. En sevdiğim şeyi yapacak, insanları güldürecek bir şey yapmak istedim. Bu yüzden size bir şaka yapacak bir şaka kutusu yapmaya karar verdim, ancak size hangi şakayı yaptığı, o belirli anda birkaç sensör modülünün ne ölçtüğüne bağlı olacaktı. Daha kişisel hale getirmek için onu bir tank yapmaya karar verdim.

Adım 1: Parçaları Alma

Bu projeyi yeniden oluşturmak için ihtiyaç duyacağınız parçalar

  • Arduino IDE çalıştırabilen 1x bilgisayar
  • 1x Arduino Uno
  • Arduino Uno için 1x usb bağlantı kablosu
  • 1x Sonar sensörü
  • 1x Hoparlör (tercihen iyi kalitede biri (, bir bluetooth hoparlörden çıkardığımı kullandım))).
  • 1x LM386 Amplifikatör modülü(bunu kendiniz yapabilirsiniz ama ben bir modül kullandım).
  • 1x LM393 Mikrofon
  • 1x LDR
  • 1x LED (herhangi bir renk olur ama ben mavi kullandım).
  • 4x 1kΩ direnç
  • 1x 2, 7kΩ direnç
  • 1x Ekmek Tahtası
  • 1x mikro SD kart(tercihen küçük (1 veya 2 gb)).
  • 1x Elektrikli matkap.
  • 1x 16mm matkap ucu(tercihen metal delmek için yapılmıştır).
  • 1x 9mm matkap ucu (tercihen metal delmek için yapılmıştır).
  • 1x 1 mm matkap ucu(yine tercihen metal delmek için yapılmıştır).
  • 1x Model tank (1:35 ölçekli leopar 2 kullandım ancak diğer durumlar da iyi olmalı).
  • Süper yapıştırıcı / sıcak yapıştırıcı
  • ve tercihen farklı renklerde oldukça fazla teller.
  • kablo bağları (isteğe bağlı).

Adım 2: Kablolama

kablolama
kablolama

Kablolama ile başlamamız gerekiyor, resim, hepsinin nasıl kablolanması gerektiğinin teknik bir çizimidir. Bu, planınız olarak hizmet etmelidir. Not: Tüm Arduino portları, her port için AP# olarak adlandırılmıştır. Arduino AP4, bağlantı noktası A0 APA0 ve bağlantı noktası 6~ AP6~, vb. Diğer tüm bağlantı noktaları modüllerin kendilerinde göründükleri gibi adlandırılır.

Adım 3: Ön Kod Şeyleri

Şimdi, kodu kullanmaya başlamadan önce, bazı şeylere ihtiyacımız var. Şimdi bu kılavuz öğreticiyi adım 2'den 4'e kadar izlemenizi tavsiye ederim.

www.electronoobs.com/eng_arduino_tut8.php

Ancak kendi kodumuzu kullanacağımız için onun kodunu kullanmayacağız. Lütfen bazı hoparlörlerin farklı frekanslar kullandığını unutmayın. Hoparlörüm 16-bit 32kHz ses dosyaları kullandı. Bu nedenle, konuşmanız bir tür ses çıkarıyor ancak dosyalarınızı oynatmıyorsa, frekansınızla oynamayı deneyin.

4. Adım: Kod

Şimdi kodu arduino'ya yükleyeceğiz. Bunların hepsini kopyalayıp Arduino IDE'ye yapıştırın ve Arduino'nuza yükleyin.

//SD kart okuyucu için kitaplığı içerir.#include "Wtv020sd16p.h" //sonar sensörü için gerekli kitaplığı içerir. #include //Arduino için pinleri ayarlar. int resetPin = 4; int saatPin = 5; int veriPin = 6; int meşgulPin = 7; int soundDetectedPin = 12; int lightDetectedPin = A0; //SD kart kitaplığı için pinleri ayarlar. Wtv020sd16p wtv020sd16p(resetPin, clockPin, dataPin, meşgulPin); //Sonar sensör kitaplığı için pinleri ayarlar. YeniPing sonarı(11, 10); //Diğer girişleri ayarlar ve programın bit hızını ayarlar. geçersiz kurulum() { wtv020sd16p.reset(); pinMode(lightDetectedPin, INPUT); pinMode(soundDetectedPin, INPUT); Seri.başla(9600); } //Programın ana kısmı. void loop() { //Aracıları ayarlar int lightDetectedVal = analogRead(lightDetectedPin); int mesafeVal = sonar.ping_cm(); int soundDetectedVal = digitalRead(soundDetectedPin); //Projenin konuşmacıyı sonsuza kadar kullanmaması için geciktirin. gecikme(30000); //Sensör modülleri tarafından hangi değerlerin alındığını kolayca görebilmeniz için seri baskı ve baskı hatları. Serial.print("Ses Değeri: "); //Çoklu if deyimleri, programın farklı ses dosyalarını çalması için değerlere bağlı olarak sensör modülleri tarafından ölçülür. if (soundDetectedVal == 0) { Serial.println(soundDetectedVal); Serial.print("Mesafe: "); if (distanceVal == 0) { Serial.println(distanceVal); Serial.print("Hafif Değer: "); if (lightDetectedVal >= 1000) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(1); // Tam olarak hangi ses dosyasının çalındığını görebilmeniz için başka bir seri baskı. Serial.println("1-------"); //Ses dosyasının tam uzunlukta çalmasına izin vermek için başka bir gecikme. gecikme (5000); } else if (lightDetectedVal >= 900) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(2); Serial.println("2-------"); gecikme (5000); } else if (lightDetectedVal >= 800) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(3); Serial.println("3-------"); gecikme (5000); } else if (lightDetectedVal >= 700) { Serial.println(lightDetectedVal); wtv020sd16p.playSes(4); Serial.println("4-------"); gecikme (5000); } else if (lightDetectedVal >= 600) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(5); Serial.println("5-------"); gecikme (5000); } else if (lightDetectedVal >= 500 || lightDetectedVal 0 || DistanceVal == NULL) { Serial.println(distanceVal); Serial.print("Hafif Değer: "); if (lightDetectedVal >= 1000) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(7); Serial.println("7-------"); gecikme (5000); } else if (lightDetectedVal >= 900) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(8); Serial.println("8-------"); gecikme(8000); } else if (lightDetectedVal >= 800) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(9); Serial.println("9-------"); gecikme (5000); } else if (lightDetectedVal >= 700) { Serial.println(lightDetectedVal); wtv020sd16p.playSes(10); Serial.println("10-------"); gecikme(8000); } else if (lightDetectedVal >= 600) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(11); Serial.println("11-------"); gecikme(6000); } else if (lightDetectedVal >= 500 || lightDetectedVal <= 1000) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(13); Serial.println("13-------"); gecikme (5000); } else if (lightDetectedVal >= 900) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(14); Serial.println("14-------"); gecikme (5000); } else if (lightDetectedVal >= 800) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(15); Serial.println("15-------"); gecikme (5000); } else if (lightDetectedVal >= 700) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(16); Serial.println("16-------"); gecikme (5000); } else if (lightDetectedVal >= 600) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(17); Serial.println("17-------"); gecikme (5000); } else if (lightDetectedVal >= 500 || lightDetectedVal 0 || DistanceVal == NULL || DistanceVal >= 150) { Serial.println(distanceVal); Serial.print("Hafif Değer: "); if (lightDetectedVal >= 1000) { Serial.println(lightDetectedVal); wtv020sd16p.playSes(19); Serial.println("19-------"); gecikme (5000); } else if (lightDetectedVal >= 900) { Serial.println(lightDetectedVal); wtv020sd16p.playSes(20); Serial.println("20-------"); gecikme (5000); } else if (lightDetectedVal >= 800) { Serial.println(lightDetectedVal); wtv020sd16p.playSes(21); Serial.println("21-------"); gecikme (5000); } else if (lightDetectedVal >= 700) { Serial.println(lightDetectedVal); wtv020sd16p.playSes(22); Serial.println("22-------"); gecikme (5000); } else if (lightDetectedVal >= 600) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(23); Serial.println("23-------"); gecikme (5000); } else if (lightDetectedVal >= 500 || lightDetectedVal << 500) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(24); Serial.println("24-------"); gecikme (5000); } } } }

Adım 5: Vaka

Dosya
Dosya
Dosya
Dosya

Şimdi asıl karmaşık kısım geliyor.

Her şeyi kasaya yerleştirmek biraz zor olabilir, bu her şeyi breadboard'unuza nasıl taktığınıza veya bir şeyleri nasıl lehimlediğinize bağlıdır. Ancak sensörlerin tam olarak yapışması için birkaç delik açmanız gerekecek. Tankın arkasına mikrofon (9mm matkap gerekli) ve sonar modülü (6mm matkap gerekli) ve LDR'yi tankın önüne koydum ancak yeriniz varsa bunları etkili bir şekilde koyabilirsiniz.

Arduino'nuzu bağlantı kablosuna bağlayabilmek için modelin gövdesinde bir delik açtığınızdan emin olun.

Hoparlörü tarete koymanızı tavsiye ederim. çünkü orada çok fazla alan kalması gerekiyor.

Yukarıdaki soldaki resim, arduino'yu nasıl yerleştirdiğimi ve Leopard 2 modelinin içine lehimlediğim baskıyı gösteriyor. Sağdaki resim, kabloların çoğunun takılı olduğu resim.

Arduino'yu kablo bağları ile sabitlemek için modelin altına küçük delikler açabilirsiniz.

Ama yanılmıyorsam, şimdi bitmiş olmalısın.

Önerilen: