Interactieve Cups (10 / 10 stap)

Stap 10: Codes

Download arduino 1.0.
Ook, voordat u de code naar http://www.ladyada.net/make/waveshield/use.html gaan.
U moet Formatteer de SD-kaart, converteren van audiobestanden zoals voorgesteld in deze site.
Ook, vergeet niet om de geconverteerde audio naar de SD-kaart.

Arduino Code die we gebruikt:

#include < FatReader.h >
#include < SdReader.h >
#include < avr/pgmspace.h >
#include "WaveUtil.h"
#include "WaveHC.h"

Kaart van de SdReader;    Dit object bevat de gegevens voor de kaart
FatVolume vol;    Dit houdt de informatie voor de partitie op de kaart
FatReader wortel;   Dit bevat de gegevens voor het bestandssysteem op de kaart
F FatReader;      Dit bevat de gegevens voor het bestand we aan het spelen bent

WaveHC Golf;  Dit is de enige Golf (audio) object, omdat we zullen slechts één filter tegelijk spelen

#define DEBOUNCE 100 / / button debouncer

deze handige functie geeft het aantal bytes in het RAM, momenteel gratis groot voor debugging!
int freeRam(void)
{
extern int __bss_end;
extern int * __brkval;
int free_memory;
Als (__brkval (int) == 0) {}
FREE_MEMORY = ((int) & free_memory)-((int) & __bss_end);
}
else {}
FREE_MEMORY = ((int) & free_memory)-((int) __brkval);
}
Return free_memory;
}

VOID sdErrorCheck(void)
{
Als (! card.errorCode()) keren;
putstring ("\n\rSD I/O fout:");
Serial.Print(Card.ErrorCode(), HEX);
putstring (",");
Serial.println(Card.errorData(), HEX);
while(1);
}

VOID Setup {}
seriële poort instellen
Serial.begin(9600);
Serial.println(freeRam());      Als dit onder 150 bytes kan het problemen magie!

De pennen voor de DAC-besturingselement instellen Deze pennen zijn gedefinieerd in de bibliotheek

Als (! card.init(true)) {//play met 4 MHz spi als 8MHz niet voor u werkt
Als (! card.init()) {//play met 8 MHz spi (standaard sneller!)
putstring_nl ("Card init. mislukt!");  Er ging iets mis, laat uitprinten waarom
sdErrorCheck();
while(1);                            vervolgens 'stoppen' - niets doen!
}

inschakelen optimaliseren lees - sommige kaarten kunnen timeout. Uitschakelen als u problemen ondervindt
card.partialBlockRead(true);

Nu gaan we voor een FAT-partitie!
uint8_t deel;
voor (deel = 0; deel < 5; deel ++) {/ / Wij hebben maximaal 5 "slots" om in te kijken
Als (vol.init (kaart, deel))
breken;                             We vonden een, laat borgtocht
}
Als (deel == 5) {/ / als we uiteindelijk niet het vinden van een :(
putstring_nl ("geen geldige FAT-partitie!");
sdErrorCheck();      Er ging iets mis, laat uitprinten waarom
while(1);                            vervolgens 'stoppen' - niets doen!
}

Laat de gebruiker te vertellen over wat we gevonden
putstring ("Using partitie");
Serial.Print (deel, DEC);
putstring (", type is vet");
Serial.println(vol.fatType(),DEC);     FAT16 of FAT32?

Probeert te openen van de root directory
Als (! root.openRoot(vol)) {}
putstring_nl ("kan niet openen root dir!"); Er ging iets mis,
while(1);                             vervolgens 'stoppen' - niets doen!
}

Oef! Daar kregen we voorbij de harde delen.
putstring_nl("Ready!");
}

void loop {}
putstring(".");            uncomment dit om te zien als de lus niet actief
int sensorValue;

sensorValue = analogRead(2);   analoge invoer pin 2 lezen

