Wie Peter Ritters Auduino Projekt hinzufügen Schaltfläche Funktionen (2 / 4 schritt)

Schritt 2: Tasten!


RCArduino auch enthält Anweisungen zum Hinzufügen eines Schalters um Verzögerung zu verwenden. Ich Prototyp mit dem Steckbrett und einige Gator clips eine Umstellung auf Pin 4. Vergessen Sie nicht, verwenden Sie ein Pull-down-Widerstand. Es funktionierte schön, also habe ich beschlossen, zu versuchen, einige weitere Schaltflächen und einige neue Effekte hinzufügen.

Wenn Sie mit Schaltern Probleme, die lesen Sie dies:

http://www.LadyAda.NET/Learn/Arduino/lesson5.HTML

Hier ist der Code aus dem RCarduino Blog:

Auduino, die Lo-Fi körnige Synthesizer
//
von Peter Ritter, Tinker.it http://tinker.it
//
Hilfe: http://code.google.com/p/tinkerit/wiki/Auduino
Weitere Informationen: http://groups.google.com/group/auduino
//
Analog in 0: 1 Stellplatz Korn
Analog in 1: Korn 2 Zerfall
Analog in 2: 1 Zerfall Korn
Analog in 3: Korn 2 Pitch
Analog in 4: Korn-Folgefrequenz
//
Digitale 3: Audio out (digitale 11 auf ATmega8)
//
Changelog:
19. November 2008: zusätzliche Unterstützung für ATmega8-Boards
21. März 2009: zusätzliche Unterstützung für ATmega328 Boards
7. April 2009: feste Interrupt-Vektor für ATmega328 Boards
8. April 2009: zusätzliche Unterstützung für ATmega1280-Boards (Arduino Mega)

#include
#include

uint16_t SyncPhaseAcc;
volatile uint16_t SyncPhaseInc;
uint16_t GrainPhaseAcc;
volatile uint16_t GrainPhaseInc;
uint16_t GrainAmp;
volatile uint8_t GrainDecay;
uint16_t grain2PhaseAcc;
volatile uint16_t grain2PhaseInc;
uint16_t grain2Amp;
volatile uint8_t grain2Decay;

Map-analoge Kanäle
#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

Diese Änderung wird auch erfordert umschreiben audioOn()

#if defined(__AVR_ATmega8__)
//
Auf alten ATmega8 Brettern.
Ausgabe ist auf Pin 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__)
//
Auf dem Arduino Mega
Ausgabe ist auf Pin 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 moderne ATmega168 und ATmega328 boards
Ausgabe ist auf Pin 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
Sehr einfache Anrufverzögerung Puffer
Wir erfassen die Ausgabe in diesem array
und mischen Sie es wieder mit der Ausgabe, da der Puffer umfließt
ein- und Ausschalten per Knopfdruck auf DELAY_BUTTON umschaltbar
#define MAX_DELAY 1024
unsigned Char sDelayBuffer [MAX_DELAY];
unsigned Int nDelayCounter = 0;
unsigned Char bDelay;

#define DELAY_BUTTON 4

Glatte logarithmischen Zuordnung
//
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 Eingang) {}
zurück (AntilogTable [Eingang & 0x3f]) >> (Eingang >> 6);
}

Farbliche Zuordnung trat
//
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 Eingang) {}
zurück (midiTable[(1023-input) >> 3]);
}

Abgestufte pentatonischen Zuordnung
//
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 Eingang) {}
uint8_t Wert = (1023-Input) / (1024/53);
Rückkehr (pentatonicTable[value]);
}

void audioOn() {}
#if defined(__AVR_ATmega8__)
ATmega8 hat verschiedene 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
PWM soll 31,25 kHz, Phase genau
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);

Pin-Modus eingestellt und ziehen sich schalten, damit das Standard-Modus
ist PENTATONIK, ziehen Sie den Stift niedrig, um glatt zu wechseln
pinMode(SMOOTH_PIN,INPUT);
digitalWrite(SMOOTH_PIN,HIGH);
}

void loop() {}
Die Schleife ist ziemlich einfach - es wird nur die Parameter für die Oszillatoren.
//
Verwenden Sie keine Funktionen, die umfangreiche Verwendung von Interrupts zu machen, oder deaktivieren Sie Interrupts.
Sie werden dazu führen, dass Klicks und kackt in der Audio.

der Standardwert ist pentatonisch abgestuften Tönen, Pull Pin niedrig für glatte Frequenz ohne verschiedene Töne
SyncPhaseInc = mapPhaseInc(analogRead(SYNC_CONTROL)) / 4;

SyncPhaseInc = mapPentatonic(analogRead(SYNC_CONTROL));

aktualisierte 29.01.2013
ziehen Sie den DELAY_BUTTON Stift für Verzögerung, für keine Verzögerung niedrig hoch
Verwendung entweder ein Pull Up/Pull-down-Widerstand
oder ein Pull-up Widerstand mit einem Kippschalter zwischen Pin und Masse
bDelay = digitalRead(DELAY_BUTTON);

