Hallo zusammen,
wir haben einer Schaltung mit einem Schrittmotor, Feuchtigkeitssensor und einem Taster zusammen gebastelt und den Code dazu mit Hilfe dieses Forum geschrieben.
Jetzt wollten wir zusätzlich einen Summer/Piepser reinbauen der ein Lied dazu Spielt wenn der Motor dreht.
Sprich: Der Summer spielt so lange die Musik bis er nicht mehr dreht.
Also haben wir unseren bestehenden Sketch genommen, einen aus dem I-Net gefunden Sketch für den Mario-Themen-Song und diese zusammen gewürfelt.
Soweit so gut, naja ehr weniger.
Der Summer spielt fröhlich weiter ohne die Funktion „Motor Stop“ zu berücksichtigen.
Hier mal der zusammengewürfelte Code vielleicht kann uns ja einer von euch Helfen wo bzw. was wir nicht beachtet haben bzw wo unsere Fehler ist.
#include <Stepper.h>
int SPMU = 32;
int messwert = 0;
int speakerPin = 7;
const int tasterPin = 11;
bool Freigabe = true;
bool Freigabe1 = false;
bool tasterStatus;
int length = 295; // the number of notes
char notes[] = "EE E CE G g C g e a b ia gEGA FG E CDb C g e a b ia gEGA FG E CDb GNFR E uaC aCD GNFR E 1 11 GNFR E uaC aCD L D C CC C CD EC ag CC C CDE CC C CD EC ag EE E CE G g C g e a b ia gEGA FG E CDb C g e a b ia gEGA FG E CDb EC g u aF Fa bAAAGFEC ag EC g u aF Fa bF FFEDCe ec "; // a space represents a rest
float beats[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, //Page 1
2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 4, //Page 2
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, //Page4
1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, //Page 5
1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1.3, 1.3, 1.3, 1, 1, 1, 1, 1, 1, 2 }; //Page 6
int tempo = 95;
void playTone(int ton1, int duration) {
for (long i = 0; i < duration * 1000L; i += ton1) {
tone(speakerPin, ton1);
delayMicroseconds(ton1);
}
noTone(speakerPin);
}
void playNote(char note, int duration) {
// c c# d d# e f f# g g# a a# b
char names[] = { ' ', '!', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C', 'D', 'E', 'F', 'G', 'A', 'B', 'i', 'N', 'R', 'u', '1', 'L', 'k'}; // [i = b flat] [N = G flat] [R = D#] [u = g#] [1 = C oct. 5] [L = E flat]
int tones[] = { 0, 1046, 138, 146, 155, 164, 174, 184, 195, 207, 220, 233, 246, 261, 293, 329, 349, 391, 440, 493, 523, 587, 659, 698, 783, 880, 987, 466, 740, 622, 415, 1046, 622u, 227};
// play the tone corresponding to the note name
for (int i = 0; i < 34; i++) {
if (names[i] == note) {
playTone(tones[i], duration);
}
}
}
Stepper myStepper(SPMU, 2, 3, 4, 5);
void setup() {
Serial.begin(9600);
pinMode (tasterPin, INPUT);
pinMode (speakerPin, OUTPUT);
myStepper.setSpeed(1000);
}
void loop() {
messwert = analogRead(A4);
Serial.print(F("Feuchtigkeits-Messwert:"));
Serial.println(messwert);
if ((messwert > 100) && Freigabe) {
Serial.print(F("dreht positiv Start ... "));
myStepper.step(2048);
if (F("dreht positiv Start ... ")){
for (int i = 0; i < length; i++) {
if (notes[i] == ' ') {
delay(beats[i] * tempo); // rest
} else {
playNote(notes[i], beats[i] * tempo);
}
// pause between notes
delay(tempo / 2);
}
}
Serial.println(F("Stop"));
if (F("Stop")){
noTone(speakerPin);
}
Freigabe = false;
Freigabe1 = true;
}
tasterStatus = digitalRead(tasterPin);
if ((tasterStatus == HIGH ) && Freigabe1) {
Serial.print(F("dreht negativ Start ... "));
myStepper.step(-2048);
Serial.println(F("Stop"));
Freigabe1 = false;
Freigabe = true;
}
}
Danke schon mal für eure Hilfe.