KnightRider
int ledDelay = 500; //how many time the leds gets HIGH
int interDelay = 1; //how many time between led an the next one
int leds[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int ON = 255;
int OFF = 0;
void setup() {
int i;
for (i = 0; i < 10; i = i + 1) {
pinMode(leds[i], OUTPUT);
}
//Serial.begin(9600);
}
void askSensor() {
int sensorValue = analogRead(A0) + 1;
// print out the value you read:
//Serial.println(sensorValue/3+15);
delay(1);
ledDelay = (sensorValue / 3) + 15;
}
void moveLeft(){
int i;
//to the right
for (i = 8; i > 0; i = i - 1) {
askSensor();
analogWrite(leds[i - 1], ON);
analogWrite(leds[i], ON);
analogWrite(leds[i + 1], ON);
delay(ledDelay);
if (i == 1) {
//analogWrite(leds[i-1], OFF);
//analogWrite(leds[i], OFF);
}
analogWrite(leds[i + 1], OFF);
delay(interDelay);
}
}
void moveRight(){
int i;
//to the left
for (i = 0; i < 10; i = i + 1) {
askSensor();
if (i != 0 && i != 9) {
analogWrite(leds[i - 1], ON);
analogWrite(leds[i], ON);
analogWrite(leds[i + 1], ON);
delay(ledDelay);
analogWrite(leds[i - 1], OFF);
delay(interDelay);
} else {
if (i == 9) {
analogWrite(leds[i - 1], ON);
delay(ledDelay);
delay(interDelay);
}
else {
analogWrite(leds[i], ON);
analogWrite(leds[i + 1], ON);
delay(ledDelay);
delay(interDelay);
}
}
}
}
void moveInside(){
int i;
//inside
for (i = 0; i < 10; i = i + 1){
askSensor();
analogWrite(leds[i], ON);
analogWrite(leds[9-i], ON);
delay(ledDelay);
analogWrite(leds[i], OFF);
analogWrite(leds[9-i], OFF
);
}
}
void loop() {
int num= random(4,8);
int i;
for(i=0;i<num;i++){
moveLeft();
moveRight();
}
}