Trat, Zuordnung zu MIDI-Noten: Db, D, Eb, C, E, F...
SyncPhaseInc = mapMidi(analogRead(SYNC_CONTROL));

Pentatonik Zuordnung trat: 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 Wert;
uint16_t Ausgang;

SyncPhaseAcc += SyncPhaseInc;
Wenn (SyncPhaseAcc < SyncPhaseInc) {}
Zeit, um den nächsten Strich beginnen
GrainPhaseAcc = 0;
GrainAmp = 0x7fff;
grain2PhaseAcc = 0;
grain2Amp = 0x7fff;
LED_PORT ^ = 1 << LED_BIT; Schneller als mit DigitalWrite
}

Erhöhen Sie die Phase der Korn-Oszillatoren
GrainPhaseAcc += GrainPhaseInc;
grain2PhaseAcc += grain2PhaseInc;

Phase in einem Dreieck Welle umwandeln
Wert = (GrainPhaseAcc >> 7) & 0xff;
Wenn (GrainPhaseAcc & 0 x 8000) Wert = ~ Wert;
Multiplizieren Sie mit aktuellen Korn Amplitude zu Probe zu erhalten
Ausgang = Wert * (GrainAmp >> 8);

Wiederholen Sie für zweite Korn
Wert = (grain2PhaseAcc >> 7) & 0xff;
Wenn (grain2PhaseAcc & 0 x 8000) Wert = ~ Wert;
Ausgabe += Wert * (grain2Amp >> 8);

Machen das Korn Amplituden Verfall um den Faktor jedes Sample (exponentielle Zerfall)
GrainAmp = (GrainAmp >> 8) * GrainDecay;
grain2Amp = (grain2Amp >> 8) * grain2Decay;

Skala, die Ausgabe auf die Reichweite, Zuschneiden, ggf.
Ausgang >> = 9;
Wenn Ausgang (Ausgang > 255) = 255;

Duane B
rcarduino.blogspot.com
15.11.2012
Fügen Sie eine Schaltfläche legen Sie bDelay True oder False, wenn Verzögerung aktivieren bzw. deaktivieren
If(bDelay)
{
Ausgabe auf PWM (Dies ist schneller als die Verwendung von AnalogWrite)
Hier wir der Ausgabewert der Verzögerung Puffer hinzu, so entsteht
eine subtile Echo-Effekt ist der Verzögerung Puffer wiedergeben von Sound aus effectivley
1/8 Sekunde vor.

LED_PORT | = 1 << LED_BIT; Schneller als mit DigitalWrite
PWM_VALUE = (Ausgang + (sDelayBuffer[nDelayCounter])) >> 1;

Fügen Sie die neue Ausgabe in den Puffer hinzu, damit wir es nutzen können, wenn der Puffer als nächstes umfließt
sDelayBuffer [nDelayCounter] = PWM_VALUE;
nDelayCounter ++;
If(nDelayCounter == MAX_DELAY)
{
nDelayCounter = 0;
}
}
anderes
{
LED_PORT & = ~ (1 << LED_BIT); Schneller als mit DigitalWrite

PWM_VALUE = Ausgang;
}
}

In Verbindung stehende Artikel

Hinzufügen Schaltfläche umkehren zu einem Quadcopter entfernten

Hinzufügen Schaltfläche umkehren zu einem Quadcopter entfernten

Viele kleine Quadcopter verwenden Sie eine der zwei Joysticks zur Steuerung von Flips (in der Regel den Nick-/Roll-Stick). Sie gedrückt halten auf dem Stick ermöglicht Flip-Modus, mit der Richtung des Flip gesteuert durch die Richtung, die der Stick
Wie zu reparieren beschädigte Gewinde oder Edelstahl-Threads zu jedem Projekt hinzufügen

Wie zu reparieren beschädigte Gewinde oder Edelstahl-Threads zu jedem Projekt hinzufügen

ich hatte noch nie viel Glück mit einigen der traditionellen Methoden für Reparatur beschädigte Gewinde in meinen Projekten.  Aus verschiedenen Gründen möglicherweise diese Techniken nicht praktikable Lösungen.  Das Gewinde beschädigt werden auch um
Wie Sie Ihre Instructables Links hinzufügen

Wie Sie Ihre Instructables Links hinzufügen

In diesem instructable ich zeigen Ihnen, wie Instructables Links hinzufügen.Schritt 1: Machen Sie eine instructable , Ein instructable zu machen, musst du einen Account haben.Zuerst müssen Sie sich einloggenZweitens müssen Sie klicken auf "erstellen&
Wie Sie Social Media Buttons hinzufügen Sie Blogger (Blogspot) Blog

Wie Sie Social Media Buttons hinzufügen Sie Blogger (Blogspot) Blog

