Hallo,
also ich habe mit dem programmieren angefangen, stecke aber gerade etwas fest. Ich hänge mal den Code an, damit es vielleicht etwas verständlicher wird.
int LEDstart=0;
int LEDstop=1;
int taster=2;
int LEDtaster=3;
int LEDeins=4;
int LEDzwei=5;
int LEDdrei=6;
int LEDvier=7;
int LEDfuenf=8;
int LEDsechs=9;
int LEDsieben=10;
int LEDacht=11;
int LEDneun=12;
int LEDzehn=13;
int merker=0;
int tasterstatus=0;
int helligkeit= 0;
int fadeschritte= 5;
int pinArray[] = {0,0,0,4,5,6,7,8,9,10,11,12,13,0,0,0};
int pinCount = 16;
int activePin = 2;
int dx = 1;
int mintime = 150; // Durchlaufzeit
void setup()
{
pinMode(LEDeins, OUTPUT);
pinMode(LEDzwei, OUTPUT);
pinMode(LEDdrei, OUTPUT);
pinMode(LEDvier, OUTPUT);
pinMode(LEDfuenf, OUTPUT);
pinMode(LEDsechs, OUTPUT);
pinMode(LEDsieben, OUTPUT);
pinMode(LEDacht, OUTPUT);
pinMode(LEDneun, OUTPUT);
pinMode(LEDzehn, OUTPUT);
pinMode(LEDstart, OUTPUT);
pinMode(taster, INPUT);
pinMode(LEDstop, OUTPUT);
pinMode(LEDtaster, OUTPUT);
Serial.begin(9600);
for (int i=0; i< pinCount; i++) {
if (pinArray[i] != 0) {
pinMode(pinArray[i], OUTPUT);
}
}
}
void loop()
{
tasterstatus=digitalRead(taster);
if ((tasterstatus == LOW)&&(merker==0))
{
analogWrite(LEDtaster, helligkeit); //Taster LED faden lassen
helligkeit = helligkeit + fadeschritte;
delay(10);
if (helligkeit == 0 || helligkeit == 220)
{
fadeschritte = -fadeschritte;
}
digitalWrite(LEDstop, HIGH); //ohne Funktion, da LEDstop dauerhaft an ist
for (int i=0; i<pinCount; i++) { //Lauflicht
digitalWriteNot0(pinArray[i], LOW);
}
if (activePin == (pinCount-1)) {
activePin = (pinCount - 2);
dx = -1;
}
if (activePin == 0) {
activePin = 1;
dx = 1;
}
activePin += dx;
digitalWriteNot0(pinArray[activePin], HIGH);
digitalWriteNot0(pinArray[activePin-dx], HIGH);
digitalWriteNot0(pinArray[activePin-2*dx], HIGH);
Serial.print(" - ");
Serial.println(activePin);
delay(mintime);
}
if((tasterstatus == HIGH)&&(merker==0))
{
digitalWrite(LEDstop, LOW); //ohne Funktion?
digitalWrite(LEDstart, HIGH); //LED ebenfalls dauerhaft an?
digitalWrite(LEDeins, HIGH);
digitalWrite(LEDtaster, HIGH);
digitalWriteNot0(pinArray[activePin], LOW);
digitalWriteNot0(pinArray[activePin-dx], LOW);
digitalWriteNot0(pinArray[activePin-2*dx], LOW);
merker=1;
delay(50);
}
if ((tasterstatus == LOW)&&(merker==1))
{
merker=2;
}
if ((tasterstatus == HIGH)&&(merker==2))
{
digitalWrite(LEDeins, LOW);
merker=3;
delay(50);
}
if ((tasterstatus == LOW)&&(merker==3))
{
for (int i=0; i<pinCount; i++) { //Kann ich hier die Schleife erneut einsetzen?
digitalWriteNot0(pinArray[i], LOW);
}
if (activePin == (pinCount-1)) {
activePin = (pinCount - 2);
dx = -1;
}
if (activePin == 0) {
activePin = 1;
dx = 1;
}
activePin += dx;
digitalWriteNot0(pinArray[activePin], HIGH);
delay(mintime+analogRead(0)/4);
merker=4;
}
if ((tasterstatus == HIGH)&&(merker==4))
{
merker=5;
delay(50);
}
if ((tasterstatus == LOW)&&(merker==5))
{
merker=0;
}
Serial.print("Merker= ");
Serial.println(merker);
} //Loop ENDE
void digitalWriteNot0(int pin, boolean state) {
if (pin > 0) {
digitalWrite(pin, state);
}
}
Beim anschalten läuft wie gewollt das Lauflicht durch, und die LEDtaster faded. Jedoch leuchten die Led´s von Start und Stop dauerhaft. Könnte das daran liegen, dass ich diese auf den Pins 0 und 1 liegen habe? also RX0 und TX1.
Nach Betätigung des Tasters geht wie gewollt die LEDeins an und das Lauflicht hört auf zu laufen, jedoch nach erneuter Betätigung des Tasters fängt dieses nicht wieder an zu laufen, sonders es geht nur eine zufällige Led an. Könnte das daran liegen, das die for-Schleife im Hintergrund weiter läuft und bei der erneuten Betätigung der Befehl digitalWriteNot0(pinArray[activePin], HIGH); ausgeführt wird?
MfG Felix