Go Down

Topic: Projet - Horloge Tetris et plus (Read 3 times) previous topic - next topic

DizHell

Salut Maraumax,

Je vois que tu as subit quelque galères, mais tu t'en ai plutôt bien sortie... T'inquiète tu en verras d'autres...

Pour ma part, après l'avoir abandonné depuis 2 mois je viens de reprendre mon projet, c'est dur à reprendre, pense à faire un fichier changelog qui contient toutes les modif que tu fait au jour le jour dans ton code c'est pratique, et aussi faire des sauvegarde de ton projet dans le temps.

Concernant ton liens pour créer une polices sa à l'air bon (j'ai un peu survolé) pour ce qui est du fichier à modifier c'est sur la class ht1632c.h et .cpp .

T'inquiète pas pour ta matrice, si tu inverse pas la masse et le +5V elle ne prendra pas mal. d'ailleurs pour ce qui est de l'alim pense à utilisé une alim externe de 5V pour alimenté les 2 matrice car l'arduino ne pourra pas alimenter les 2 tout seul. (sa chauffe).

Voilà, je vais mettre une alerte de suivi sur ton post, pour pouvoir te répondre rapidement si je peux.  :smiley-mr-green:

Bon courage

Maraumax

Hello ! De retour après quelques mois de déménagement / réinstallation !

Je commencé à installer mon bureau électronique cette semaine, plus besoin de défaire / refaire pour manger ! :p

J'ai vu la vidéo de ton projet mais je n'avais pas commenté à l'époque, c'est assez sympa ce que tu as fait !

Concernant ta remarque de l'alimentation externe, quelle alimentation me conseille tu ? (transfo électrique, piles ?)

Bonne journée !

Maraumax

Bonjour à tous !

Avancement

J'ai pas mal avancé sur un algo en PHP pour générer une matrice, j'utiliserais donc des suites générés aléatoirement mais prédifinit dans un premier temps ;)

Vous pouvez voir l'état actuel à cette adresse :
* http://devs.maraumax.fr/tetris/tetris.php (1 par défaut)
* http://devs.maraumax.fr/tetris/tetris.php?n=6

Si vous avez le message "CANCEL ! Limite atteinte !" c'est que le script a atteint la limite de passages donc rafraichissez simplement la page ;)

Il me reste de nombreux points à corriger et des optimisations à faire mais pour le moment ça fonctionne ! J'ai encore une fonction à développer pour créer des fonctions pour arduino mais j'ai besoin de votre aide...

J'ai besoin de vous !

En effet j'ai besoin de votre aide pour la logique de mon code sur arduino. Si je n'avais qu'un seul chiffre à gérer je n'aurais pas trop de problème pour gérer la "descente des blocs" (pas en enfer :p) mais dans le cas du passage de 23h59 à 00h00 je doit gérer quatres chiffres en même temps ! J'ai directement pensé au multitâche mais ce n'est pas disponible de base sur arduino, avant de regarder cette éventuel solution avez vous des idées sur comment je peut procéder ?

Au départ je pensait créer 10 fonctions, print0 jusqu'a print9 avec un argument pour définir quel info est à mettre à jour (dizaine heure, unité heure, dizaine minute, unité minute) mais je ne pense pas que ce soit gérable d'exécuter ces fonctions en même temps. (1 : on reviens au paragraphe précédent :p 2 : Sinon je peut procéder de gauche à droite ou inversement...)

Merci beaucoup pour vos lumières !

PS : je partagerais plus tard le code tetris.php, quand il sera un peu optimisé et amélioré !
PS 2 : Merci au forum developpez.net et à stackoverflow pour leurs idées pour l'algo ! (backtracking et additionner un array)

DizHell

Salut,

Je vais t'orienté un peu et te donner mon astuce pour gérer des Thread avec l'arduino mais tu le garde pour toi...  :D

Comme tu le sais mont projet utilise le code de l'horloge Pong, mais se code était prévu pour monopoliser toute la matrice de ce fait il ont tout fait avec des delai(), mon projet utilise 2 matrice pour 1 arduino et donc l'affichage de 2 info en même temps, enfin plus ou moins... L'astuce est là sur ces derniers mots.

Elle consiste à jouer avec le temps mais sans les delai() qui te bloque tout le code, tu affiche un de tes chiffres tu met une condition dans ton code pour bloquer quelque milliseconde la suite de l'affichage et tu passe à un autre chiffre et ainsi de suite. Pour se faire tu as 2 choix soit

tu utilise la fonction millis() avec une comparaison dans un "if" par rapport à une valeur de tempo en ms que tu aura définie. 
ou
l'objet Timer de ce site : http://arduino-info.wikispaces.com/Timer-SimonMonk

Pour mon code j'utilise les 2 options, voilà qui pourra te faire un peu avancer.

Bon courage  ;)

Maraumax

Salut DizHell et merci de ta réponse précice !

En effet ton astuce est parfaite, j'ai commencé à regarder de mon coté et ça passe impec' !

Maintenant le soucis que j'ai est au niveau de la mémoire (je suis sur un uno)... je vais dans un premier temps optimiser mon code, si ça ne passe toujours pas je vais invertir dans une Mega.

Merci encore, et je vous tiens au courant de l'avancé !

Go Up