Me more happy, 'cause "tick" and "tock" outs works now properly :
const int tick = 2;
const int tock = 3;
const int trigger_length = 7;
byte tickState = LOW;
byte tockState = LOW;
unsigned long currentMillis = 0;
unsigned long previousMillis = 0;
void setup() {
Serial.begin(9600);
pinMode(tick, OUTPUT);
pinMode(tock, OUTPUT);
}
void loop() {
currentMillis = millis();
update_tick();
}
void update_tick() {
if (tickState == LOW) {
int clockspeed = map(analogRead(0), 0, 1024, 1000, 7);
if ((unsigned long) currentMillis - previousMillis >= clockspeed) {
tickState = HIGH;
digitalWrite(tick, tickState);
previousMillis += clockspeed;
int comparator = random (0,100);
int density = map(analogRead(1), 0, 1024, 10, 101);
if (comparator <= density) {
tockState = HIGH;
digitalWrite(tock, tockState);
} else {
tockState = LOW;
digitalWrite(tock, tockState);
}
}
}
else {
if ((unsigned long) currentMillis - previousMillis >= trigger_length) {
tickState = LOW;
tockState = LOW;
digitalWrite(tick, tickState);
digitalWrite(tock, tockState);
previousMillis += trigger_length;
}
}
}