Hallo alle zusammen,
ich bin noch ganz neu in der Arduino Welt und habe mich jetzt mal damit versucht einen Buzzer zu bauen. Soweit funktioniert auch alles, wie ich es mir gedacht habe. Die LEDs sollen alle blinken und wenn ein Buzzer gedrückt wurde sollen alle LEDs ausgehen, bis auf die, zu der der Buzzer gehört. Doch wenn alle LEDs leuchten blinken sie in einer relativ hohen Frequenz und wenn ich dann den Buzzer betätige blinkt wie gewollt nur noch eine LED, aber mit einer viel kleineren Frequenz.
Ich habe noch zur Veranschaulichung ein Video auf Youtube hochgeladen: - YouTube
Hier ist noch mein Code:
int buttonState[] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0};
int State[] = {1 ,1 ,1 ,1 ,1 ,1 ,1 ,1};
int stopp = 0;
int zaeler = 0;
int richtung = 0;
long interval = 40;
long previousMillis = 0;
const int PWMTabelle [32] =
{
0, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 10, 11, 13, 16, 19, 23,
27, 32, 38, 45, 54, 64, 76, 91, 108, 128, 152, 181, 220, 255
};
void setup() {
for (int i = 0; i <=7; i++) {
pinMode(30+i,INPUT);
pinMode(4+i,OUTPUT);
}
}
void blinken(int ledPin) {
analogWrite(ledPin, PWMTabelle[zaeler]);
if (richtung == 0) {
zaeler++;
}
else if (richtung == 1) {
zaeler--;
}
if (zaeler == 31) {
richtung = 1;
}
if (zaeler == 1) {
richtung = 0;
}
}
void loop() {
//////////////gucken wer gedrückt, alle anderen werden auf 0 gesetzt uns somit auf aus///
for (int i = 0; i <= 7; i++) {
buttonState[i] = digitalRead(30+i);
if ((buttonState[i] == HIGH) && (stopp == 0)) {
State[i] = 1;
for (int j = 0; j <=7; j++) {
if (j != i) {
State[j] = 0;
}
}
stopp = 1;
}
}
////////////////LEDs ausschalten///////////////
for (int i = 0; i <= 7; i++) {
if ((State[i] == 0) && (stopp == 1)) {
digitalWrite(4+i, LOW);
}
}
////////////LED blinken/////////////////
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
for (int i = 0; i <= 7; i++) {
if (State[i] == 1) {
blinken(4+i);
}
}
}
}
Ich hoffe ihr könnt mir weiterhelfen und vielen Dank schonmal
Nachtrag:
In dem Testaufbau auf dem Video habe ich erstmal nur 3 anstatt 8 LEDs benutzt, aber das sollte ja eigentlich keinen Unterschied machen oder?