DM1RTZ
June 22, 2018, 1:37pm
1
Hallo,
ich habe da ein Problem.
Ich bekomme 2 Sketche alleine jeweils zum laufen.
Möchte aber nun das der Bewegungsmelder nicht nur die LED zum leuchten bringt sondern auch noch einen Sound abspielt.
Der erste Sketch ist ja ganz simpel.
void setup() {
pinMode(3,INPUT);
pinMode(4,OUTPUT);
}
void loop() {
if (digitalRead(3) == HIGH) {
digitalWrite(4, HIGH);
delay(500);
digitalWrite(4, LOW);
}
}
aber ich weiß nicht wie ich den zweiten integriere das er auch bei Pin 3 High den Sound abspielt.
#include <TMRpcm.h>
#include <SPI.h>
#include <SD.h>
#define CHIP_SELECT_PIN 4
#define SPEAKER_PIN 9
TMRpcm tmrpcm;
void setup( ) {
tmrpcm.speakerPin = SPEAKER_PIN;
Serial.begin( 9600 );
while ( !Serial ) /*mt*/ ;
if ( !SD.begin( CHIP_SELECT_PIN ) )
Serial.println( "SD fail" );
else {
tmrpcm.play( "snakec16.wav" );
delay( 5 );
}
}
void loop( ) {
}
hier sieht man wie es angeschlossen ist in den Sketch.
Kann mir vielleicht jemand einen Tipp geben wie ich das Kombiniere?
Grüße und danke im voraus.
Thomas
MaHa76
June 22, 2018, 1:41pm
2
Naja, so schwer sollte es nicht sein....
(0. delay ersetzen durch nicht blockierendes Element- Nachtwächter)
die Einbindung der Libs und der Variablen zusammen führen.
die Setups zusammenführen
die Loops zusammenführen
die Unterfunktionen zusammenführen
dann noch sicher stellen, dass sich dann Variablen nicht doppeln...
DM1RTZ
June 22, 2018, 1:48pm
3
MaHa76:
Naja, so schwer sollte es nicht sein....
(0. delay ersetzen durch nicht blockierendes Element- Nachtwächter)
die Einbindung der Libs und der Variablen zusammen führen.
die Setups zusammenführen
die Loops zusammenführen
die Unterfunktionen zusammenführen
dann noch sicher stellen, dass sich dann Variablen nicht doppeln...
Bin leider noch totaler anfänger was das angeht.
Denke das ist so nicht der richtige ansatz oder?
#include <TMRpcm.h>
#include <SPI.h>
#include <SD.h>
#define CHIP_SELECT_PIN 4
#define SPEAKER_PIN 9
TMRpcm tmrpcm;
void setup( ) {
pinMode(3,INPUT);
pinMode(2,OUTPUT);
tmrpcm.speakerPin = SPEAKER_PIN;
}
void loop( ) {
if (digitalRead(3) == HIGH) {
digitalWrite(2, HIGH);!SD.begin( CHIP_SELECT_PIN );
}
else {
tmrpcm.play( "tardis.wav" );
delay(16000);
digitalWrite(2, LOW);
}
}
Der Weg von MaHa76 ist schon der Richtige.
Diese Zeile
digitalWrite(2, HIGH);!SD.begin( CHIP_SELECT_PIN );
sieht komisch aus.
Gruß Tommy
DM1RTZ
June 22, 2018, 1:58pm
5
die soll bewirken das wenn Pin 2 High schaltet auch gleichzeitig der Sound der SD Karte abgespielt wird.
Wenn ich wüßte wie es richtig auszusehen hat dann würde ich ja nicht fragen.
Sorry
DM1RTZ:
die soll bewirken das wenn Pin 2 High schaltet auch gleichzeitig der Sound der SD Karte abgespielt wird.
Wenn ich wüßte wie es richtig auszusehen hat dann würde ich ja nicht fragen.
Sorry
Dann musst du noch eine "if-Abfrage " dazu einsetzen.
In der if-Abfrage setzt du deine Anweisung, die deine SD-Karte startet.
Allerdings ist das digitalWrite dann falsch, das muss digitalRead heißen.
Und ein wenig Grundlagen lernen, sollte auch helfen.
Diese Anweisungen sind alles prima in der IDE in Beispielen vorhanden.
Probier mal:
#include <TMRpcm.h>
#include <SPI.h>
#include <SD.h>
#define CHIP_SELECT_PIN 4
#define SPEAKER_PIN 9
TMRpcm tmrpcm;
void setup( ) {
pinMode(3,INPUT);
pinMode(4,OUTPUT);
tmrpcm.speakerPin = SPEAKER_PIN;
Serial.begin( 9600 );
while ( !Serial ) /*mt*/ ;
if ( !SD.begin( CHIP_SELECT_PIN ) )
Serial.println( "SD fail" );
}
void loop( ) {
if (digitalRead(3) == HIGH) {
digitalWrite(4, HIGH);
tmrpcm.play( "snakec16.wav" );
delay(16000);
digitalWrite(4, LOW);
}
}
Gruß Tommy
DM1RTZ
June 22, 2018, 4:25pm
9
Tommy56:
Probier mal:
#include <TMRpcm.h>
#include <SPI.h>
#include <SD.h>
#define CHIP_SELECT_PIN 4
#define SPEAKER_PIN 9
TMRpcm tmrpcm;
void setup( ) {
pinMode(3,INPUT);
pinMode(4,OUTPUT);
tmrpcm.speakerPin = SPEAKER_PIN;
Serial.begin( 9600 );
while ( !Serial ) /mt / ;
if ( !SD.begin( CHIP_SELECT_PIN ) )
Serial.println( "SD fail" );
}
void loop( ) {
if (digitalRead(3) == HIGH) {
digitalWrite(4, HIGH);
tmrpcm.play( "snakec16.wav" );
delay(16000);
digitalWrite(4, LOW);
}
}
Gruß Tommy
Funktioniert.
Besten Dank.
Jetzt muss ich nur noch rausfinden warum der Blöde lautsprecher knackt die ganze Zeit über
1 Like
DM1RTZ:
Jetzt muss ich nur noch rausfinden warum der Blöde lautsprecher knackt die ganze Zeit über
Weil der Aufbau nicht unbedingt für gute Qualität spricht.
Da solltest du besser einen echten MP3-Player verwenden.
DM1RTZ
June 22, 2018, 4:41pm
11
ist nen argument.
Geht aber nur um einen Ton von Paar Sekunden.
Werde mal bisschen testen noch. Vielleicht bekomme ich es reduziert. das reicht schon
In dem oben gezeigten Schaltplan fehlt noch ein RC-Glied zur Glättung der Ausgabe. Ohne bekommt der Lautsprecher ein PWM-Signal, was einfach bescheiden klingt. Man müsste etwas experimentieren um die Wellenform einigermaßen geglättet zu bekommen.