Hur att lägga till knappen har Peter riddarens Auduino projektet (2 / 4 steg)

Steg 2: knappar!



RCArduino innehåller också instruktioner att lägga till en switch för att använda dröjsmål. Jag prototyped med bakbord och vissa gator klipp en övergång till pinne 4. Glöm inte att använda en dra ner motstånd. Det fungerade fint, så jag bestämde mig att försöka lägga till några fler knappar och några nya effekter.

Om du har problem med växlar, Läs detta:

http://www.Ladyada.net/Learn/Arduino/lesson5.html

Här är koden från Rcarduinos blogg:

Auduino, Lo-Fi granulat synthesizer
//
av Peter Knight, Tinker.it http://tinker.it
//
Hjälp: http://code.google.com/p/tinkerit/wiki/Auduino
Mer hjälp: http://groups.google.com/group/auduino
//
Analog i 0: korn 1 pitch
Analog i 1: korn 2 förfall
Analog i 2: 1 förfalla av spannmål
Analog i 3: korn 2 pitch
Analog i 4: korn upprepning frekvens
//
Digital 3: Audio out (Digital 11 på ATmega8)
//
Ändringsloggen:
19 Nov 2008: lagt till stöd för ATmega8 styrelser
21 Mar 2009: lagt till stöd för ATmega328 styrelser
7 Apr 2009: fast avbrottsvektor för ATmega328 brädor
8 Apr 2009: lagt till stöd för ATmega1280 styrelser (Arduino Mega)

#include
#include

uint16_t syncPhaseAcc;
flyktiga uint16_t syncPhaseInc;
uint16_t grainPhaseAcc;
flyktiga uint16_t grainPhaseInc;
uint16_t grainAmp;
flyktiga uint8_t grainDecay;
uint16_t grain2PhaseAcc;
flyktiga uint16_t grain2PhaseInc;
uint16_t grain2Amp;
flyktiga uint8_t grain2Decay;

Karta analoga kanaler
#define SYNC_CONTROL (4)
#define GRAIN_FREQ_CONTROL (0)
#define GRAIN_DECAY_CONTROL (2)
#define GRAIN2_FREQ_CONTROL (3)
#define GRAIN2_DECAY_CONTROL (1)

DB
#define SMOOTH_PIN 8

Ändra dessa kommer kräver också skriva om audioOn()

#if defined(__AVR_ATmega8__)
//
På gamla ATmega8 styrelser.
Produktionen är på stift 11
//
#define LED_PIN 13
#define LED_PORT PORTB
#define LED_BIT 5
#define PWM_PIN 11
#define PWM_VALUE OCR2
#define PWM_INTERRUPT TIMER2_OVF_vect

#elif defined(__AVR_ATmega1280__)
//
På Arduino Mega
Produktionen är på stift 3
//
#define LED_PIN 13
#define LED_PORT PORTB
#define LED_BIT 7
#define PWM_PIN 3
#define PWM_VALUE OCR3C
#define PWM_INTERRUPT TIMER3_OVF_vect
#else
//
För moderna ATmega168 och ATmega328 styrelser
Produktionen är på stift 3
//
#define PWM_PIN 3
#define PWM_VALUE OCR2B
#define LED_PIN 13
#define LED_PORT PORTB
#define LED_BIT 5
#define PWM_INTERRUPT TIMER2_OVF_vect
#endif

Duane B
rcarduino.blogspot.com
15/11/2012
Mycket enkel ring buffert dröjsmål
vi spela in utdata i den här matrisen
och sedan blanda det igen med produktionen som bufferten sveper runt
kan slås på och av genom en knapp på DELAY_BUTTON
#define MAX_DELAY 1024
unsigned char sDelayBuffer [MAX_DELAY];
unsigned int nDelayCounter = 0;
unsigned char bDelay;

#define DELAY_BUTTON 4

Smidig logaritmisk kartläggning
//
uint16_t antilogTable [] = {
64830,64132,63441,62757,62081,61413,60751,60097,59449,58809,58176,57549,56929,56316,55709,55109,
54515,53928,53347,52773,52204,51642,51085,50535,49991,49452,48920,48393,47871,47356,46846,46341,
45842,45348,44859,44376,43898,43425,42958,42495,42037,41584,41136,40693,40255,39821,39392,38968,
38548,38133,37722,37316,36914,36516,36123,35734,35349,34968,34591,34219,33850,33486,33125,32768
};
uint16_t mapPhaseInc (uint16_t ingång) {
Return (antilogTable [input & 0x3f]) >> (ingång >> 6);
}

