Innholdsfortegnelse:

Spøkstank: 5 trinn
Spøkstank: 5 trinn

Video: Spøkstank: 5 trinn

Video: Spøkstank: 5 trinn
Video: Голубая стрела (1958) фильм 2024, Juli
Anonim
Spøkstank
Spøkstank

Dette er et prosjekt jeg gjorde på skolen min, HKU, som krevde at vi skulle lage noe med en Arduino Uno. Jeg ville lage noe som ville gjøre min favoritt ting, få folk til å le. Så bestemte meg for å lage en spøkboks som ville gi deg en spøk, men hvilken spøk det ga deg, ville avhenge av hva et par sensormoduler målte på det bestemte tidspunktet. For å gjøre det mer personlig bestemte jeg meg for å gjøre det til en tank.

Trinn 1: Få delene

Delene du trenger for å gjenskape dette prosjektet vil være

  • 1x datamaskin som kan kjøre Arduino IDE
  • 1x Arduino Uno
  • 1x usb -kontaktkabel for Arduino Uno
  • 1x ekkoloddsensor
  • 1x høyttaler (helst en av anstendig kvalitet (, jeg brukte en jeg dro ut av en Bluetooth -høyttaler)).
  • 1x LM386 forsterkermodul (det er mulig å lage dette selv, men jeg brukte en modul).
  • 1x LM393 mikrofon
  • 1x LDR
  • 1x LED (hvilken som helst farge vil gjøre, men jeg brukte blått).
  • 4x 1kΩ motstand
  • 1x 2, 7kΩ motstand
  • 1x brødbrett
  • 1x micro SD -kort (helst lite (1 eller 2 gb)).
  • 1x motorbor.
  • 1x 16 mm borehode (helst laget for boring av metall).
  • 1x 9 mm borehode (også fortrinnsvis laget for boring av metall).
  • 1x 1 mm borehode (igjen fortrinnsvis laget for boring av metall).
  • 1x modelltank (jeg brukte leopard 2 i skala 1:35, men andre tilfeller burde også være fine).
  • Superlim / hotlim
  • og ganske mange ledninger helst i forskjellige farger.
  • kabelbindere (valgfritt).

Trinn 2: Kabling

Kabling
Kabling

Vi må begynne med ledningene, bildet er en teknisk tegning av hvordan det hele skal kobles til. Dette bør tjene som din plan. Merk: Alle Arduino -portene har navnet AP# for hver port. Så den fjerde porten på Arduino er AP4, port A0 er APA0 og port 6 ~ er AP6 ~, etc Alle andre porter er navngitt slik de vises på modulene selv.

Trinn 3: Pre Code Things

Nå, før vi kan begynne å bruke kode, trenger vi litt informasjon. Jeg anbefaler at du følger denne opplæringen fra trinn 2 til 4.

www.electronoobs.com/eng_arduino_tut8.php

Vi kommer imidlertid ikke til å bruke koden hans, ettersom vi kommer til å bruke vår egen Vær oppmerksom på at noen høyttalere bruker forskjellige frekvenser. Min høyttaler brukte 16-biters 32kHz lydfiler. Så hvis talen din bråker, men ikke spiller av filene dine, kan du prøve å spille med frekvensen din.

Trinn 4: Kode

Nå skal vi laste opp koden til arduinoen. Kopier alt dette og legg det inn i Arduino IDE og last det opp til Arduino.

