Мазмуну:

Тамашалуу танк: 5 кадам
Тамашалуу танк: 5 кадам

Video: Тамашалуу танк: 5 кадам

Video: Тамашалуу танк: 5 кадам
Video: Калыбек менен Садыктан тамашалуу ролик / 777 кукуруздары 2024, Ноябрь
Anonim
Тамашалуу танк
Тамашалуу танк

Бул менин HKU мектебимде жасаган долбоор, бул бизге Arduino Uno менен бир нерсе жасоону талап кылды. Мен сүйүктүү нерсемди жасай турган, адамдарды күлдүрө турган нерсе кылгым келди. Ошентип, сизди тамашага сала турган тамаша кутучасын жасоону чечтим, бирок ал сизге кандай тамаша берди, ошол убакта сенсор модулдарынын бир нечеси өлчөнүп жатканына жараша болот. Муну жеке кылуу үчүн мен аны танк кылууну чечтим.

1 -кадам: Бөлүктөрдү алуу

Бул долбоорду кайра түзүү үчүн сизге керектүү бөлүктөр болмок

  • 1x компьютер Arduino IDE иштете алат
  • 1x Arduino Uno
  • 1x USB туташтыргычы кабели Arduino Uno үчүн
  • 1x Sonar сенсор
  • 1x Динамик (татыктуу сапатка ээ (мен Bluetooth динамигинен сууруп алганын колдондум)).
  • 1x LM386 күчөткүч модулу (муну өзүңүз жасасаңыз болот, бирок мен модулду колдондум).
  • 1x LM393 микрофону
  • 1x LDR
  • 1x LED (каалаган түс берет, бирок мен көк колдонгом).
  • 4x 1kΩ каршылыгы
  • 1x2, 7kΩ каршылыгы
  • 1x нан тактасы
  • 1x micro SD карта (кичине болсо жакшы (1 же 2 Гб)).
  • 1х Power бургу.
  • 1х 16мм бургулоочу баштык (металды бургулоо үчүн жасалган).
  • 1х 9мм бургучу (ошондой эле металлды бургулоо үчүн жасалган).
  • 1х 1мм бургулоочу баштык (дагы металлды бургулоо үчүн жасалган).
  • 1x Model танк (мен 1:35 масштабдуу илбирс 2 колдонгом, бирок башка учурлар да жакшы болушу керек).
  • Superglue / hotglue
  • жана кээ бир зымдар ар кандай түстө.
  • кабелдик байланыштар (милдеттүү эмес).

2 -кадам: Кабелдөө

Электр өткөргүчтөрү
Электр өткөргүчтөрү

Биз зым менен башташыбыз керек, сүрөт - бул анын кантип өткөрүлүшү керектигинин техникалык чиймеси. Бул сиздин планыңыз катары кызмат кылышы керек. Эскертүү: Бардык Arduino порттору ар бир порт үчүн AP# деп аталат. Ошентип, 4 -порт Arduino AP4, A0 порт APA0 жана 6 порт ~ AP6 ~ ж.б Бардык башка порттор модулдардын өзүндө көрүнгөндөй аталат.

3 -кадам: Pre Code Things

Эми биз кодду колдонууну баштаардан мурун бизге бир аз стуф керек. Мен азыр бул кишинин үйрөткүчүн 2ден 4кө чейин ээрчиңиз.

www.electronoobs.com/eng_arduino_tut8.php

Бирок биз анын кодун колдонбойбуз, анткени биз өзүбүздүн жеке программабызды колдонобуз, кээ бир спикерлер ар кандай жыштыктарды колдонорун эске алыңыз. Менин спикерим 16 бит 32 кГц аудио файлдарды колдонгон. Демек, эгер сиздин сүйлөөңүз кандайдыр бир ызы -чуу чыгарса, бирок файлдарыңызды ойнотпосо, анда жыштыгыңыз менен ойноп көрүңүз.

4 -кадам: Код

Эми биз кодду arduinoго жүктөйбүз. Мунун баарын көчүрүп, Arduino IDEге өткөрүп, аны Arduinoго жүктөңүз.

