Reference Language (extended) | Libraries | Comparison | Changes
La palabra reservada static se utiliza para crear variables estáticas, estas variables tienen la peculiaridad de que no se crean y se destruyen cada vez que se llama al bloque de código en el que está definidas, sino que su valor se guarda para las sucesivas llamadas.
Las variables que se declaran como estáticas sólo se crearan e inicializarán la primera vez que se ejecute el bloque de código en el que están contenidas.
/* RandomWalk
* Paul Badger 2007
* RandomWalk salta aleatoriamente entre 2 puntos de salida
* El máximo está controlado por el parámetro "stepsize".
* Una variable estática es incrementada o decrementada aleatoriamente.
* Esta técnica es conocida como "pink noise" y "drunken walk".
*/
#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize;
int thisTime;
int total;
void setup()
{
Serial.begin(9600);
}
void loop()
{ // lanzamos la función randomWalk
stepsize = 5;
thisTime = randomWalk(stepsize);
Serial.println(thisTime);
delay(10);
}
int randomWalk(int moveSize){
static int place; // variable estática los valores se conservaron entre las siguientes
// llamadas a la función. Ninguna otra función puede cambiar su valor
place = place + (random(-moveSize, moveSize + 1));
if (place < randomWalkLowRange){ // comprueba el límite mayor y el menor
place = place + (randomWalkLowRange - place); // modifica el número a una dirección positiva
}
else if(place > randomWalkHighRange){
place = place - (place - randomWalkHighRange); // modifica el número a una dirección negativa
}
return place;
}
Correcciones, sugerencias, y nueva documentación deberán ser publicadas en el Foro (castellano) o en el Foro (inglés).
El texto de la referencia de Arduino está publicado bajo la licencia Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0. Los ejemplos de código de la referencia están liberados al dominio público.