Files
Pi2ezoPlayer/player.c
2016-09-11 13:57:07 +02:00

38 lines
1.1 KiB
C

#include <wiringPi.h>
#include <softTone.h>
#include "player.h"
#define PIN 0 //Realer pin 11
int setupSoftTone(void) {
int returncode = 0;
returncode += wiringPiSetup(); //Braucht root Rechte
returncode += softToneCreate(PIN);
return returncode; // >0 --> error
}
void play(int *notes, int *durations, int songlength) {
int nDuration, pauseBetweenNotes, thisNote;
for (thisNote = 0; thisNote < songlength; thisNote++) {
/**
* Um die Zeit der Note zu berechnen muss eine Sekunde durch
* die Laenge der Note geteilt werden.
*/
nDuration = 1000 / *(durations + thisNote);
softToneWrite(PIN, *(notes + thisNote));
delay(nDuration);
softToneWrite(PIN, 0);
/**
* Um die Noten voneinander zu unterscheiden,
* sollte eine Pause dazwischen sein.
* Diese wird später mit dem Beschleunigungssensor
* gesteuert. Vorerst sind es aber 30%
*/
pauseBetweenNotes = nDuration * 1.30;
delay(pauseBetweenNotes);
// Sicherheitshalber Ton ausschalten
softToneWrite(PIN, 0);
}
}