Programme cube led, besoin d'aide pour comprendre [C/C++] - C - Programmation
Marsh Posté le 11-03-2013 à 22:32:45
Quelqu'un a une idée sur le fonctionnement globale de la boucle do while ? Moi je sèche complètement ...
Marsh Posté le 12-03-2013 à 00:17:42
C'est pas dur a comprendre:
Quelque part, tu as une table PatternTable qui doit avoir la tronche suivante:
Des lignes constituées de PLANESIZE octets correspondants a un pattern a afficher, suivis d'un octet indiquant le temps d'affichage
La dernière ligne est mise à 0
bref, tu as quelque chose comme
struct {
byte Pattern[PLANESIZE];
byte DisplayTime;
} DisplayTime[NbPatterns + 1];
La boucle externe fait
int i = 0;
PatternBuf[PLANESIZE];
byte DisplayTime;
do {
PatternBuf <- PatternTable[i].Pattern
DisplayTime <- PatternTable[i].DisplayTime
i++
// une boucle interne, pas executée si DisplayTime = 0
...
// et on utilise DisplayTime = 0 comme test d'arret de parcours du tableau des patterns
} while (DisplayTime);
Sauf que c'est probablement pas un tableau de taille fixe, mais une structure dynamique, qui a été allouée en faisant:
byte *DisplayTime = malloc((PLANESIZE+ 1) * (NbPatterns + 1));
et que le code travaille par adressage relatif au début de la table:
PatternBuf <- PatternTable[i].Pattern
se traduit alors en
memcpy_P( PatternBuf, PatternTable + PatternIdx, PLANESIZE );
PatternIdx += PLANESIZE;
et
DisplayTime <- PatternTable[i].DisplayTime
en
DisplayTime = pgm_read_byte_near( PatternTable + PatternIdx);
PatternIdx += 1;
(simplifié en DisplayTime = pgm_read_byte_near( PatternTable + PatternIdx++);
A+,
Marsh Posté le 11-03-2013 à 18:01:05
Bonjour à tous.
En ce moment je travail sur un projet personnel d'un cube LED en 3D 4*4*4, le cube marche parfaitement à l'aide d'une carte Arduino Uno.
Seulement mon problème et que j'utilise un code qui n'est pas le mien et j'aimerai le comprendre, ainsi que l'algorithme contenu dans void loop (boucle faire tant que), afin d'améliorer ou modifier certaines choses.
J'avais déjà commencé moi même un programme, mais celui ci fonctionnant parfaitement, je me dois de le comprendre si une ame généreuse pouvait m'aider ce serait très sympa.
Voici le code, enfait les pins des LED sont associées à un tableau, et on peut créer des séquences très simplement avec des 0 et des 1 tout en haut du code. Voici le code complet tel que je l'ai trouvé :
Merci d'avance.
Message édité par nerdherd le 11-03-2013 à 18:01:39