if(sensorValue<100) {/ / Dit bepaalt de song we spelen
playcomplete ("water. WAV");
playcomplete ("vrijdag. WAV");
}

anders als (sensorValue > = 100 & & sensorValue < 250) {}
playcomplete ("milkbaby. WAV");
playcomplete ("baby. WAV");}

else {playcomplete ("coke. WAV");
playcomplete ("myjeans. WAV");
}
}

ongeldig playcomplete(char *name) {}
Bel onze helper vinden en spelen deze naam
playfile(name);

terwijl (wave.isplaying) {//while het fragment wordt afgespeeld!

int16_t potval = 450;
uint32_t newsamplerate;
int16_t lastpotval = 0;
#define HYSTERESIS 3


int sensorValue;
sensorValue = analogRead(5); Lees input 5 die de omringende lichte sensor

if(sensorValue<10) {}
pauze;} Als we te dicht bij de omringende lichte sensor, het stopt het liedje en wijzig deze naar een andere muziek


Dit is de code die de snelheid verandert
potval = analogRead(0); Lees de bocht sensor en deze wijzigingen in de code de snelheid afhankelijk van de sensor
Als (((potval-lastpotval) > HYSTERESIS) || ((lastpotval-potval) > HYSTERESIS)) {
newsamplerate = wave.dwSamplesPerSec;  krijgen van de oorspronkelijke samplefrequentie
newsamplerate * = potval;                       schaal met de analoge waarde
newsamplerate / = 512;   We willen 'split' tussen 2 x versneld en vertraagd.
wave.setSampleRate(newsamplerate);  Stel deze onmiddellijk!
Serial.println (newsamplerate, DEC);  voor foutopsporing
lastpotval = potval;

}

Serial.Print(potval,DEC);
delay(100);
}
nu zijn gedaan afspelen
}

ongeldig playfile(char *name) {}
Zie als de Golf-object is momenteel bezig met iets
Als (wave.isplaying) {/ / al het spelen van iets, dus stoppen met het!
Wave.stop();

Stop ermee
}
kijken in de root directory en open het bestand
Als (! f.open (root, naam)) {}
putstring kon niet ("open bestand"); Serial.Print(name); terugkeer;
}
OK lees het bestand en zet hem in een golf-object
Als (! wave.create(f)) {}
putstring_nl ("niet een geldig WAV"); terugkeer;
}

OK tijd om te spelen! Start het afspelen
Wave.Play();}

Gerelateerde Artikelen

Reizigers Cup - Bier Pong kostuum

Reizigers Cup - Bier Pong kostuum

deze solo cup kostuum is super makkelijk te maken en is een grote interactieve groep kostuum. 2, 4 of 12 vrienden te maken van een volledig team verzamelen! Pak een paar ping pong ballen en je hebt een bier pong spel te gaan. Het kostuum bevat zelfs
Interactieve LED Beer Pong tafel

Interactieve LED Beer Pong tafel

Maak uw eigen interactieve LED Beer Pong tafel!Dit instructable zal u door alle stappen te begeleiden om het maken van een one-of-a-kind bier pong tafel compleet met kopje opsporen van RGB peulen, automatische bal sluitringen, een 32 x 12 ping pong b
Het avontuur van elektriciteit: een interactieve lichte diorama

Het avontuur van elektriciteit: een interactieve lichte diorama

waar elektriciteit vandaan? Wie de uitvinder van de gloeilamp? Hoe steden gebruiken deze technologie vandaag?Dit zijn slechts een paar vragen die we te spreken in deze interactieve diorama hopen, The Adventure of Electricity!Dit project werd ontworpe
Muurschildering van interactieve Spacelady

Muurschildering van interactieve Spacelady

Spacelady is een interactieve, Arduino-gecontroleerde LED muurschildering. Met behulp van een Capacitieve touch sensor, triggert de Arduino lichten en geluiden als koper tape pads zijn geraakt. Om te begrijpen van de functionaliteit van deze muurschi
3D interactieve Aquarium achtergrond

