Cours:InfoS2 tdInput : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
 
(6 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[Cours:TPs_2103|{{Rouge|<big>'''Retour à la liste des Tds/Tps'''</big>}}]]
+
{{EnTeteTdInfoS2|InfoS2_tdInput_corrige}}
  
[[Cours:InfoS2_tdOutput_corrige|{{Vert|<big>'''Éléments de correction'''</big>}}]]
+
On utilisera à bon escient la page : [[Cours:CoursM2103#Lire_l'état_d'une_entrée]]
  
[[Cours:SimulIDE|{{Bleu|<big>'''simuler avec simulIDE'''</big>}}]]
 
  
 
<big>'''Pensez à mettre sur la 1ère ligne de votre code :'''</big>
 
// Compiler: Avrgcc device: nomDuMicrocontroleur
 
  
 
=Exercice : scrutation des entrées=
 
=Exercice : scrutation des entrées=
Ligne 26 : Ligne 22 :
 
  fichier pour simuler avec simulIDE : [[Media:microc_td2-scrutation.sim1|microc_td2-scrutation.sim1]]
 
  fichier pour simuler avec simulIDE : [[Media:microc_td2-scrutation.sim1|microc_td2-scrutation.sim1]]
  
=Exercice : événement d'une entrée par interruption=
 
  
Soit le système µcontrôleur avec les caractéristiques suivantes :
+
=Exercice : utilisation d'un clavier matriciel=
*atmega328 à 1MHz
+
[[Cours:InfoS2_tdClavierMatriciel_corrige|{{Vert|<big>'''Éléments de correction'''</big>}}]]
*4 leds sur les broches
+
 
**PC4
+
[[Image:ClavierMatricielPrincipe.png|vignette]]
**PC0
+
 
**PB5
+
Afin de limiter le nombre de broches nécessaires, les claviers matriciels sont organisés en ligne et colonne.
**PB1
+
 
*2 boutons sur les broches
+
==Connections==
**PD2 (INT0) avec résistance de tirage câblée
+
*connexions dans le clavier :
**PD3 (INT1) sans résistance de tirage
+
**les boutons sur une même ligne sont tous reliés ensemble (même côté du bouton)
 +
**les boutons sur une même colonne sont tous reliés ensemble (le côté non utilisé pour les lignes)
 +
*connexions sur le µcontrôleur :
 +
**toutes les lignes sont reliées sur le même PORT
 +
**toutes les colonnes sont reliées sur le même PORT
 +
**il peut y avoir 2 PORT différents pour ligne et colonne
 +
 
 +
==Principe==
 +
 
 +
Afin de détecter le bouton sur lequel on appuie, il faudra :
 +
*trouver sur quelle ligne un bouton est appuyé
 +
*trouver sur quelle colonne un bouton est appuyé
 +
 
 +
Le principe est symétrique pour ligne et colonne.
  
fichier pour simuler avec simulIDE : [[Media:microc_tdBpsInterruption.sim1|microc_tdBpsInterruption.sim1]]
+
On décrira le principe pour détecter le numéro de ligne :
 +
*on place les colonnes en sortie à l'état 0
 +
*on active les résistances de pull-up sur les entrées (les lignes)
 +
*on observe l'état des entrées (les lignes)
  
On utilisera les interruptions INT0 et INT1 associées aux broches PD2 et PD3 pour observer les changements d'état des boutons.
+
==Travail à réaliser==
Se référer [[Cours:Atmega328p#Interruption%20externe|à cette page au besoin]]
+
fichier pour simuler avec simulIDE : [[Media:progmicroc_Digicode.sim1|progmicroc_Digicode.sim1]]
  
{{Question|Ecrire un programme qui : }}
+
*écrire un programme qui détecte l'appui sur la touche 3
*change l'état de la led PC4 à chaque appui sur le bouton PD2
+
**configurer de façon adéquate les broches en e/s
*change l'état de la led PC0 à chaque appui sur le bouton PD3
+
**activer la résistance de pull-up
*allumer la led PB5 à l'appui sur PD2 et l'éteint lors de l'appui sur PD3
+
**allumer/éteindre une led suivant l'état de la touche
*met en route/arrête le clignotement de la led PB1 à chaque appui sur PD2
+
*étendre le principe en détectant l'appui sur une touche de la ligne 1
 +
*trouver le numéro de la ligne sur laquelle on appuie
 +
*trouver le numéro de colonne sur laquelle on appuie
 +
*indiquer la touche appuyée

Version actuelle datée du 14 février 2024 à 11:20

Fiche résumé

Retour à la liste des Tds/Tps

Éléments de correction

simuler avec simulIDE

Pensez à mettre sur la 1ère ligne de votre code :
// Compiler: Avrgcc device: nomDuMicrocontroleur
On utilisera à bon escient la page : Cours:CoursM2103#Lire_l'état_d'une_entrée


Exercice : scrutation des entrées

2 leds et 2 bps sont connectés sur un attiny13.

  • une led rouge sur la broche PB2
  • une led verte sur la broche PB0
  • le bouton A sur la broche PB5
  • le bouton B sur la broche PB4

Question.jpg Ecrire les programmes pour répondre aux questions suivantes :

  • allumer la led rouge tant que le bouton A est allumé
  • allumer la led verte tant que le bouton B est allumé
  • faire clignoter la led verte tant que les 2 boutons sont appuyés


fichier pour simuler avec simulIDE : microc_td2-scrutation.sim1


Exercice : utilisation d'un clavier matriciel

Éléments de correction

ClavierMatricielPrincipe.png

Afin de limiter le nombre de broches nécessaires, les claviers matriciels sont organisés en ligne et colonne.

Connections

  • connexions dans le clavier :
    • les boutons sur une même ligne sont tous reliés ensemble (même côté du bouton)
    • les boutons sur une même colonne sont tous reliés ensemble (le côté non utilisé pour les lignes)
  • connexions sur le µcontrôleur :
    • toutes les lignes sont reliées sur le même PORT
    • toutes les colonnes sont reliées sur le même PORT
    • il peut y avoir 2 PORT différents pour ligne et colonne

Principe

Afin de détecter le bouton sur lequel on appuie, il faudra :

  • trouver sur quelle ligne un bouton est appuyé
  • trouver sur quelle colonne un bouton est appuyé

Le principe est symétrique pour ligne et colonne.

On décrira le principe pour détecter le numéro de ligne :

  • on place les colonnes en sortie à l'état 0
  • on active les résistances de pull-up sur les entrées (les lignes)
  • on observe l'état des entrées (les lignes)

Travail à réaliser

fichier pour simuler avec simulIDE : progmicroc_Digicode.sim1
  • écrire un programme qui détecte l'appui sur la touche 3
    • configurer de façon adéquate les broches en e/s
    • activer la résistance de pull-up
    • allumer/éteindre une led suivant l'état de la touche
  • étendre le principe en détectant l'appui sur une touche de la ligne 1
  • trouver le numéro de la ligne sur laquelle on appuie
  • trouver le numéro de colonne sur laquelle on appuie
  • indiquer la touche appuyée