Machen Arduino Basics Sound 5 Steps (mit Bildern)

Machen Arduino Basics Sound 5 Steps (mit Bildern)

Das Arduino ist sicherlich der kleine Mikro-Controller, der nur konnte. Sie können mit ihm so viel tun! Wir bei instructables haben so viel Spaß mit unserem Arduinos haben, wollten wir die instructables Gemeinschaft zeigen, wie einige der Grundlagen zu tun!







Das erste Tutorial gehen, wie Sie Ihre Arduino machen einfache Töne zu machen, und schalten Sie die Arduino in Mini-Tongenerator.

Schritt 1: Supplies

Machen Arduino Basics Sound 5 Steps (mit Bildern)

Für dieses Tutorial benötigen Sie die folgenden

1 kleine 8-Ohm-Lautsprecher
1 arduino Bord
1Taster
1 k Widerstand 10
einige feste Kerndraht

Für meine Zwecke verwendete ich die adafruit Protoshield mir es zu helfen, lag meine Sachen aus!

Schritt 2: Abspielen einer Melodie

Machen Arduino Basics Sound 5 Steps (mit Bildern)

Zuerst begann zu bekommen, sollten Sie die Standardmelodie Programm ausführen, so dass Sie wissen, was Sie von dem Arduino zu erwarten.

Sie können die Melodie Beispiel aus der Arduino IDE zu bekommen. Aber gerade hier für den Fall ist der Code:

Schaltung:
* 8-Ohm-Lautsprecher auf digitalem Stift 8

Dieses Beispiel-Code ist in der Public Domain.

// Noten der Melodie:
int Melodie [] = NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4>;

// Notendauern: 4 = Viertelnote, 8 = Achtelnote, etc .:
int noteDurations [] = 4, 8, 8, 4,4,4,4,4>;

Leere setup () // über die Noten der Melodie durchlaufen:
for (int thisNote = 0; thisNote < 8; thisNote++)

// die Notendauer zu berechnen, nehmen Sie 1 Sekunde
// durch den Notentyp unterteilt.
//z.B. Viertelnote = 1000/4, Achtelnote = 1000/8 usw.
int noteDuration = 1000 / noteDurations [thisNote];
Ton (8, Melodie [thisNote], noteDuration);

// um die Noten zu unterscheiden, stellen eine minimale Zeit zwischen ihnen.
// die Dauer + 30% Anmerkung scheint gut zu funktionieren:
int pauseBetweenNotes = noteDuration * 1.30;
Verzögerung (pauseBetweenNotes);
// stoppen den Ton spielen:
noTone (8);
>
>

Leere Schleife () // keine Notwendigkeit, die Melodie zu wiederholen.
>
>

Sie finden auch eine Datei benötigen, die Ihre Töne definiert, dass auch in dem IDE sein sollte, aber hier ist es. Kopieren Sie einfach diesen Text in eine .h-Datei im selben Verzeichnis wie Ihr Code:
/ *************************************************
* Öffentliche Konstanten
************************************************* /

#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
#define NOTE_G1 49
#define NOTE_GS1 52
#define NOTE_A1 55
#define NOTE_AS1 58
#define NOTE_B1 62
#define NOTE_C2 65
#define NOTE_CS2 69
#define NOTE_D2 73
#define NOTE_DS2 78
#define NOTE_E2 82
#define NOTE_F2 87
#define NOTE_FS2 93
#define NOTE_G2 98
#define NOTE_GS2 104
#define NOTE_A2 110
#define NOTE_AS2 117
#define NOTE_B2 123
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661






#define NOTE_A6 1760
#define NOTE_AS6 1865
#define NOTE_B6 1976
#define NOTE_C7 2093
#define NOTE_CS7 2217
#define NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
#define NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_AS7 3729
#define NOTE_B7 3951
#define NOTE_C8 4186
#define NOTE_CS8 4435
#define NOTE_D8 4699
#define NOTE_DS8 4978


