Home > Technologie > Arduino Tongenerator SD Log Dann Wiedergabe

Arduino Tongenerator SD Log Dann Wiedergabe

0
Advertisement

Arduino Tongenerator SD Log Dann Wiedergabe

Dies ist, wie Sie uns Funkwellen, kosmische Strahlen, elektromag-netic Störungen von Handys und Leuchtstoffröhren, und so weiter zu generieren zufällige Töne auf Ihrem Arduino dann speichern Sie sie und SD-Karte und spielen sie dann wieder.

Schritt 1: Was Sie brauchen.

Arduino Tongenerator SD Log Dann Wiedergabe

Was du brauchst:
Eine Seeed Studio SD Card Shield (auch die Installation von SDFat Arduino Library) es bekommen hier .
Ein kleiner 8 Ohm Lautsprecher
Drähte zum Anschluss des Lautsprechers

Schritt 2: Anschlüsse

Arduino Tongenerator SD Log Dann Wiedergabe

Der Code für das SD-Kartenschild verwendet Stifte (10, 11, 12 und 13).
Mein Code verwendet Pin 8 für den Lautsprecher.

So zuerst befestigen Sie Sd-Karten-Schild, dann schließen Sie Ihren Lautsprecher an Stift 8 an.

Schritt 3: Geben Sie den Code ein

Arduino Tongenerator SD Log Dann Wiedergabe

#include <SdFat.h>

// Dateiname für dieses Beispiel
Char name [] = "NEWSONG.LOG";
Char toneline [5];
Int n, Halter;

// SD-Chip-Auswahlpin
Const uint8_t chipSelect = SS;

// Dateisystemobjekt
SdFat sd;

// Erstellen Sie einen seriellen Stream
ArduinoOutStream cout (seriell);

// speichern Sie Fehlerstrings im Flash, um RAM zu speichern
#define error (s) sd.errorHalt_P (PSTR (s))

Int playtone;
// int dlay;

Void setup ()
{
PinMode (8, AUSGANG);
// pinMode (A5, INPUT);
// Serial.begin (9600);
If (! Sd.begin (chipSelect, SPI_HALF_SPEED)) sd.initErrorHalt ();
Startupsong ();
aufrechtzuerhalten.
Void Schleife ()
{

If (! Sd.begin (chipSelect, SPI_HALF_SPEED)) sd.initErrorHalt ();
Ofstream sdout (name, ios :: out | ios :: app);

If (! Sdout) Fehler ( "open failed");
Verzögerung (200);

RandomSeed (analogRead (5));
/ * Wenn Sie einen nicht angeschlossenen Analog-Pin haben,
Wird es zufälliges Rauschen aus der
Umgebung (Radiowellen,
Kosmische Strahlen, elektromagnetische Störungen
Von Handys und Leuchtstofflampen,
und so weiter).*/

Lang dlayer = zufällig (180000) + 180000;
/ * Ursprünglich war dieser Code für einen zufälligen Annoyer mit mindestens 3 Minuten Verspätung. So können Sie den dlayer zu einer kürzeren Zeit ändern, wenn Sie wünschen. * /
// int dlayer = 180000;
// while (dlayer <0) {dlayer = zufällig (180000) +180000;}
// Serial.end ();
// Serial.begin (9600);
// Serial.print ( "Delay 1 is");
// Serial.print (dlayer / 1000, DEC);
// Serial.print ( "Sekunden, aprox");
// Serial.print (dlayer / 1000/60, DEC);
// Serial.println ( "Minuten");
Verzögerung (Dlayer);

Playtone = random (2000);
// Serial.print ( "Ton 1 ist");
// Serial.println (playtone);
Ton (8, Playton);
Verzögerung (50);
NoTone (8);
Verzögerung (50);
Sdout << playtone << endl;
// sdout.close ();

Playtone = zufällig (7000);
// Serial.print ( "Tone 2 is");
//Serial.println(playtone);
Ton (8, Playton);
Verzögerung (50);
NoTone (8);
Verzögerung (50);
Sdout << playtone << endl;

Playtone = zufällig (5000);
//Serial.print ("Tone 3 ist ");
//Serial.println(playtone);
Ton (8, Playton);
Verzögerung (50);
NoTone (8);
Verzögerung (50);
Sdout << playtone << endl;

Sdout.close ();

Readsong ();
aufrechtzuerhalten.

Void startupsong () {
// Serial.println ( "Starten des Songs.");
Ton (8, 2500);
Verzögerung (50);
NoTone (8);
Ton (8, 2500);
Verzögerung (50);
NoTone (8);
Verzögerung (50);
Ton (8, zufällig (7000));
Verzögerung (zufällig (250));
NoTone (8);
Verzögerung (50);
Ton (8, zufällig (5000));
Verzögerung (50);
NoTone (8);
Verzögerung (50);
aufrechtzuerhalten.

Void readsong () {
SdFile rdfile ( "SONG.LOG", O_READ);
Während ((n = rdfile.fgets (toneline, sizeof (toneline)))> 0) {
aufrechtzuerhalten.
Wenn (toneline [n - 1] == '\ n') {
Cout << '>' << toneline;
} Else {
Cout << '#' << toneline << endl;
aufrechtzuerhalten.
* /
Halter = atoi (Tonne);
Ton (8, Halter);
Verzögerung (50);
NoTone (8);
Verzögerung (50);
// Serial.print ( "+");
// Serial.println (Halter);
// cout << Inhaber << endl;
aufrechtzuerhalten.
// char c;
// ifstream-Datei ( "SOUNDS.LOG");
// if (! File.is_open ()) sd.errorHalt ( "open failed");

// kopiere die Datei in Serial
// while ((c = file.get ())> = 0) cout << c;

// cout << "Done" << endl;
aufrechtzuerhalten.

Related Reading