Liebes Forum,
Ich möchte ein kleines Programm auf einem qC (ATmega168 auf
ArduinoBoard) zum laufen bringen, welches folgendes ausführen wird:
Der Controller steuert 2 LEDs an. Mit einem Taster wählt man zwischen
den beiden. Die LED ist zuerst dunkel, wird langsam immer heller(PWM),
und erlischt schlussendlich und das ganze beginnt von vorne.
Bei der Betätigung des Tasters wechselt man zur anderen LED, welche dann
genau das gleiche tut. (Es ist also immer nur eine LED in Betrieb)
Eigentlich ganz simpel, das passende Programm habe ich in Processing
geschrieben und funktioniert soweit auch.
Jedoch ist es ganz wichtig, dass das Wechseln der LED nach der
Betätigung des Tasters SOFORT passiert. Das ist im Moment nicht der
Fall, das Wechseln erfolgt erst nachdem die LED wieder erlischt ist.
Was muss ich ändern? (Siehe Programm unten)
Ich erwähne hier noch, dass ich ein ziemlicher Anfänger auf diesem
Gebiet bin und nun erstmals einen Schritt in die Welt der
Mikrocontroller gewagt habe.
(Deshalb auch die für mich noch etwas einfach verständlichere Sprache
Processing)
Danke im Voraus
Gruss
1 | /* Die Schaltung besteht aus 2 LEDs. Jeweils eine LED leuchtet immer wieder auf.
|
2 | Mit dem Taster wechselt man zwischen den beiden LEDs.
|
3 | */
|
4 |
|
5 |
|
6 |
|
7 | byte ledPin[2] = { 10, 11}; // LED an Pin 10,11
|
8 | int swtch = 2; // Taster an Pin 2
|
9 | int BluePin = 10;
|
10 | int GreenPin = 11;
|
11 |
|
12 | int del = 10;
|
13 | int blue, green ;
|
14 | volatile int mode = 0;
|
15 |
|
16 | void switch_update()
|
17 | { mode++; if (mode > 1) mode=0;
|
18 | }
|
19 |
|
20 | void setup()
|
21 | { for (int n=0; n<5;n++)
|
22 | { pinMode(ledPin[n], OUTPUT);
|
23 | }
|
24 | pinMode(swtch, INPUT);
|
25 | { digitalWrite(swtch, HIGH);
|
26 | attachInterrupt(0, switch_update, RISING);
|
27 | }
|
28 | }
|
29 | void loop()
|
30 | { switch(mode)
|
31 |
|
32 | { case 0:
|
33 | { for(green=0; green < 255; green++)
|
34 | { analogWrite(GreenPin, green);
|
35 | delay(del);
|
36 | }
|
37 | }
|
38 | { analogWrite(GreenPin, 0);
|
39 | } break;
|
40 |
|
41 |
|
42 | case 1:
|
43 | { for(blue = 0; blue < 255; blue++)
|
44 | { analogWrite(BluePin, blue);
|
45 | delay(del);
|
46 | }
|
47 | { analogWrite(BluePin, 0);
|
48 |
|
49 |
|
50 | }break;
|
51 | }
|
52 | }
|
53 | }
|