laden Sie es einfach und Haken Ihre Lautsprecher wie Sie hier im Bild zu sehen, die positiven 8, auf Masse negativ auf Pin, Sie werden Sie eine kleine Melodie hören.

Schritt 3: Die Tone-Funktion

Abspielen von Musik im Arduino führt eine Funktion als Ton bekannt (). Diese Funktion steuert Ihre Fähigkeit, Musik zu spielen. Im Code wird es in etwa so aussehen:

Ton (pin, Frequenz, Dauer)
oder
Ton (pin, Frequenz)

Wo Stift der Stift wird der Lautsprecher angeschlossen zu, die Frequenz ist der Ton in Hertz und die Dauer, wie lange in Millisekunden.

Wenn Sie die zweite Konvention verwenden, um den Ton stoppen Sie eine noTone () Funktion haben muss.

Im vorherigen Schritt für die Melodie, mußte man die pitches.h Datei enthält. Diese Datei gibt Ihnen nur eine Variable für jedes getunten Note in Hertz, so dass Sie müssen nicht grundlegende Hinweise erarbeiten. Dies macht Songs zu schreiben viel einfacher!

Hallo Instructables Forum,


Ich brauche ein VMA02 Schild auszulösen, die einen Ton, mit einer PIR-Sensor Bewegung von Arduino reproduzieren würden.

Mit den Codes liefern,
Ich schaffte es beide separat zu aktivieren,
Ich meine, aktiviert der PIR-Sensor eine LED,
und,
die VMA02 Schild aktiviert die aufgezeichneten Töne durch die Böden.

// VMA02 Code //
#einschließen
ISD1700 Chip (10); // Initialisieren ChipCorder mit
// SS bei Arduino digitalen Stift 10

int apc = 0;
int vol = 0; // Volumen 0 = MAX, 7 = min
int StartAddr = 0x10;
int EndAddr = 0x2DF;
int inInt = 0;
Leere setup ()
apc = apc | vol; // D0, D1, D2

apc = apc | 0x50; // D4- D6 wählen MIC REC
// apc = apc | 0x00; // D4- D6 wählen REC-AE
// apc = apc | 0x10; // D4- D6 wählen MIC + REC-AE

Serial.begin (9600);
Serial.println ( "Sketch wird gestartet");
>
Hohlraumschleife ()
char c;

if (Serial.available ())
/* Einschalten */
chip.pu ();
c = Serial.read ();
Schalter (c)
Fall 'A':
Serial.println (chip.rd_apc (), BIN);
Unterbrechung;
case 'Y':
chip.play ();
Unterbrechung;
Fall 'P':
chip.stop ();
Verzögerung (500);
Unterbrechung;
Fall 'E':
chip.erase ();
Verzögerung (500);
Unterbrechung;
case 'R':
chip.rec ();
Unterbrechung;
Fall 'F':
chip.fwd ();
Verzögerung (500);
Unterbrechung;
case 'Z':
chip.g_erase ();
Verzögerung (500);
Unterbrechung;
Fall 'I':
Serial.println (chip.devid (), BIN);
Unterbrechung;
Fall 'W':
Serial.println (apc, BIN);
chip.wr_apc2 (APC); //
Unterbrechung;
Fälle':
Serial.println (chip.rd_status (), BIN);
Unterbrechung;
Fall '>':
StartAddr = SerialIn ();
Serial.print ( "StartAddr:");
Serial.println (StartAddr);
Unterbrechung;
Fall '<':
EndAddr = SerialIn ();
Serial.print ( "EndAddr:");
Serial.println (EndAddr);
Unterbrechung;
case 'y':
chip.set_play (StartAddr, EndAddr);
Unterbrechung;
case 'R':
//chip.set_erase(startAddr,endAddr);
// Verzögerung (500);
chip.set_rec (StartAddr, EndAddr);
Unterbrechung;
Fall 'e':
chip.set_erase (StartAddr, EndAddr);
Verzögerung (500);
Unterbrechung;