3D interactieve Aquarium achtergrond

In dit instructable, ik zal je laten zien hoe maak je een 3D interactieve achtergrond met grotten, en een onderwater zand vallen. Het is vrij gemakkelijk te maken, en is zeer goedkoop. Het kost tijd, maar het eindproduct ziet er geweldig en uw famili
Disco LED Party Cup!

Disco LED Party Cup!

Welkom op mijn ondoorgrondelijke voor het 'Disco LED partij Cup!'-gebruik het bij partijen of sommige spannender kunnen een rustige nacht in! De bodem 'puck' clips op de bodem van een plastic partij cup en verlichting tot de beat!Stap 1: Onderdelenli
5 ingrediënt bevroren Yoghurt Cups

5 ingrediënt bevroren Yoghurt Cups

Dit zijn een van mijn favoriete na school snacks. Het is warm het hele jaar hier in Vietnam, en hebben deze lekker bevroren yoghurt bekers zit in de vriezer maakt een snelle en gezonde traktatie voor hen als ze thuis van school. Het is ook een geweld
Smakelijk ontbijt Cups

Smakelijk ontbijt Cups

Ik ben dol op koken. Ik bedoel, ik ben echt dol op koken. Ik hou proberen nieuwe receptideeën van het internet, maar soms is alles wat je kunt vinden een foto met geen recept. Dit is het geval met deze slechte jongens. Zag ik meerdere foto's op de '
Jute-bindgaren Cup Pads--Rag-Rug stijl

Jute-bindgaren Cup Pads--Rag-Rug stijl

Het is niet te vroeg te beginnen met het maken van de giften van Kerstmis! Deze rustieke cup pads zijn perfect voor volgende winter's aandeel van warme chocolademelk en thee!Ik wilde een project volledig uit de tekenreeks, en ik dacht aan manden en h
Appeltaart Cocktail + Cool Apple serveren Cup

Appeltaart Cocktail + Cool Apple serveren Cup

ik werd geïntroduceerd aan dit cocktail enkele jaren terug bij een partij van de graduatie van het college van vrienden.  Ik echt genoten van de drank, zoals het is echt smaak precies zoals appeltaart.  Sinds die partij die ik heb geprobeerd om de ap
Warme wijn Dessert Cups

Warme wijn Dessert Cups

Ik heb het zien "wijn gummies" pop up op pinterest de laatste tijd en wilde proberen een nieuwe draai aan het. Dit is een super makkelijk recept zou u als een dessert of als een leuke metgezel voor een stijlvolle kaas plaat. Zoet, met net genoeg
Geweven papier Cup luidspreker

Geweven papier Cup luidspreker

De elektromagnetische spoel van deze luidspreker is gelijktijdig de membraan dat trilt zodat het geluid hoor je. Geweven op een circulaire weefgetouw uit een papieren kopje gemaakt, is deze luidspreker zeker niet erg efficiënt, noch erg luid. Maar he
K'Nex tafelvoetbal - World Cup 2014 Edition: Duitsland vs Argentinië

K'Nex tafelvoetbal - World Cup 2014 Edition: Duitsland vs Argentinië

GOOOOOOOOAL!! Mario Götze scoort het eerste doelpunt van de wedstrijd, met enige 7 minuten extra tijd links, Argentinië zal het terug?!?! ....Dat waren goede tijden. Verzengende warm weer, nooit eindigende games van het voetbal. Het leven was grand.
Interactieve Halloween pompoen (Arduino gebaseerd)

Interactieve Halloween pompoen (Arduino gebaseerd)

HET IDEEEen pompoen die gloeit, schudt en schreeuwt... [video]Het is Halloween, dus natuurlijk, dat we moesten een project die verband houdt met die.Het idee is om een pompoen, die zintuigen van de aanwezigheid van een persoon die probeert te krijgen