Paso 6: Extendiendo el código
El código mostrado aquí se debe ser bastante sencillo si tienes cierta familiaridad con el código.
Método simple para encender todos los LEDs
void allOn() {}
int i;
para (i = 0; i < NUMBER_OF_LEDS; i ++) {}
digitalWrite (ledList [i], HIGH);
ledsOn [i] = 1;
}
}
Método simple para apagar todos los LEDs
void allOff() {}
int i;
para (i = 0; i < NUMBER_OF_LEDS; i ++) {}
digitalWrite (ledList [i], LOW);
ledsOn [i] = 0;
}
}
función auxiliar para sumar una matriz
int suma (int array[]) {}
int suma = 0;
int longitud = sizeof(array)/sizeof(int);
int i;
para (i = 0; i < longitud; i ++) {}
suma = suma + matriz [i];
}
devolver la suma;
}
destellos de los LEDs. Si más de 2 leds están actualmente en el ciclo inicia desactivándolos todos
de lo contrario el ciclo empieza girando todo en.
void allFlashing (int delayLength) {}
Si {} (summation(ledsOn) > 2)
allOff();
Delay(delayLength);
allOn();
Delay(delayLength);
} else {}
allOn();
Delay(delayLength);
allOff();
Delay(delayLength);
}
}
un método que no se utiliza realmente, pero podría ser útil en el futuro. Este método alterna LED sea actualmente
seleccionado.
void toggleCurrentLed() {}
Si (ledsOn [currentLed] == 1) {}
digitalWrite (ledList [currentLed], LOW);
ledsOn [currentLed] = 0;
} else if (ledsOn [currentLed] == 0) {}
digitalWrite (ledList [currentLed], HIGH);
ledsOn [currentLed] = 1;
}
}
se enciende el LED actual
void currentLedOn() {}
digitalWrite (ledList [currentLed], HIGH);
ledsOn [currentLed] = 1;
}
se apaga el LED actual
void currentLedOff() {}
digitalWrite (ledList [currentLed], LOW);
ledsOn [currentLed] = 0;
}
Este es un método que despide que parece enviar una luz arriba y abajo
su LED. Muy bien si usted me pregunta. Seguimiento de una variable de la dirección
y lo que es la actual Led se enciende para asegurarse de que el interruptor siempre está en el
dirección correcta.
sin efecto rebote (int delayLength) {}
Si (bounceDirection == 0) {}
Si (currentLed < NUMBER_OF_LEDS - 1) {}
currentLedOff();
currentLed ++;
currentLedOn();
Delay(delayLength);
} else if (currentLed == NUMBER_OF_LEDS - 1) {}
currentLedOff();
currentLed--;
bounceDirection = 1;
currentLedOn();
Delay(delayLength);
}
} else if (bounceDirection == 1) {}
Si (currentLed > 0) {}
currentLedOff();
currentLed--;
currentLedOn();
Delay(delayLength);
} else if (currentLed == 0) {}
currentLedOff();
currentLed ++;
currentLedOn();
bounceDirection = 0;
Delay(delayLength);
}
}
}
Actualmente este método está destinado a obtener dimmer dimmer como los alrededores.
La razón de esto es sobre todo para reducir la interferencia, al igual que en el protoboard configurar
la luz de los LEDs es muy visible por la fotorresistencia, que daría lugar a
algún comportamiento extraño.
Estas constantes se deben cambiar un poco para su circuito específico. Utilice la función
Serial.println(analogRead(Photoresistor)); para imprimir el valor actual, y
determinar los mínimos y máximos aproximados.
void allFading() {}
brillo de int = map(analogRead(photoresistor), 100, 450, 0, 255);
int i;
para (i = 0; i < NUMBER_OF_LEDS; i ++) {}
analogWrite (ledList [i], brillo);
}
}
Este método transforma la luz de la bici en una unidad de medida para la intensidad de la luz.
El número de LEDs que ilumina en un momento dado es indicativo de lo brillante que es.
Las constantes que se muestra generalmente cubrirá la iluminación de la habitación con todos los 5 LEDs
Estas constantes se deben cambiar un poco para su circuito específico. Utilice la función
Serial.println(analogRead(Photoresistor)); para imprimir el valor actual, y
determinar los mínimos y máximos aproximados.
void photometer() {}
brillo de int = map(analogRead(photoresistor), 75, 450, 0, NUMBER_OF_LEDS);
int i;
para (i = 0; i < NUMBER_OF_LEDS; i ++) {}
Si (i < brillo) {}
digitalWrite (ledList [i], HIGH);
} else {}
digitalWrite (ledList [i], LOW);
}
}
}
void loop() {}
Si (currentProgram == 0) {}
allOff();
} else if (currentProgram == 1) {}
allOn();
} else if (currentProgram == 2) {}
allFlashing(250);
} else if (currentProgram == 3) {}
Bounce(100);
} else if (currentProgram == 4) {}
allFading();
} else if (currentProgram == 5) {}
Photometer();
}
}