// SD картаны окуу үчүн китепкананы камтыйт.#include "Wtv020sd16p.h" // sonar сенсоруна керектүү китепкананы камтыйт. #include // Arduino үчүн казыктарды орнотот. int resetPin = 4; int clockPin = 5; int dataPin = 6; int busyPin = 7; int soundDetectedPin = 12; int lightDetectedPin = A0; // SD картанын китепканасына казыктарды коет. Wtv020sd16p wtv020sd16p (resetPin, clockPin, dataPin, busyPin); // Sonar сенсор китепканасынын казыктарын коет. NewPing sonar (11, 10); // Башка кирүүлөрдү орнотот жана программанын бит ылдамдыгын орнотот. жараксыз орнотуу () {wtv020sd16p.reset (); pinMode (lightDetectedPin, INPUT); pinMode (soundDetectedPin, INPUT); Serial.begin (9600); } // Программанын негизги бөлүгү. void loop () {// InterDigers int lightDetectedVal = analogRead (lightDetectedPin) орнотот; int distanceVal = sonar.ping_cm (); int soundDetectedVal = digitalRead (soundDetectedPin); // Долбоор спикерди үзгүлтүксүз колдонбошу үчүн кечигүү. кечигүү (30000); // Сериялык басып чыгаруу жана басып чыгаруу линиялары сенсор модулдары кандай баалуулуктарды алганын оңой көрө аласыз. Serial.print ("Үн мааниси:"); // Программа баалуулуктарга жараша ар кандай аудио файлдарды ойното турган болсо, бир нече if операторлору сенсор модулдары менен өлчөнөт. if (soundDetectedVal == 0) {Serial.println (soundDetectedVal); Serial.print ("Аралык:"); if (distanceVal == 0) {Serial.println (distanceVal); Serial.print ("Жарык мааниси:"); if (lightDetectedVal> = 1000) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (1); // Дагы бир сериялык басып чыгаруу, ошондо сиз кандай аудио файл ойнотулганын көрө аласыз. Serial.println ("1 --------"); // Аудио файлдын толук узундугун ойнотууга дагы бир кечигүү. кечигүү (5000); } else if (lightDetectedVal> = 900) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (2); Serial.println ("2 --------"); кечигүү (5000); } else if (lightDetectedVal> = 800) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (3); Serial.println ("3 --------"); кечигүү (5000); } else if (lightDetectedVal> = 700) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (4); Serial.println ("4 --------"); кечигүү (5000); } else if (lightDetectedVal> = 600) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (5); Serial.println ("5 --------"); кечигүү (5000); } else if (lightDetectedVal> = 500 || lightDetectedVal 0 || distanceVal == NULL) {Serial.println (distanceVal); Serial.print ("Жарык мааниси:"); if (lightDetectedVal> = 1000) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (7); Serial.println ("7 --------"); кечигүү (5000); } else if (lightDetectedVal> = 900) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (8); Serial.println ("8 --------"); кечигүү (8000); } else if (lightDetectedVal> = 800) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (9); Serial.println ("9 --------"); кечигүү (5000); } else if (lightDetectedVal> = 700) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (10); Serial.println ("10 -------"); кечигүү (8000); } else if (lightDetectedVal> = 600) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (11); Serial.println ("11 -------"); кечигүү (6000); } else if (lightDetectedVal> = 500 || lightDetectedVal <= 1000) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (13); Serial.println ("13 -------"); кечигүү (5000); } else if (lightDetectedVal> = 900) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (14); Serial.println ("14 -------"); кечигүү (5000); } else if (lightDetectedVal> = 800) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (15); Serial.println ("15 -------"); кечигүү (5000); } else if (lightDetectedVal> = 700) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (16); Serial.println ("16 -------"); кечигүү (5000); } else if (lightDetectedVal> = 600) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (17); Serial.println ("17 -------"); кечигүү (5000); } if if (lightDetectedVal> = 500 || lightDetectedVal 0 || distanceVal == NULL || distanceVal> = 150) {Serial.println (distanceVal); Serial.print ("Жарык мааниси:"); if (lightDetectedVal> = 1000) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (19); Serial.println ("19 -------"); кечигүү (5000); } else if (lightDetectedVal> = 900) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (20); Serial.println ("20 -------"); кечигүү (5000); } else if (lightDetectedVal> = 800) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (21); Serial.println ("21 -------"); кечигүү (5000); } else if (lightDetectedVal> = 700) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (22); Serial.println ("22 -------"); кечигүү (5000); } else if (lightDetectedVal> = 600) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (23); Serial.println ("23 -------"); кечигүү (5000); } else if (lightDetectedVal> = 500 || lightDetectedVal << 500) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (24); Serial.println ("24 -------"); кечигүү (5000); }}}}

5 -кадам: Дело

Case
Case
Case
Case

Эми чыныгы татаал бөлүгү келет.

Мунун бардыгын туура келтирүү бир аз татаал болушу мүмкүн, бул сиздин баарын нан табакка кантип орнотконуңузга же нерселерди кантип ширеткениңизге жараша болот. Бирок сенсорлор бир жерге жабышышы үчүн бир нече тешик жасашыңыз керек. Мен микрофонду (9мм дрель керек) жана сонар модулун (6мм дрель керек) артка, LDRди танктын алдына койгом, бирок эгер сизде боштук болсо, аларды каалаган убакта эффективдүү түрдө коё аласыз.

Ардуинону туташтыргыч кабели менен туташтыруу үчүн, моделдин денесиндеги тешикти тактаңыз.

Мен спикерди мунарага коюуну сунуштайт элем. анткени ал жерде көп орун калууга тийиш.

Жогорудагы сол сүрөттө мен ардуино менен Леопард 2 моделинин ичине кантип чапталгандыгымды көрсөтөм. Оң сүрөттө зымдардын көбү орнотулган.

Ардуинону кабелдик байланыштар менен камсыз кылуу үчүн моделдин түбүндө кичинекей тешиктерди бурсаңыз болот.

Бирок мен жаңылбасам, азыр жасашыңар керек.

Сунушталууда: