Bonjour à tous , s'il vous plait est qu'il y a quelqu'un qui connait le protocole RS232 car j'ai un exo la dessus et merci d'avance <3
-----
Bonjour à tous , s'il vous plait est qu'il y a quelqu'un qui connait le protocole RS232 car j'ai un exo la dessus et merci d'avance <3
mon exerice c'est de réaliser le jeux "devinette" en utilisant ce protocole PLZZZ aidez moi , file moi votre mail ou quelqchose comme ça plzzzzzzzz <3
Bonjour,
C'est vrai, essais d'être plus explicite sinon pour t'aider ça va être dur !
Tu devrais éviter les phrases du genre "file moi votre mail ou quelqchose comme ça plzzzzzzzz"
C'est juste un conseil
Bon courage
BONJOUR, DAUDET78 : l'énoncé est le suivant :
le microcontroleur choisi un nbre entre 0 et 255 et nous devons le deviner en un tps défini (1 min par exple) le temps qui reste est représenté sur 4 led (1 led correspond à 25 secondes ) si on trouve le nomb re voulu avant une minute , le microc nous donne le tps qu'on a mis en secondes, si non il nous informe qu'on a perdu et il nous donne la vraie réponse puis on recommence notre jeu (bien sur si on fait une tentation fausse et on a encore du tps il nous informe si le nbre est plus grand ou plus petit ) ; Ce jeu est tres connu dans la programmation en C , sachant qu'on doit écrire un programme en C en utilisant la communication Série RS232 entre le PC et le microc et merci d'avance .... (j'ai écri un bout de codes mais j'arrive pas à gerer qqlq fonction plzzzzzzzzz aidez moi <3 <3 <3
je m'excuse Patrick , je suis encore débutant dans le forum et pas su les régles , merci quand meme pour les conseils <3
6 messages avant d'en arriver enfin a la vrai question.
Je sens qu'on va avancer vite.
Garde tes petits coeurs, t'est pas du tout mon genre.
je m"excuse MiGaNuTs
En faite ce que tu veux faire s'appelle de la "Dichotomie"
Mais il y a encore beaucoup d'inconnues :
- tu programmes le micro ou le PC ?
- une fois la réponse trouvée il faut savoir ou aller chercher le temps restant !? ou ? le micro l'affiche ? la renvoi par le UART ?
message 50236: on aura progressé.
Putain les mecs, donnez toutes les infos en une fois, on est pas la pour jouer aux devins.
Yen a marre de devoir reflechir sur des bases foireuses.
marci patrick pour la réponse ; moi je programme le microc , Le pc ne sert que pour l'affichage des message et le faite d'entrer un nombre voila les indications et les fonctions à developper , moi j'ai pu developper que les fonctions de base (communication rs23 ) voila ce quil faut faire comme démarche :
Écrire et tester les fonctions de communications (RS232) suivantes :
com_init qui initialise les registres de l'EUSART.
com_recieve qui attend l'arrivée d'un octet et le renvoie.
com_transmit qui permet d'envoyer un octet vers le PC.
com_string_transmit qui envoie une chaîne de caractères (tableau d'octets) au PC.
com_string_receive qui permet de recevoir une chaîne de caractère envoyée par le PC, cette
fonction reçoit en paramètre l'adresse du tableau (chaîne) où l'on veut stocker la chaîne reçue.
(La fin de la saisie dans l'hyperterminal peut être signalée par l'appui sur la touche Entrée)
Fonction de génération « aléatoire » du nombre :
Cette fonction doit renvoyer le nombre mystère. Pour cela elle incrémente un entier n codé
sur 8 octets (de type unsigned char) tant qu'aucune donnée n'est reçue sur la liaison série. Quand
n = 255, si on ajoute 1 on a n = 256 qui se code sur 9 bits mais comme n est sur 8 bits, on aura n
= 0. Écrire cette fonction.
Fonctions de gestion du temps
Le temps maximal pour trouver la solution est définit dans le programme principal (main). Le
temps restant est une variable globale (commune à toutes les fonctions). On mesure le temps avec le
TIMER 0.
Écrire les fonctions :
timer_init qui initialise les registres du timer, des interruptions,
timer_go qui lance le décompte et les interruptions,
timer_stop qui arrête le décompte et les interruptions,
timer_interrupt qui décrémente le temps et met à jour les LED (une LED correspond à 25
secondes restantes).
Programme complet
Lorsque le programme démarre, le μC envoie un message au joueur en lui demandant
d'appuyer sur une touche pour commencer, ce qui permet de générer le nombre mystère. Dès l'appui
le chrono est lancé, lorsque une proposition est faire, le μC informe le joueur du fait que le nombre
mystère est supérieur ou inférieur à sa proposition. Si le joueur trouve, il est informé de son temps
sinon le nombre mystère lui est donné. A la fin d'une partie le programme se relance.
Écrire et tester le programme « devine », la conversion d'une chaîne de caractère en entier
peut se faire avec la fonction atoi de la bibliothèque stdlib.h, il y a également la fonction inverse
itoa.
Le temps peut se terminer lorsque le μC est en attente d'une saisie du joueur. Le jeu se joue avec le
pavé numérique du clavier, tout appui sur une autre touche peut faire bugger le programme. Si
vous avez le temps, vous pouvez détecter les erreurs de saisie et demander une nouvelle saisie.
Ok, mais t'es pas débutant dans les relations entre les gens quand même ?je m'excuse Patrick , je suis encore débutant dans le forum et pas su les régles
C'est pas clair.sachant qu'on doit écrire un programme en C en utilisant la communication Série RS232 entre le PC et le microc
OK un PC et un microcontroleur vont discuter, mais pour s'échanger quoi ?
Tu as 2 programmes à écrire qui vont à eux deux :
- choisir un nombre au hasard
- prendre le nombre choisi par le joueur
- le comparer au nombre à trouver
- décider si c'est gagné ou perdu
- Connaitres les règles du jeu
- Afficher des trucs
Commence par définir ca et tiens nous au courant.
Si c'est déjà défini, il aurait fallu commencer par nous l'expliquer.
Dans l'état, on ne peut répondre à ta question qu'en t'envoyant sur wikipedia
Edit : Ok tu as répondu à temps
Merci bc cherwam07 ; j'ai connu la démarche à faire comme indiquée ci dessus et comme vous venez d'annoncer, je sais comment faire le programme en C indépandament du microc mon probleme c'est qu ej'arrive pas à faire le lien avec le RS232 c'est mon premier programme en utilisant ce protocole RS232
RS232 c'est juste le type de liaison rien de spéciale faudra juste envoyer ton programme par liaison série je suppose que tu as un logiciel pour donc ça devrai aller
Si ton microcontroleur est équipé d'un UART qui va bien, tu n'as pas a te reprendre la tête pour la gestion du RS232, il va s'en débrouiller tout seul (ou du moins en grande partie)
Si tu te lance dans la réalisation de quelque chose du genre sur un uC qui n'a pas d'UART, c'est que tu n'est plus un débutant. Ou que tu est un peu maso et que tu ne craint pas les échecs.
Selon l'avis de ma boule de cristal, coté PC il n'y a rien a programmer, utiliser l'hyperterminal de windows ou un de ses nombreux équivalents devrais faire l'affaire.
On se contente de saisir une valeur, de l'envoyer au uC, puis on regarde ce qu'il nous a répondu.
Coté uC ca ne me semble pas très compliqué, mais ça peut varier selon le uC utilisé (15 messages dans ce topic, et on ne sait toujours pas a quoi on a affaire)
Tu initialise les périphériques dont tu as besoin (au moins l'UART, un timer et 4 sorties pour les leds. je suis fort en déductions malgré le peu d'infos que tu nous donne)
Ensuite tu initialise les variables dont tu as besoin (a priori tu a un moins 1 variable pour le nombre a deviner, 1 variable pour le temps écoulé et un buffer pour les trucs reçus par l'uart. Il en faut probablement quelques autres pour les boucles et la p'tite cuisine interne de ton programme)
Dans ton programme tu va avoir une boucle principale qui surveille le temps
dans cette boucle (ou via une interruption) tu lit l'uart pour mettre des trucs dans le buffer
tu compare le buffer au truc a deviner, et selon le résultat tu utilise a nouveau l'uart pour répondre au messages reçu
en fonction du temps tu joue avec tes leds
une fois le temps écoulé tu utilise l'uart pour annoncer le timeout.
Ensuite tu tire un nouveau nombre au hasard et tu recommence.
C'est pas très compliqué comme façon de faire, il faut juste un peu de méthode, et surtout lire la doc du uC pour voire comment on exploite ses timers et son UART.
Eventuellement on peut aussi utiliser les interruption, soit pour gérer le timer, soit pour gérer le buffer de l'UART, soit les deux.
Mais ca dépends vachement du uC.
Au fait, on sait toujours pas ce que c'est comme uC (vu que tu utilise micro C je suppose que c'est un PIC, mais ca ne nous avance pas beaucoup comme déduction)
Je ne vois rien a ajouter à MiGaNuTs ...
A part peut être la gestion du temps en seconde, d'un point de vu personnel je préfère utiliser une horloge temps réel car sinon le temps peut varier en fonction de la vitesse d'instruction.
1) incrémentation du TIMER0, initialisation à 0 débordement à 256 ce qui provoque la mise à 1 du flag TMR0IF (interruption pour le timeout) puisqu'on mesure le temps avec TMR0
2) interruption sur RX (je trouve ça mieux), analyse du caractère reçu, si non numérique (voir table des caractère en hexa) renvoi d'un message "mauvaise saisie"
et création de tableau pour envoyer un string en RS232
C'est largement faisable (cas ou il s'agit d'un PIC)
Bon courage, décrits l'algorithme et tu verras ce sera assez claire