/* RandomWalk
Paul Badger 2007
A RandomWalk véletlenszerűen vándorol két végpont
között. A maximális mozgást a ciklusban a "stepsize"
(lépésköz) paraméter szabályozza.
Egy statikus változót véletlenszerűen fel-le mozgat.
Ez a technika "rózsaszín zaj" és "részeg séta" néven is ismert.
*/
#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize;
int thisTime;
void setup() {
Serial.begin(9600);
}
void loop() {
// a randomWalk funkció tesztje
stepsize = 5;
thisTime = randomWalk(stepsize);
Serial.println(thisTime);
delay(10);
}
int randomWalk(int moveSize) {
static int place; // változó az érték tárolására a véletlenszerű séta során - statikusnak nyilvánítva,
// így tárolva az értékét a függvényhívások között, de más függvények nem változtathatják meg
place = place + (random(-moveSize, moveSize + 1));
if (place < randomWalkLowRange) { // az alsó- és felső határ ellenőrzése
place = randomWalkLowRange + (randomWalkLowRange - place); // pozitív irányba tükrözi vissza a számot
}
else if (place > randomWalkHighRange) {
place = randomWalkHighRange - (place - randomWalkHighRange); // negatív irányba tükrözi vissza a számot
}
return place;
}