C/C++ En Arduino: Ciclos för Y Arreglos (4 / 5 steg)
Steg 4: Código
En este ejemplo, vamos en crear un montón de caminadores aleatorios. Son como partículas que caminan en cualquier dirección. Para crear aleatoriedad utilizamos la función random()y como verán por el resultado, en Arduino es bastante mala, pero para aplicaciones simples, funciona bien. Todo spårk de programación tiene algún tipo de función slumpmässiga, dado que esta función es grundläggande para muchos aspectos de cálculo, simulaciones y desarrollo de maskinvara y programvara sv allmänna.
Para hacer un caminador aleatorio, debemos mantener posiciones x, y de varias "partículas", y para eso usamos dos arreglos, posX [y posY] [], para guardar x, y respectivamente. Estas coordenadas las vamos cambiando por cada ciclo loop del Aduino, y vamos dibujando un círculo utilizando estas posiciones.
Veamos varias cosas del código. De las líneas 2 a la 4, se Loaded las librerías que vamos en utilizar para la pantalla OLED. Pueden ir en este instructable para la explicación de estas librerías y su utilización.
En las líneas 6 a 8, creamos dos arreglos de enteros:
CONST int num = 10;
int posX [num];
int posY [num];
Vean que la primera línea de ese código utilizamos "konst", esto lo que indica es que la variabeln num, es una constante, es decir que ingen cambiará su valor sv ninguna parte del proagrama. SI ingen le agregan "konst", les daría el siguiente fel:
IntroC_For:7: fel: array bunden är inte en heltalskonstant innan "]" token
int posX [num];
Esto es porque este tipo de arreglos son estáticos, es decir, se construyen y el micro-controlador asigna de omedelbar el espacio de memoria y inga se puede cambiar su tamaño sv ningún momento después de creados. "num" debe ser necesariamente una constante, y por eso esto se corrige indicando que es una constante agregando "const" al inicio de la declaración.
Los arreglos posX [num] y posY [num], almacenan valores de tipo enterokapslar, y como definicmos num igual que sea en 10, entonces, habrá 10 "gavetas" en cada arreglo.
En la función setup(), las líneas 16 a 19, inicializamos cada variabel en el arreglo, para colocarlos en el centro de la pantalla,
för (int jag = 0; jag < num; i ++) {
posX [i] = 64;
posY [i] = 32.
}
ACÁ utilizamos el ciclo för para IR-por cada elemento del arreglo y asignarle el valor inicial del centro de pantalla sv posición x, y. Noten como el iterador jag, se återvi para ange que elemento del arreglo vamos en asignar, y el ciclo se encarga de cambiar jag, desde 0 a 5.
En la sección loop(),
för (int jag = 0; jag < num; i ++) {
posX [i] = begränsa (posX [i] + random (-3, 3), 1, 127);
posY [i] = begränsa (posY [i] + random (-3, 3), 1, 63);
display.fillCircle (posX [i], posY [i], 1, vit);
display.display();
}
Volvemos en utilizar FN ciclo för para cambiar los valores de posición x, y. En la Linea,
posX [i] = begränsa (posX [i] + random (-3, 3), 1, 127);
Se utilizan varias cosas. Veamoslo de adentro hacia afuera. Lo primero es la función random(-3,3). ESTA función lo que hace es generar un número aleatorio entre -3 y 3. UNA vez creado el número, esta se la sumamos a la posX [i], que eran la posición en la que estaba antes. Luego utilizamos la función begränsa (posX [i] + random (-3, 3), 1, 127),, esta lo que hace es asegurar que el cualquiera que sea el resultado, este nunca havet menos que 1 o borgmästare que 127. Pueden ver su uso sv la referencia de Arduino. Hacemos lo mismo con posY [i].
UNA vez re-calculada la nueva posición, dibujamos un círculo condisplay.fillCircle (posX [i], posY [i], 1, vit), y luego actualizamos el display con display.display();
ESO es todo. Ahora verlo funcionando.