Ich ging durch Blut, Schweiß, Tränen und viele verschiedene Ideen zuSchließlich finden Sie den richtigen Weg zu meinem Blog social Media-Buttons hinzufügen. Da es so schwer für mich war, habe ich beschlossen, ein Tutorial, um Ihnen zu helfen wenn Sie
Ihre Mikrocontroller-Projekt hinzufügen, Video & Audio

Ihre Mikrocontroller-Projekt hinzufügen, Video & Audio

7-Segment-LED-Displays eignen sich zur Darstellung von Zahlen und Bitmap LCD einfache Grafiken tun kann, aber manchmal eine echte Farbe-video-Ausgang ist der einfachste Weg zu gehen:Composite-Video (a.k.a., Cinch-Buchse) ist allgegenwärtig, und arbei
Wie Sie Firefox Schnellsuche Instructables hinzufügen!

Wie Sie Firefox Schnellsuche Instructables hinzufügen!

Ich beschloss, dass ich Firefox Schnellsuche Bar Instructables hinzufügen wollte. Die ich schätze gibt mir der Gelegenheit, meine erste Instructable Posten.Ich verwende Firefox v33.0, aber ich bin mir sicher, dass dies mit späteren Versionen und mögl
Gewusst wie: Google Plus Seite Manager hinzufügen

Gewusst wie: Google Plus Seite Manager hinzufügen

Hinzufügen und Entfernen von Google Plus SeitenmanagerSchritt 1:Melden Sie sich bei Google Plus und wählen Sie die Seite, die Sie verwalten möchten. Klicken Sie auf das Zahnrad-Symbol neben den Namen Ihres Unternehmens und wählen Sie Einstellungen. K
Wie die Fliegen Flugzeug Effekt hinzufügen zu Ihrem iMovie Video Projekte

Wie die Fliegen Flugzeug Effekt hinzufügen zu Ihrem iMovie Video Projekte

Dieses Video zeigt, wie eine Kugel Effekt in Ihre iMovie Filme zu integrieren. Das ist toll, wenn Sie, um Dokument Entfernungen reiste in Ihren Filmen oder Heimvideos brauchen. Der fliegende Flugzeug-Effekt ermöglicht es Ihnen, welche Länder Sie im L
Wie man eigene Klingeltöne hinzufügen, eine drahtlose Türklingel

Wie man eigene Klingeltöne hinzufügen, eine drahtlose Türklingel

Die meisten Türklingeln machen nur einen einfachen generischen Ton. Aber ich dachte, es lustig wäre, eine Türklingel zu ändern, so dass es verfügt über eine anpassbare Klingelton. Auf diese Weise können Sie Musik oder benutzerdefinierte Ansage spiele
Wie Sie einen einfachen Rahmen hinzufügen ein Nerf n-Strike Elite alpha Trooper Cs - 12

Wie Sie einen einfachen Rahmen hinzufügen ein Nerf n-Strike Elite alpha Trooper Cs - 12

Also, Hallo Jungs, dies ist mein erster instructable. Und ich werde euch zeigen wie man mod diese Waffe. Zuerst müssen Sie:Eine WC-PapierrolleKlarsichtfolieIhre WaffeBandeinem permanent-Marker (optional)ein gelb/grün/rot Textmarker (optional)Zunächst
Wie Sie eine einfache LED mit der Schaltfläche "Batterie testen?

Wie Sie eine einfache LED mit der Schaltfläche "Batterie testen?

Wenn Sie einige Leds kaufen, Sie können nicht bestätigen, was die LED-Farbe ist wie Sie es bekommen. Eine einfache Möglichkeit ist diese Verwendung Knopfbatterie testen.Wir haben einige Fotos für das Problem, es ist gut, bei der Familie verwendet.
DMM Huckepack (Hinzufügen von RS-232)

DMM Huckepack (Hinzufügen von RS-232)

Es gibt Mods, die eine multimeter serielle Konnektivität zu geben, indem einige Pins Löten, aber es funktioniert nur, wenn es bereits RS-232-Fähigkeit hat. Also habe ich beschlossen, anstatt ein PIC-Multimeter von Grund auf neu bauen, würde ich aus e
Gewusst wie: Hinzufügen der Home Automation Sprachausgabe mit verknüpfen einer!

Gewusst wie: Hinzufügen der Home Automation Sprachausgabe mit verknüpfen einer!

Hallo allerseits,Heute zeige ich euch, wie Ihr Home Automation Sprachausgabe hinzugefügt.Diese werden immer eine gute Zusatz zu Ihrem Home-Automation-Projekt mit Link es einer weil Ihre Linkit ONE eine Feedback wie ein "Ich eingeschaltet haben Lichte
Hinzufügen von MP3 zu Ihrem Projekt für $3.00

Hinzufügen von MP3 zu Ihrem Projekt für $3.00

als ein Propeller Mikrocontroller Benutzer, es ist keine große Sache für WAV-Dateien mit meinem MCU zu spielen, aber MP3-Wiedergabe ist etwas zu komplex für die Propeller, die Ardunio oder PICAXE Mikrocontroller.   Einkaufen für eine Add-on-Karte fas