// inkluderer biblioteket for SD -kortleseren.#inkluderer "Wtv020sd16p.h" // inkluderer biblioteket som trengs for sonarsensoren. #include // Angir pinnene for Arduino. int resetPin = 4; int clockPin = 5; int dataPin = 6; int busyPin = 7; int soundDetectedPin = 12; int lightDetectedPin = A0; // Angir pinnene for SD -kortbiblioteket. Wtv020sd16p wtv020sd16p (resetPin, clockPin, dataPin, busyPin); // Angir pinnene for ekkoloddet sensorbibliotek. NewPing -ekkolodd (11, 10); // Setter opp de andre inngangene og angir bithastigheten til programmet. ugyldig oppsett () {wtv020sd16p.reset (); pinMode (lightDetectedPin, INPUT); pinMode (soundDetectedPin, INPUT); Serial.begin (9600); } // Hoveddelen av programmet. void loop () {// Setter intergers int lightDetectedVal = analogRead (lightDetectedPin); int distanceVal = sonar.ping_cm (); int soundDetectedVal = digitalRead (soundDetectedPin); // Forsink så prosjektet prosjektet ikke uendelig vil fortsette å bruke høyttaleren. forsinkelse (30000); // Seriell utskrift og utskriftslinjer slik at du enkelt kan se hvilke verdier sensormodulene tar. Serial.print ("Lydverdi:"); // Flere if -setninger slik at programmet spiller forskjellige lydfiler, avhengig av verdiene, måles av sensormodulene. if (soundDetectedVal == 0) {Serial.println (soundDetectedVal); Serial.print ("Avstand:"); if (distanceVal == 0) {Serial.println (distanceVal); Serial.print ("Light Value:"); if (lightDetectedVal> = 1000) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (1); // Nok en serieutskrift, slik at du kan se hvilken eksakt lydfil som ble spilt. Serial.println ("1 --------"); // Nok en forsinkelse for å la lydfilen spille av full lengde. forsinkelse (5000); } annet hvis (lightDetectedVal> = 900) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (2); Serial.println ("2 --------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 800) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (3); Serial.println ("3 --------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 700) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (4); Serial.println ("4 --------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 600) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (5); Serial.println ("5 --------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 500 || lightDetectedVal 0 || distanceVal == NULL) {Serial.println (distanceVal); Serial.print ("Light Value:"); if (lightDetectedVal> = 1000) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (7); Serial.println ("7 --------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 900) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (8); Serial.println ("8 --------"); forsinkelse (8000); } annet hvis (lightDetectedVal> = 800) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (9); Serial.println ("9 --------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 700) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (10); Serial.println ("10 -------"); forsinkelse (8000); } annet hvis (lightDetectedVal> = 600) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (11); Serial.println ("11 -------"); forsinkelse (6000); } annet hvis (lightDetectedVal> = 500 || lightDetectedVal <= 1000) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (13); Serial.println ("13 -------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 900) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (14); Serial.println ("14 -------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 800) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (15); Serial.println ("15 -------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 700) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (16); Serial.println ("16 -------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 600) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (17); Serial.println ("17 -------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 500 || lightDetectedVal 0 || distanceVal == NULL || distanceVal> = 150) {Serial.println (distanceVal); Serial.print ("Light Value:"); if (lightDetectedVal> = 1000) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (19); Serial.println ("19 -------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 900) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (20); Serial.println ("20 -------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 800) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (21); Serial.println ("21 -------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 700) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (22); Serial.println ("22 -------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 600) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (23); Serial.println ("23 -------"); forsinkelse (5000); } annet hvis (lightDetectedVal> = 500 || lightDetectedVal << 500) {Serial.println (lightDetectedVal); wtv020sd16p.playVoice (24); Serial.println ("24 -------"); forsinkelse (5000); }}}}

Trinn 5: Saken

Saken
Saken
Saken
Saken

Nå kommer den kompliserte delen.

Det kan være litt vanskelig å montere alt i saken, dette avhenger av hvordan du monterte alt på brødbrettet eller hvordan du loddet ting sammen. Men du må lage et par hull for sensorene å stikke godt. Jeg satte mikrofonen (9 mm drill nødvendig) og ekkoloddmodulen (6 mm drill nødvendig) bak og LDR foran på tanken, men du kan sette dem effektivt uansett hvis du har plass.

Sørg for å kutte et hull i modellens kropp for å kunne koble arduinoen din med tilkoblingskabelen.

Jeg vil anbefale å sette høyttaleren i tårnet. som det burde være god plass igjen der.

Det venstre bildet ovenfor er hvordan jeg monterte arduinoen og utskriften jeg loddet inne i Leopard 2. Modellen. Det høyre bildet er et med de fleste ledningene montert.

Det du kan gjøre er å bore små hull i bunnen av modellen for å sikre Arduino med kabelbindere.

Men hvis jeg ikke tar feil, bør du nå være ferdig.

Anbefalt: