Étape 7: Animer le réservoir Bottines
Après que j’ai eu le mouvement initial de la citerne va, je suis allée faire les marches de se comporter comme je le voulais. L’interprétation initiale du code, j’ai eu un cadre tout-autre pixel pour les marches--un pixel sur, une large. Mais avec quelques essais, j’ai trouvé qu’une bande de roulement de trois pixels (deux de suite, une large) semblait mieux.Le dessin de la citerne devait utiliser cette configuration pour démarrer, mais vraiment ce que cela signifiait, c’était que je pourrais tourner tous les pixels de la bande de roulement au début (dans la baie de long int), puis tourner au large chaque pixel troisième. Selon la position de tankx, modulo 3, j’ai s’éteint un ensemble différent de pixels.
L’exigence de départ, cependant, était que le nombre total de pixels dans la bande de roulement être un multiple de trois. Dans le cas contraire, l’animation frapperait skip points.
Alors, j’ai défini un emplacement séparé treadx (pas vraiment une position x, plus comme un compteur qui serait loop 0, 1, 2, 0, 1, 2,...) et basée sur ses valeurs, je figure out qui bits pour couper la bande de roulement. Dans mon dessin, cela se produirait seulement dans les quatre lignes plus bas, qui correspondent aux valeurs de « y » 4, 5, 6 et 7.
Étant donné que les bits de la chape de la citerne se trouvaient tous sur pour commencer, je pourrais utiliser la fonction XOR C pour les désactiver. J’appliquerais ce changement à l’ints long avant il serait déplacé de sa position de décalage de bits 0..4, et qui passerait, naturellement, avant les longue ints se répartissaient entre octets.
int treadx = 0 ; void loop() {} Cette section traite de l’animation de la bande de roulement
...
pour (int y = 0; y < 8; y ++)
{
... faire les autres traitements de la tourelle ici
Switch (treadx) {}
case 0 :
commutateur (y) {}
cas 4 :
lval ^ = 0x2cb0 ; rupture ;
cas 7 :
lval ^ = 0x2490 ; rupture ;
}
rupture ;
cas 1 :
commutateur (y) {}
cas 4 :
lval ^ = 0x1240 ; rupture ;
lval ^ = 0x36d0 ; rupture ;
cas no 5 :
lval ^ = 0x0008 ; rupture ;
cas 6 :
lval ^ = 0 x 4000 ; rupture ;
cas 7 :
lval ^ = 0x0920 ; rupture ;
}
rupture ;
cas 2 :
commutateur (y) {}
cas 4 :
lval ^ = 0x0920 ; rupture ;
lval ^ = 0x1b60 ; rupture ;
cas no 5 :
lval ^ = 0 x 4000 ; rupture ;
cas 6 :
lval ^ = 0x0008 ; rupture ;
cas 7 :
lval ^ = 0x1240 ; rupture ;
}
rupture ;
}
... faire le déplacement de ventilation ints et octet longs ici
} / / fin pour chacune des huit lignes
... faire les appels lcd.write et lcd.createChar ici
++ treadx ;
Si (treadx == 3) {treadx = 0;}
} / / fin de boucle fonction