Klev kromatisk kartläggning
//
uint16_t midiTable [] = {
17,18,19,20,22,23,24,26,27,29,31,32,34,36,38,41,43,46,48,51,54,58,61,65,69,73,
77,82,86,92,97,103,109,115,122,129,137,145,154,163,173,183,194,206,218,231,
244,259,274,291,308,326,346,366,388,411,435,461,489,518,549,581,616,652,691,
732,776,822,871,923,978,1036,1097,1163,1232,1305,1383,1465,1552,1644,1742,
1845,1955,2071,2195,2325,2463,2610,2765,2930,3104,3288,3484,3691,3910,4143,
4389,4650,4927,5220,5530,5859,6207,6577,6968,7382,7821,8286,8779,9301,9854,
10440,11060,11718,12415,13153,13935,14764,15642,16572,17557,18601,19708,20879,
22121,23436,24830,26306
};
uint16_t mapMidi (uint16_t ingång) {
Return (midiTable[(1023-input) >> 3]);
}

Klev pentatoniska kartläggning
//
uint16_t pentatonicTable [54] = {
0,19,22,26,29,32,38,43,51,58,65,77,86,103,115,129,154,173,206,231,259,308,346,
411,461,518,616,691,822,923,1036,1232,1383,1644,1845,2071,2463,2765,3288,
3691,4143,4927,5530,6577,7382,8286,9854,11060,13153,14764,16572,19708,22121,26306
};

uint16_t mapPentatonic (uint16_t ingång) {
uint8_t värde = (1023-ingång) / (1024/53);
avkastning (pentatonicTable[value]);
}

void audioOn() {
#if defined(__AVR_ATmega8__)
ATmega8 har olika register
TCCR2 = _BV(WGM20) | _BV(COM21) | _BV(CS20);
TIMSK = _BV(TOIE2);
#elif defined(__AVR_ATmega1280__)
TCCR3A = _BV(COM3C1) | _BV(WGM30);
TCCR3B = _BV(CS30);
TIMSK3 = _BV(TOIE3);
#else
Ställ in PWM till 31.25 kHz, fasen exakt
TCCR2A = _BV(COM2B1) | _BV(WGM20);
TCCR2B = _BV(CS20);
TIMSK2 = _BV(TOIE2);
#endif
}

void setup() {
pinMode(PWM_PIN,OUTPUT);
audioOn();
pinMode(LED_PIN,OUTPUT);

pinMode(DELAY_BUTTON,INPUT);

Ange pin-läge och aktivera dra så som standardläge
är PENTATONIC, dra stiftet låg växla för att jämna
pinMode(SMOOTH_PIN,INPUT);
digitalWrite(SMOOTH_PIN,HIGH);
}

void loop() {
Slingan är ganska enkel - det uppdaterar bara parametrarna för oscillatorerna.
//
Undvik att använda alla funktioner som gör omfattande användning av avbrott eller inaktivera avbrott.
De kommer att orsaka klick och bajsar i ljudet.

pentatoniska klev toner, pull pin låg för smidig frekvens utan distinkta toner som standard
syncPhaseInc = mapPhaseInc(analogRead(SYNC_CONTROL)) / 4;

syncPhaseInc = mapPentatonic(analogRead(SYNC_CONTROL));

uppdaterad 29/01/2013
dra DELAY_BUTTON stiftet hög för försening, låg för någon försening
Använd antingen en pull up/dra ner motstånd
eller en dra upp motstånd med en vippströmbrytare mellan stift och marken
bDelay = digitalRead(DELAY_BUTTON);

Klev mappning till MIDI-noter: C, Db, D, Eb, E, F...
syncPhaseInc = mapMidi(analogRead(SYNC_CONTROL));

Klev pentatoniska mappning: D, E, G, A, B

grainPhaseInc = mapPhaseInc(analogRead(GRAIN_FREQ_CONTROL)) / 2;
grainDecay = analogRead(GRAIN_DECAY_CONTROL) / 8;
grain2PhaseInc = mapPhaseInc(analogRead(GRAIN2_FREQ_CONTROL)) / 2;
grain2Decay = analogRead(GRAIN2_DECAY_CONTROL) / 4;
}

