Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 15 sur 28

[projet] mini jeu "Jacques à dit" avec un PIC...

  1. vede

    Date d'inscription
    août 2009
    Localisation
    Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
    Âge
    43
    Messages
    3 353

    Cool [projet] mini jeu "Jacques à dit" avec un PIC...

    bonsoir à tous,

    pour noël, et surtout parce que ça me trottais dans la
    tête de puis des mois, j'ai mis au point un mini jeu
    avec un PIC 16F88...

    Je voulais surtout dévelloper la programmation de la
    "logique" de ce jeu, et ce avec le moins de code possible...
    et avec un schéma le plus simple possible...

    C'est un jeu de "Jacques à dit"... avec 4 leds de
    couleurs différentes... chacune assignée à une "note"...
    et à un bouton poussoir...

    Le jeu consiste à répéter la séquence de leds/notes "jouée"
    par le programme... sans se tromper...

    A chaque réussite, le jeu se complique en:
    -ajoutant une couleur dans la sequence
    -accélérant la vitesse

    La "couleur" de la led ajoutée est tirée au hasard,
    aprés chaque réussite de répétition de la séquence...

    Le tirage au hasard est basé sur :
    -la valeur ADRESHL d'une entrée ADC laissée en l'air
    +le compteur d'instruction (PCL)
    +un grain de sel : variable hazard, incrémentée
    dans les boucles d'attentes d'un appui sur un BP...

    c'est dévellopé en MikroBasic...
    le code fait moins de 70 lignes...
    donc facilement portable (autre langage, autre PIC)...

    le code de la "logique" du jeu fait moins de 35 lignes...
    le reste du code, c'est au début, l'initialisation du jeu...
    et à la fin, la partie "hazard"... que j'ai voulu "peaufiner"...

    Bon, comment ça fonctionne :
    -à la mise sous tension, les 4 leds s'allument...
    -un appui sur un BP démarre le jeu...
    -le "jeu" allume une led...
    -appuyez sur le BP correspondant...
    -le jeu allume une séquence de 2 leds...
    -appuyez sur les BP correspondants...
    etc...

    quand on se trompe, les 4 leds s'allument...
    appuyer sur un BP pour re-jouer...

    quand on gagne... ben encore rien de prévu...
    commencez par réussir à répéter une séquence
    de 50 "couleurs"...
    ;O]

    voili, voilou ;O]

    le schéma... ultra simplissime :
    http://vede.free.fr/electronique/jeujad/jeujad.jpg

    (je conseille de déporter les BP, les leds et le Buzzer...
    ...sur un boitier style "console de jeu" ;O])...

    le .hex prêt à être chargé dans un PIC 16F88 :
    http://vede.free.fr/electronique/jeujad/jeujad.hex

    et le code :
    Code:
    program jeujad
    ' cible = 16F88, fusibles = ALL OFF, _INTRC_IO
    const frequence as word[9] = (0, 220, 1318, 0, 493, 0, 0, 0, 1174)
    dim temps as word
    dim couleur as byte[51]
    dim var, niveau, hazard, compteur as byte
    '
    main:
    OSCCON =  %1100000            ' intrc_osc = 4Mhz
    while testbit(OSCCON,IOFS)=0 wend
    ANSEL  =  %0010000            ' active entrée ADC sur PortA.4
    ADCON0 = %00100001            ' ADC utilisé par le "hasard"...
    TrisA  = %00010000            ' PortA.4 = entrée ADC ("en l'air")
    PORTA  = %00001111            ' allume les 4 leds
    TrisB  = %11111111            ' PortB en entrées
    OPTION_REG.7 = 0              ' PortB Pull-Ups enabled
    niveau = 1
    compteur = 0
    temps = 550
    while portB = 255 inc(hazard) wend   ' attente appui BP
    PORTA = 0                     ' éteint les 4 leds
    Sound_Init(PORTA, 7)          '
    var = hazard  MOD 4           ' on génére les 2 premiéres
    hazard = 0                    ' couleurs "au hasard"... sans ADC...
    hazard.var = 1                '
    couleur[0] = hazard           '
    var = PCL  MOD 4              '
    hazard = 0                    '
    hazard.var = 1                '
    couleur[1] = hazard           '
    '
    joue:                         ' début du programme du jeu
      var = couleur[compteur]
      PORTA = var
      Sound_Play(frequence[var], temps)
      PORTA = 0
      delay_ms(100)
      inc(compteur)
      if compteur < niveau then goto joue end if
      compteur = 0
    joueur:
      while PortB = 255 inc(hazard) wend
      var = not PortB
      PORTA = var
      Sound_Play(frequence[var], temps)
      PORTA = 0
      delay_ms(100)
      if var <> couleur[compteur] then goto main end if 'perdu
      inc(compteur)
      if compteur < niveau then goto joueur end if
      inc(niveau)
      ADCON0.GO = 1                   ' a partir d'ici, on
      delay_ms(100)                   ' génére, "au hasard",
      var = hazard + PCL              ' la prochaine "couleur"
      var = var + ADRESL              ' en utilisant PCL, ADC et hazard
      var = var MOD 4                 '
      hazard = 0                      '
      hazard.var = 1                  '
      couleur[niveau] = hazard        '
      delay_ms(300)                   '
      compteur = 0                    '
      temps = temps  - 10             ' et enfin on "accélére"...
    goto joue                         ' avant de recommencer...
    end.
    n'hésitez pas si question...
    suggestions, critiques...
    et améliorations...
    vede
    ;O]

    ps : nomenclature>

    -4 leds (If 20mA max) de couleurs différentes et leurs resistances...

    -4 BP
    -un 16F88 programmé
    -un BUZZER
    -un régulateur 78L05
    -un condo 100nF
    -une pile 9V

    et en déportant les BP, Leds et le Buzzer...
    pas besoin de typon...


    Dernière modification par vede ; 21/12/2009 à 23h12.
     


    • Publicité



  2. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    71
    Messages
    44 756

    Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    Deux remarques :
    • Je ne suis pas très fort en soft et je ne vois pas bien la commande du buzzer. c'est une commande ON/OFF (et il faut un buzzer intelligent qui bippe tout seul) ou c'est une commande pulsée (et une simple pastille céramique est OK). C'est pour éviter une erreur d'achat.
    • Je rajouterai un 0,1µF en entrée du 78L05. Une pile qui vieilli à besoin d'une canne
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
     

  3. vede

    Date d'inscription
    août 2009
    Localisation
    Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
    Âge
    43
    Messages
    3 353

    Cool

    Citation Envoyé par DAUDET78 Voir le message
    Deux remarques :
    • Je ne suis pas très fort en soft et je ne vois pas bien la commande du buzzer. c'est une commande ON/OFF (et il faut un buzzer intelligent qui bippe tout seul) ou c'est une commande pulsée (et une simple pastille céramique est OK). C'est pour éviter une erreur d'achat.
    • Je rajouterai un 0,1µF en entrée du 78L05. Une pile qui vieilli à besoin d'une canne
    Bonjour DAUDET,

    c'est vrai que tout est pas trés clair...
    c'est "pulsé".... une simple pastille suffit...
    j'utilise une "fonction prédéfinie" du compilo...
    Sound_Play()...

    mon objectif final est de m'en affranchir,
    ainsi que de la "fonction predefinie" Delay_ms()...
    et tout reprogrammer en "dur"...

    et merci pour la pile ;O]

    bonn'journée,
    vede
    ;O]

    ps :

    -c'est "pulsé"... chaque led est assignée à une note différente...

    -et attention lors de l'implantation sur votre console :

    SW0 assigné à LED0
    SW1 assigné à LED1
    SW2 assigné à LED2
    SW3 assigné à LED3

    ;O]

    ps :
    et je met à jour le schéma ce soir...
    avec le condo pour la pauvre pile...
    proposé par DAUDET...

    re re re ps :

    bon Jack, et Genias, et...
    je compte sur vous pour mettre mon sérieux projet
    dans la nouvelle rubrique projet...

    merci d'avance,
    et
    bonn'journée,
    v ;O]

    Fusionné plusieurs réponses consécutives.

    .
    Dernière modification par gienas ; 18/01/2010 à 10h39. Motif: Fusion de trois réponses consécutives et très rapprochées
     

  4. maximilien

    Date d'inscription
    mai 2007
    Messages
    1 529

    Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    je vais peut être être pointilleux mais comme tu utilise MikroPascal pourrais tu poster les stats d'utilisation RAM et ROM?

    Comme ça on, voit les perspectives d'évolution du jeu.

    Le hex à l'air chargé?!?

    merci
     

  5. vede

    Date d'inscription
    août 2009
    Localisation
    Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
    Âge
    43
    Messages
    3 353

    Cool Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    Citation Envoyé par maximilien Voir le message
    je vais peut être être pointilleux mais comme tu utilise MikroPascal pourrais tu poster les stats d'utilisation RAM et ROM?

    Comme ça on, voit les perspectives d'évolution du jeu.

    Le hex à l'air chargé?!?

    merci
    Bonjour Maximilien,

    c'est programmé en MikroBasic...
    mais c'est kif kif...

    oui, le code asm généré fait 2000 lignes...
    à cause de l'utilisation des "fonctions prédéfinies"
    Delay_Ms() et Sound_Play()...

    si je les mets en 'commentaires...
    le code asm généré ne fait plus que 300 lignes...

    c'est pourquoi je vais coder "en dur' ces 2 fonctions...
    dés que j'aurais le temps...
    afin de passer à moins de 1000 lignes d'asm...
    ou même 500... idéalement...

    et ce soir je te fait des copies d'écran des stats...

    bonn'journée,
    v ;O]
     


    • Publicité



  6. alainav1

    Date d'inscription
    janvier 2005
    Localisation
    calais
    Âge
    64
    Messages
    4 154

    Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    bonjour,
    merci a vede pour ce type de post qui doit aider ceux qui souhaite se perfectionner en programmation par des exemples.
    afin que cela soit profitable au plus grand nombre juste une idée
    je verrai bien un organigramme avant la programmation 'cela permettrai aux programmeur en autre langage (C .....) d 'etre interressé
    la demarche
    presentation du programme en français , organigramme (quelque soit le type ) ,traduction en basic me paraitraiune bonne demarche .
    mais bon je ne veux pas etre le y faut q'on y qu'a ?
    donc c'est une demarche que je mettrai en place lors de mes prochaines programmations (dont je vous ferais part ).

    question a VEDE avec quel logiciel le schemas est il realisé ,il est bien fait !
    cordialement
    Alain
    Décider de faire c'est bien décider quand c'est mieux !
     

  7. vede

    Date d'inscription
    août 2009
    Localisation
    Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
    Âge
    43
    Messages
    3 353

    Cool

    Citation Envoyé par alainav1 Voir le message
    bonjour,
    merci a vede pour ce type de post qui doit aider ceux qui souhaite se perfectionner en programmation par des exemples.
    afin que cela soit profitable au plus grand nombre juste une idée
    je verrai bien un organigramme avant la programmation 'cela permettrai aux programmeur en autre langage (C .....) d 'etre interressé
    la demarche
    presentation du programme en français , organigramme (quelque soit le type ) ,traduction en basic me paraitraiune bonne demarche .
    mais bon je ne veux pas etre le y faut q'on y qu'a ?
    donc c'est une demarche que je mettrai en place lors de mes prochaines programmations (dont je vous ferais part ).
    cordialement
    Alain
    Bonjour Alainav,

    c'est vrai que j'ai pas "détaillé" le soft...
    mais j'attendais vos questions ;O]

    je vous fais un point ce soir à ce sujet...

    bonn'journée,
    v ;O]

    Citation Envoyé par alainav1 Voir le message
    bonjour,
    question a VEDE avec quel logiciel le schemas est il realisé ,il est bien fait !
    cordialement
    Alain
    re ;O]

    le freeware Kicad (Win/Linux)... y fait aussi les typons...
    et la visualisation 3D du circuit/typon...
    avec WINGS 3D (free) pour "dévelloper" ses propres "modéles"...
    mais là faut maitriser... les logiciels de 3D...
    et compatible SPICE... pour ceussent qui aiment simuler...
    et ya des tutos sur G..gle pour le prendre en main...
    ce soir j'envoi le typon 3D du schéma...
    si vous êtes sages...

    ;O]

    'tain

    j'ai du boulot soirce ;O]

    allez bonn'journée à tous ;O]

    vede
    ;O]

    Fusion de plusieurs réponses consécutives.

    .
    Dernière modification par gienas ; 18/01/2010 à 10h37. Motif: Fusion de trois réponses consécutives et très rapprochées
     

  8. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    71
    Messages
    44 756

    Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    Je repense à ton projet, il y aurait un coté pédagogique pratique sur les choix hard à détailler.
    Par exemple :
    • Pourquoi je n'ai pas de quartz et je prend l'oscillateur interne (le pour et le contre)
    • Pourquoi les boutons sont sur le port "A" (je crois ?? que les pullUP soft ne vont pas sur "B")
    • Pourquoi les LEDs ne brillent pas beaucoup (parce qu'avec moins de 5mA, il faut des hautes luminosités)

    PS: je n'ai pas vu d'antirebondissement, tu gères comment ?
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
     

  9. vede

    Date d'inscription
    août 2009
    Localisation
    Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
    Âge
    43
    Messages
    3 353

    Cool Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    Citation Envoyé par DAUDET78 Voir le message
    Je repense à ton projet, il y aurait un coté pédagogique pratique sur les choix hard à détailler.
    Par exemple :
    • Pourquoi je n'ai pas de quartz et je prend l'oscillateur interne (le pour et le contre)
    • Pourquoi les boutons sont sur le port "A" (je crois ?? que les pullUP soft ne vont pas sur "B")
    • Pourquoi les LEDs ne brillent pas beaucoup (parce qu'avec moins de 5mA, il faut des hautes luminosités)

    PS: je n'ai pas vu d'antirebondissement, tu gères comment ?
    Bonsoir à tous,

    -pas de quartz, car pas besoin d'une "grande" précision temporelle...
    -les BP sont sur le PortB...
    -il faut choisir les resistances selon les leds...
    (sur mon proto, c'est rouge,vert,jaune,orange If 20mA...
    elles éclairent "assez bien", même avec 5mA...)
    -l'anti-rebond est géré logiciellement (delay_ms)

    mais bon, je vous prépare l'organigramme,
    ainsi que plus de détails sur le fonctionnement,
    correspondant à vos questions...

    bonn'soirée,
    vede
    ;O]
     

  10. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    71
    Messages
    44 756

    Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    Citation Envoyé par vede Voir le message
    -pas de quartz, car pas besoin d'une "grande" précision temporelle...
    tu le sais, moi aussi, mais il faudrait expliciter pour ceusses qui ne savent pas
    les BP sont sur le PortB...
    j'ai merputé "A" et "B", je crois que sur "A" , ça ne marche pas les pullUP internes ???
    -l'anti-rebond est géré logiciellement (delay_ms)
    C'est à détailler

    Bon courage pour la doc pédagogique ...
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
     

  11. vede

    Date d'inscription
    août 2009
    Localisation
    Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
    Âge
    43
    Messages
    3 353

    Cool

    Citation Envoyé par DAUDET78 Voir le message
    Bon courage pour la doc pédagogique ...
    merci ;O]

    et bonn'journée ;O]
    vede ;O]

    Bonjour à tous,

    bon la doc est en cours...
    mais là c'est surtout pour remettre mon projet
    en haut de la liste ;O] c'est noêl ;O]

    bonn'journée,
    vede
    ;O]

    Bonjour à tous,

    j'ai fait un premier jet de l'algo du jeu,
    qu'en pensez-vous?

    et mon premier test d'insertion d'image :

    http://forums.futura-sciences.com/at...1&d=1263777907

    vede
    ;O]

    ps : là je met tout au propre, le nouveau code , plus d'explications,
    des photos du proto... ça sera prêt dans quelques jours...


    Fusionné trois réponses consécutives.

    .
    Images attachées
    Dernière modification par gienas ; 18/01/2010 à 10h41. Motif: Fusion de trois réponses consécutives
     

  12. vede

    Date d'inscription
    août 2009
    Localisation
    Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
    Âge
    43
    Messages
    3 353

    Cool Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    Bonjour à tous,

    j'aimerais beaucoup avoir vos avis sur mon algo (post précédent)...

    et je continue la mise au propre du projet...

    ci dessous un exemple de codage de l'algo en MikroBasic...
    (sans GOTO ;O])

    et des photos d'un proto monté dans un "vieux modem"...

    on y remarque:

    l'ancien circuit charcuté pour caler la pile...
    (et j'utilise son bouton On/Off)

    le buzzer...

    et le 16F88, avec son 78L05 et ses 2 condos...
    montés sur une mini platine à bande...

    vede
    ;O]

    ps : j'ai même fait une ch'tite vidéo du proto... bientôt sur YouTube ;O]

    Code:
    program jad
    '
    const frequence as word[4] = (220, 1318, 493, 1174)
    dim duree as word
    dim note as byte[51]
    dim var, niveau, hazard, compteur, perdu as byte
    
    ' initilasisation du PIC
    main:
    OSCCON =  %1100000                 ' initialise l'oscillateur interne à 4Mhz...
    while testbit(OSCCON,IOFS)=0 wend  ' ... et attends sa stabilisation
    ANSEL  = %00000000                 ' désactive le convertisseur analogique
    TrisA  = %00000000                 ' met les 8 Ports A en sorties
    TrisB  = %11111111                 ' met les Ports RB0,RB1,RB2 et RB3 en entrées
    OPTION_REG.7 = 0                   ' active les résistances de Pull Up sur le PortB
    Sound_Init(PORTA, 4)               ' initalise la librairie de génération sonore
    
    ' le jeu... dans une boucle infinie...
    while true                         ' initialisation du jeu
        PortA  = %1111                       ' allume les 4 leds
        delay_ms(500)
        while portB = 255 inc(hazard) wend   ' attend un appui sur un BP
        delay_ms(100)
        note[0] = hazard MOD 4               ' définit les 2 premiéres "notes"
        note[1] = PCL MOD 4
        PortA = %0000                        ' éteint les 4 leds
        duree = 650
        niveau = 1
        perdu = 0
        jeu:
        while perdu = 0                 ' le jeu, tant que pas perdu
            compteur = 0
            while compteur < niveau            ' le jeu "joue" les notes
                var = note[compteur]
                PortA.var = 1                        ' allume la led correspondante
                Sound_Play(frequence[var], duree)
                PortA = %0000                        ' éteint la led
                delay_ms(100)
                inc(compteur)
            wend
            compteur = 0
            while compteur < niveau            ' le joueur doit répéter les notes
                  while PortB = 255 inc(hazard) wend ' attente d'un appui sur un BP
                  var = not PortB
                  PortA = var                        ' allume la led correspondante
                  var = var >> 1
                  if var = 4 then dec(var) end if
                  Sound_Play(frequence[var], duree)
                  PortA = %0000                      ' éteint la led
                  if var <> note[compteur] then perdu = 1 end if
                  if perdu = 1 then compteur = niveau end if
                  delay_ms(100)
                  inc(compteur)
            wend
            inc(niveau)                  ' si réussi... on incremente le niveau...
            hazard = hazard + PCL
            note[niveau] = hazard MOD 4 ' ... et on "tire" la prochaine note...
            delay_ms(500)
            duree = duree  - 10          ' ... et on accélére trés légérement ;O]
        wend
    wend
    '
    end.
    re ps : comment placer les images dans le message?
    je n'arrive pas à trouver d'informations à ce sujet...

    re re ps : en là je démarre un "jeu de la vie" sur une matrice 8x8 leds...
    pour commencer... ;O]
    Images attachées
     

  13. Gérard

    Date d'inscription
    janvier 2003
    Localisation
    Alsace
    Âge
    56
    Messages
    7 904

    Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    Je regarde ton algo demain.
    Gérard.
     

  14. vede

    Date d'inscription
    août 2009
    Localisation
    Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
    Âge
    43
    Messages
    3 353

    Cool Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    Citation Envoyé par Gérard Voir le message
    Je regarde ton algo demain.
    Bonsoir à tous,

    et super, merci d'avance Gerard ;O]

    en fait je me pose 2 questions :

    -c'est fonctionnel, mais... est-ce correct?

    -pourrait-on encore faire mieux, ou plus simple?

    vede
    ;O]
     

  15. Gérard

    Date d'inscription
    janvier 2003
    Localisation
    Alsace
    Âge
    56
    Messages
    7 904

    Re : [projet] mini jeu "Jacques à dit" avec un PIC...

    J'ai regardé, c'est bon.
    On peut surement faire mieux, mais si c'est fonctionnel, pas la peine de chercher midi à 14h.
    Gérard.
     


    • Publicité




Poursuivez votre recherche :




Sur le même thème :




 

Discussions similaires

  1. Dit t'on qu'une Fusée "Vole" ou "Flotte" dans l'espace ?
    Par Bajam dans le forum Astronautique
    Réponses: 12
    Dernier message: 11/09/2009, 14h04
  2. Aide : "Projet Mini bras electronique"
    Par anthonym dans le forum Électronique
    Réponses: 5
    Dernier message: 30/12/2008, 21h54
  3. Réponses: 9
    Dernier message: 30/10/2008, 08h19
  4. [Projet PIC] Convertisseur "Fréquence/Tension" ?!?
    Par La Praline dans le forum Électronique
    Réponses: 10
    Dernier message: 05/09/2008, 14h20
  5. Outlook 2K dit "you have mail" mais ne les montre pas !!
    Par nulnul7 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 03/06/2004, 17h19