Meillä on seuraavanlainen ongelma: yritämme saada ledit syttymään satunnaisessa järjestyksessä millis -toiminnon avulla (koska tässä ei voinut käyttää delay -toimintoa). Olemme testanneet, että satunnaisfunktio toimii koodissamme delayn avulla. Koodin lopussa olevan digitalWriten sulkeissa on aiemmin alustettu randomi. Miksei siis satunnainen ledi välky, vaan kaikki syttyvät yhtä aikaa (tai hyvin nopeasti peräkkäin)?
int Ledpun = 7;
int Ledvalk = 8;
int Ledkelt = 9;
int Ledvihr = 10; // nimetään ledit pinneihin
// Variables will change:
int ledState = LOW; // ledState used to set the LED
long previousMillis = 0; // will store last time LED was updated
// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long interval = 1000; // interval at which to blink (milliseconds)
void setup() {
// set the digital pin as output:
pinMode(Ledpun, OUTPUT);
pinMode(Ledvalk, OUTPUT);
pinMode(Ledkelt, OUTPUT);
pinMode(Ledvihr, OUTPUT);
}
void loop()
{
randomSeed(analogRead(5)); // pinnistä 5 satunnaiskohinaa
long randomi = random(7, 11); // arvotaan numero välillä 7-10
digitalWrite(randomi, HIGH); //
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
// set the LED with the ledState of the variable:
digitalWrite(randomi, ledState);
}
}