SIGNAL(PWM_INTERRUPT)
{
uint8_t värde;
uint16_t utgång;

syncPhaseAcc += syncPhaseInc;
om (syncPhaseAcc < syncPhaseInc) {
Dags att börja nästa säden
grainPhaseAcc = 0;
grainAmp = 0x7fff;
grain2PhaseAcc = 0;
grain2Amp = 0x7fff;
LED_PORT ^ = 1 << LED_BIT; Snabbare än med digitalWrite
}

Öka fasen av korn oscillatorer
grainPhaseAcc += grainPhaseInc;
grain2PhaseAcc += grain2PhaseInc;

Konvertera fas i en triangel våg
värde = (grainPhaseAcc >> 7) & 0xff;
om (grainPhaseAcc & 0x8000) värde = ~ värde;
Multiplicera med nuvarande korn amplitud att få prov
output = värde * (grainAmp >> 8);

Upprepa på andra spannmål
värde = (grain2PhaseAcc >> 7) & 0xff;
om (grain2PhaseAcc & 0x8000) värde = ~ värde;
utgång += värde * (grain2Amp >> 8);

Gör säden amplituder klinga med en faktor av varje prov (exponentiell decay)
grainAmp-= (grainAmp >> 8) * grainDecay;
grain2Amp-= (grain2Amp >> 8) * grain2Decay;

Skala till det tillgängliga utbudet, klippning vid behov
utgång >> = 9;
om (output > 255) output = 255;

Duane B
rcarduino.blogspot.com
15/11/2012
lägga till en knapp för att ställa in bDelay sant eller falskt att sätta försening på och stänga
IF(bDelay)
{
Utgång till PWM (detta är snabbare än att använda analogWrite)
Vi lägger här dröjsmål bufferten till produktionsvärde, detta ger
en subtil ekoeffekt, dröjsmål bufferten är effektivt spela upp ljudet från
1/8th av en sekund sedan.

LED_PORT | = 1 << LED_BIT; Snabbare än med digitalWrite
PWM_VALUE = (utgång + (sDelayBuffer[nDelayCounter])) >> 1.

lägga till ny utdata till bufferten så vi kan använda det när bufferten nästa sveper runt
sDelayBuffer [nDelayCounter] = PWM_VALUE;
nDelayCounter ++;
IF(nDelayCounter == MAX_DELAY)
{
nDelayCounter = 0;
}
}
annat
{
LED_PORT & = ~ (1 << LED_BIT); Snabbare än med digitalWrite

PWM_VALUE = produktion;
}
}

Se Steg
Relaterade Ämnen

Hur att lägga till

detta Instructable kommer att berätta helt enkelt lägga till.Steg 1: Skaffa en ekvation jag väljer ekvation 12 + 38.Steg 2: Skriv ner ekvationen Nu du måste skriva ner ekvationen. Om du vill göra detta skriver det vertikalt inte horisontellt.12 + 38...

Att lägga till Arduino webbaserad OSD knappen fjärrkontroll till kameran SuperCircuits PC165DNR

Super kretsar PC165DNR kameran är en mycket låg ljus färg videokamera som är utmärkt för användning med ett teleskop eller för allsky meteor capture. Den har knappar som gör att användaren kan ställa in olika exponeringstider och het pixel blockering...

Att lägga till Googles "Jag har tur" sökord (firefox och opera)

