INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Piezosummer und Schrittmotor
20.12.2015, 15:40
Beitrag #1
Piezosummer und Schrittmotor
Hallo zusammen,

wir haben einer Schaltung mit einem Schrittmotor, Feuchtigkeitssensor und einem Taster zusammen gebastelt und den Code dazu 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.

Noch am rande wir sind absolute Anfänger wenn möglich leicht verständlich erklären :-D
Code:
#include <Stepper.h>

int SPMU = 32;
int messwert = 0;
int speakerPin = 7;

const int tasterPin = 11;

bool tasterStatus;
bool Freigabe = true;
bool Freigabe1 = false;


Stepper myStepper(SPMU, 2, 3, 4, 5);

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);
      }
    }
}

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;
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Haltestrom Schrittmotor reduzieren TimF 3 351 24.10.2016 12:33
Letzter Beitrag: Binatone
  Schrittmotor Clemens55555 9 757 25.08.2016 10:15
Letzter Beitrag: Binatone
  Schrittmotor soll auf Tasterdruck bis zum Endschalter fahren Wurstbemme 11 1.622 08.01.2016 11:56
Letzter Beitrag: hotsystems
  Problem mit 2 Potis und Schrittmotor Sven90 1 772 24.09.2015 10:19
Letzter Beitrag: Bitklopfer
  Schrittmotor Problem mit LCD Thrillhouse 3 855 30.07.2015 19:55
Letzter Beitrag: hotsystems
  Hilfe ist gefragt bei einem Schrittmotor tsmoke13 7 1.215 02.06.2015 15:05
Letzter Beitrag: Bitklopfer
Lightbulb Fragen zu Ablauf/Schrittmotor/Referenzfahrt Tom5000 4 1.750 09.09.2014 05:11
Letzter Beitrag: Corvus
  Start + Stop Tasten für Schrittmotor Dortmunder85 3 7.421 27.08.2013 17:51
Letzter Beitrag: rkuehle

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste