4. Cloud-Musikspieler¶
Das Ziel dieses Projekts ist es, einen Musikspieler mit Blynk zu erstellen. Die Musik wird auf dieselbe Weise wie in 5.7 Tone() oder noTone() abgespielt, indem das Lied im Programm geschrieben und mit einem passiven Summer abgespielt wird. In diesem Beispiel können wir jedoch den Schalter klicken, um die Wiedergabe zu starten/anhalten und den Schieberegler verschieben, um den Wiedergabefortschritt zu ändern.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
1. Schaltkreis aufbauen
Bemerkung
Das ESP8266-Modul erfordert einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten. Stellen Sie daher sicher, dass die 9V-Batterie angeschlossen ist.
2. Dashboard bearbeiten
Erstellen Sie einen Datastream vom Typ Virtual Pin auf der Datastream-Seite als den vom später hinzugefügten Slider-Widget oder Code geänderten Wert. Setzen Sie den DATENTYP auf Integer und MIN und MAX auf 0 und 30.
Erstellen Sie auch einen anderen Datastream vom Typ Virtual Pin, um den Musiknamen anzuzeigen, und setzen Sie den DATENTYP auf
String
.Gehen Sie zur Wed Dashboard-Seite, ziehen Sie ein Switch-Widget und setzen Sie Datastream auf V0 (V0 ist bereits in 2. Daten von Blynk abrufen eingestellt); ziehen Sie ein Label-Widget und setzen Sie es auf V3; ziehen Sie ein Slider-Widget und setzen Sie es auf V2.
Bemerkung
Ihre virtuellen Pins könnten sich von meinen unterscheiden, Ihre haben Vorrang, aber Sie müssen die entsprechende Pin-Nummer im Code ändern.
3. Code ausführen
Öffnen Sie die Datei
4.cloud_music_player.ino
unter dem Pfad3in1-kit\iot_project\4.cloud_music_player
.Ersetzen Sie die
Template ID
,Device Name
undAuth Token
durch Ihre eigenen Angaben. Sie müssen auch diessid
und daspassword
des von Ihnen verwendeten WLANs eingeben. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R4-Boards mit Blynk herstellen.Wählen Sie das richtige Board und den Port aus und klicken Sie auf die Upoad-Taste.
Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Meldung, wie eine erfolgreiche Verbindung.
Bemerkung
Wenn die Meldung
ESP is not responding
beim Verbinden erscheint, befolgen Sie bitte diese Schritte.Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.
Setzen Sie das ESP8266-Modul zurück, indem Sie den Pin RST 1 Sekunde lang auf GND legen und dann abziehen.
Drücken Sie die Reset-Taste auf dem R4-Board.
Manchmal müssen Sie den obigen Vorgang 3-5 Mal wiederholen. Bitte haben Sie Geduld.
Nun können Sie Blynks Button Control Widget verwenden, um die Musik zu starten/pausieren und den Slider, um den Wiedergabefortschritt anzupassen. Sie sehen auch den Namen des Musikstücks.
Wenn Sie Blynk auf mobilen Geräten verwenden möchten, verweisen Sie bitte auf Wie verwendet man Blynk auf einem Mobilgerät?.
Wie funktioniert das?
Der Datenstrom V0 wird verwendet, um den Status des Switch-Widgets abzurufen und der Variable musicPlayFlag zuzuweisen, die das Pausieren und Abspielen der Musik steuert.
int musicPlayFlag=0;
BLYNK_WRITE(V0)
{
musicPlayFlag = param.asInt(); // START/PAUSE MUSIC
}
Der Datenstrom V2 wird verwendet, um den Wert des Slider-Widgets abzurufen und ihn der Variable scrubBar zuzuweisen, wenn der Slider verschoben wird.
int scrubBar=0;
BLYNK_WRITE(V2)
{
scrubBar=param.asInt();
}
Wenn das Gerät mit der Blynk Cloud verbunden ist, schreiben Sie den Musiknamen für den Datenstrom V3 und zeigen Sie ihn dann mit dem Label-Widget an.
BLYNK_CONNECTED() {
String songName = "Ode to Joy";
Blynk.virtualWrite(V3, songName);
}
Der Blynk Timer wird jede Sekunde ausgeführt. Die Musik wird abgespielt, wenn musicPlayFlag nicht 0 ist, d.h. das Switch-Widget ist EIN.
Sobald zwei Noten gespielt werden, wird die Variable für die Fortschrittsleiste scrubBar
um 2 erhöht, und der Wert wird dann in die Blynk Cloud geschrieben, die den Wert des Slider-Widgets synchronisiert.
void myTimerEvent()
{
if(musicPlayFlag!=0)
{
tone(buzzerPin,melody[scrubBar],250);
scrubBar=(scrubBar+1)%(sizeof(melody)/sizeof(int));
delay(500);
tone(buzzerPin,melody[scrubBar],250);
scrubBar=(scrubBar+1)%(sizeof(melody)/sizeof(int));
Serial.println(scrubBar);
Blynk.virtualWrite(V2, scrubBar);
}
}