(Firefox och Opera endast)(För att lägga till sökord i Opera finns här)Har du någonsin använt sökord innan? Dess lik en genväg för att söka med hjälp av en viss webbplats webbplatser. Om du har firefox eller opera, kan du skriva på adressen bar g [sö...

BMW 530i - att lägga till The BMW "Sport Mode"-knappen hacka

detta instructable kommer avslöja alternativet att lägga till BMW sport körläge på alla 2006 BMW 530i's med E60 chassit. De sport körläge erbjöds aldrig för denna modell, även om de klassificera denna bilmodell som sport modell, du inte kunde få den...

Hur att lägga högtalarna till en Sony soundbar

detta kommer att visa dig hur att lägga högtalarna till en Sony soundbar snabbt och enkelt!Steg 1: material -skruvmejsel-svart tryck-16 eller 18 gauge bil stereo högtalarkabeln (köpt på walmart omkring 10 buck för 100 ft!)-Snabb kopplingar 22-16 gaug...

Att lägga till nycklar till en Arduino Synth den hårda vägen-Blacklord: Organ Donor projekt del 2

(Obs-detta är min 20 instructable! Tack till alla följande och commenting.on mina projekt och personal som gör detta möjligt. Denna webbplats har definitivt fått mig få min A spelet till arbetsbänken.)Auduino granulat synth av Peter Knight ( http://c...

Att lägga till IP till Vivado

Vivado är ett bra verktyg för FPGA-utveckling. Det finns vissa fall när inbyggd IP inte passar dina behov. Lyckligtvis kan du lägga till anpassade IP kärnor i Vivado i några korta steg. För detta Instructable ska jag använda Digilent IP databasen som...

Att lägga till extra kylning till ibook g4/macbook

Tja, detta började både med min döda xbox och dremeling det i hälften och när jag nyligen tog min ibook isär att ta av den termiska pad och ersätta det med termisk pasta (roligt, jag trodde det skulle ha termisk pasta redan). Väl misslyckades detta e...

Att lägga till gratis OpenStreetMaps till din Garmin Oregon 450 GPS

The Garmin Oregon serie handhållna GPS enheter är mycket populära blandGeocachare. Nyligen fick jag frågan hur till installera ett microSD-kort till en och även hur att ladda GPX-filer och ytterligare kartor.Denna korta Instructable vägleder användar...

Att lägga till anpassade komponenter i Eagle

Detta instructable visar dig hur du lägger till komponenter till din Eagle bibliotek som gör att du kan ha anpassade PCB är fabricerade. Denna handledning kommer att fokusera på med befintliga symboler och paket för att göra layout processen så fort...

Att lägga till lysdioder i spelets klo

Klo spelet är ganska cool men det finns alltid ett sätt att förbättra ett projekt. För att förbättra klo spelet kommer LED strips att läggas till basen eftersom inget projekt är komplett utan alltför många lysdioder.Tyvärr gör projektet för Basys 3 d...

Att lägga till värmeisolering i tältet

detta instructable tyder på ett sätt att lägga till värmeisolering i tältet. Om du campa på varma platser som Burning Man kommer du onekligen har vaknat vid 7 badar i din egen svett. Värmen i ett tält som är utsatt för morgonsolen bygger upp fort, vi...

Att lägga till rörelsekontroll en projektion klocka

mål: lägga till en rörelsesensor som tänder upp klockan på natten när den upptäcker rörelse och göra bakgrundsbelysningens ljusstyrka manuellt justerbara.Varför: Jag har bara några krav på en bra säng-side klocka. Det måste vara väl synlig, men inte...

Att lägga till djup (och skryt) till IKEAs annars platt sexkantiga Hönefoss speglar

IKEA gör några trevliga och avgjort inte vanligt torget speglar namngivna "Hönefoss." De är sexkantig form och kommer i en låda med 10 för $15 (5 varje i två olika nyanser av brunt). Du kan läsa allt om dem på IKEA "Speglarna ser ganska bra...

Att lägga till hjul till gamla Wrigley Field Seat

flera år sedan, min pappa fick en gammal Wrigley Field-plats som en gåva, och på grund av platsbrist i hans kontor i dag, har jag hävdade den att använda som min workshop plats. På uppsidan? Det är en gammal Wrigley Field-plats! Nackdelen? Den har in...

Att lägga till säkerhetskedja i en Wire Wrapped armband

denna steg för steg handledning skrevs att lägga säkerhetskedja till min Swarovski stil armband, men kan enkelt anpassas till många stilar av armband. De tekniker visas i den här guiden fungerar för någon armring där ändarna är inslagna, med eller ut...

Att lägga till lysdioder till objekt

Välkommen till min LED Tutorial Välkommen denna handledning om hur du lägger till lysdioder objekt, att ge dem den extra gnistan! Observera mina metoder är en av många olika sätt att göra detta, så om du ser mig göra något annorlunda än någon annan s...

Att lägga till känsel i en protes

Om din hand har någonsin somnat eller gått domnade av någon anledning, vet du hur hur svårt det är att ta tag i något utan en bra känsla för beröring. Nu föreställa sig hur Amputerade kan kännas! Forskare arbetar för närvarande på att lägga till en k...

Att lägga till fraktioner

Grattis! Du klickade på länken för att gå till detta instructable! (det var uppenbart...) Hur som helst, detta förhoppningsvis lär du dig grunderna i att lägga till fraktioner. Tja, är här bråk 101.Högsta antalet är täljaren och botten är nämnaren. F...