>
Serial.print ( "Status --->");
Serial.print (chip.CMD_ERR () "CMD_ERR": "OK"?);
Serial.print (chip.PU () "PU": "NO PU"?);
Serial.print (chip.RDY () "RDY": "Not_RDY");
Serial.print (chip.rd_status (), BIN);
Serial.println ();
Verzögerung (1000);
>
>
int SerialIn () inInt = 0;

while (Serial.available () <= 0)
Verzögerung (300);
>
while (Serial.available ()) // das neue Byte erhalten:
char c = Serial.read ();
// fügen Sie es den input:
inInt = (inInt * 10) + (c-48);
// Wenn das eingehende Zeichen ein Zeilenumbruch ist, einen Flag
// so kann die Hauptschleife, etwas dagegen tun:
if (c == '\ n') // stringComplete = true;
Serial.print ( "stringComplete");
>
>
// c = Serial.read () - 48;
// mess (c);
return (inInt);

>
/ *
Leer mess (int num) Serial.print ( "num:");
Serial.println (NUM);
StartAddr = (0x50 * num) + 0x10;
EndAddr = (StartAddr + 0x50) -1;
Serial.print ( "StartAddr:");
Serial.print (StartAddr, HEX);
Serial.print ( "- EndAddr:");
Serial.println (EndAddr, HEX);

/////////////////////////////
// VARS
// die Zeit geben wir den Sensor zu kalibrieren (10-60 Sekunden nach dem Datenblatt)
int calibrationTime = 30;

// die Zeit, wenn der Sensor einen niedrigen Impulsausgänge
lange unsigned int LOWIN;

// die Menge von Millisekunden der Sensor niedrig sein
// bevor wir übernehmen alle Bewegung zum Stillstand gekommen ist
lange unsigned int Pause = 5000;

boolean lockLow = true;
boolean takeLowTime;

int pirPin = 3; // das Digitalstift an den Ausgang des PIR-Sensor verbunden ist
int ledPin = 13;

// geben einige Zeit, um den Sensor zu kalibrieren
Serial.print ( "Kalibrieren Sensor" bezeichnet);
for (int i = 0; i < calibrationTime; i++)Serial.print(".");
Verzögerung (1000);
>
Serial.println ( "done");
Serial.println ( "ACTIVE SENSOR");
Verzögerung (50);
>

if (digitalRead (pirPin) == HIGH) digital (ledPin, HIGH); // die LED visualisiert den Sensoren Ausgangspin Zustand
if (lockLow)<
// stellt sicher, dass wir für einen Übergang auf LOW warten, bevor weitere Ausgabe gemacht wird:
lockLow = false;
Serial.println ( "---");
Serial.print ( "motion bei detected");
Serial.print (Millis () / 1000);
Serial.println ( "sec");
Verzögerung (50);
>
takeLowTime = true;
>

if (digitalRead (pirPin) == LOW)<
digital (ledPin, LOW); // die LED visualisiert den Sensoren Ausgangspin Zustand

if (takeLowTime) LOWIN = Millis (); // die Zeit des Übergangs von hoch zu niedrig sparen
takeLowTime = false; // sicherstellen, ist dies nur zu Beginn einer LOW-Phase getan
>
// wenn der Sensor für mehr als die vorgegebene Pause niedrig ist,
// wir davon ausgehen, dass keine Bewegung mehr passieren
if (lockLow - millis () - LOWIN> Pause)<
// macht diesen Codeblock sicher erst wieder ausgeführt wird, nachdem
// eine neue Bewegungssequenz erfasst worden ist
lockLow = true;
Serial.print ( "motion endete an"); //Ausgabe
Serial.print ((Millis () - Pause) / 1000);
Serial.println ( "sec");
Verzögerung (50);
>
>
>


Ich brauche beiden Mechanismen zu vereinigen,
Aktivieren Sie einen Ton vom PIR-Sensor ausgelöst.

Wenn jemand mir helfen kann,
Ich würde es schätzen.







In Verbindung stehende Artikel