Vous êtes sur la page 1sur 8

Comment programmer

7 une machine qui trie


des objets par couleur ?

Compétences utiles pour résoudre cette problématique


◗ CT 4.2 - Appliquer les principes élémentaires de l’algorithmique et du codage
à la résolution d’un problème simple.
◗ CS 5.7 - Analyser le comportement attendu d’un système réel et décomposer
le problème posé en sous problèmes afin de structurer un programme de commande.

J'analyse des situations

Détection Tri des billes


des couleurs

Détecteur Éjecteur
de couleur

Détecteurs de présence

164890_chap7_situation
1 Comment le microprocesseur qui gère le système peut-il déterminer la couleur

de chaque bille ?

Le microprocesseur va lire la couleur à l’aide du détecteur de couleur


�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

lorsqu’une bille sera devant le détecteur de présence.


�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

2 C
 omment le système peut-il être informé du passage d’une bille ?

Le système détecte la présence des billes grâce aux détecteurs de présence.


© NATHAN - La photocopie non autorisée est un délit.

�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

3 C
 omment le système peut-il savoir comment éjecter chaque bille dans la bonne
zone ?

Après avoir détecté la couleur en zone de détection des couleurs, le système sait ce qu’il doit
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

faire lors de la détection de la bille en zone de tri de bille. À noter que l’espace entre 2 billes doit
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

être plus grand que la distance entre les 2 détecteurs de présence.


59
Je construis mon savoir et mes compétences

1 Répéter plusieurs fois la même séquence


d’instruction  ❏ CT 4.2
Définitions
Pour réaliser plusieurs fois la même séquence d’instruction, on utilise les
boucles. Il existe 3 catégories de boucles, ci-dessous illustrées avec le logiciel
de programmation Blockly :
– celle qui répète des instructions tant qu’un critère n’est pas vérifié,
– celle qui répète des instructions jusqu’à ce qu’un critère soit vérifié,
– celle qui exécute des instructions en faisant varier une variable d’une valeur
à une autre.
Les boucles infinies sont très souvent utilisées pour programmer les systèmes
embarqués dont le rôle est d’effectuer la même tâche tant qu’ils sont allumés.

1 Reliez chaque proposition au bloc de programme qui lui correspond.

La boucle s’arrête quand une entrée


    
du microcontrôleur change d’état.

La boucle s’arrête quand la valeur


est atteinte.     

La boucle ne s’arrête jamais.     

La boucle s’arrête après


5 passages.     

2 Que fait le programme ci-contre ?

Le programme va indéfiniment lire la couleur


............................................................................................................................................

et si la couleur est > 200 alors le moteur


............................................................................................................................................ Vrai si la couleur est rouge

est activé jusqu’à ce que « Présence1 » soit


............................................................................................................................................
activée. Si couleur ≤ 200 alors le moteur
est désactivé.
............................................................................................................................................

Si un programme en Blockly permet de mettre en œuvre


un algorithme, la mise au point ou la phase de réflexion Début
peut se faire sur papier à l’aide d’un algorigramme.
© NATHAN - La photocopie non autorisée est un délit.

3 Réalisez, sous Blockly, le programme correspondant Lire valeur analogique


C1 et stocker dans VarA
à l’algorigramme ci-contre, prenez une carte PICAXE
de type 18M2. Corrigé p. 66
VarA > 100 Non
4
Modifiez ce programme pour que les instructions Attendre 1s
réalisées quand l’entrée « VarA » est plus petite que
100, soit : Oui
– répéter 3 fois : sortie C2 activée, attendre 1 s, sortie Sortie C3 activée
C2 désactivée, attendre 1 s. Corrigé p. 66

60 7 Comment programmer une machine qui trie des objets par couleur ?
2 Réaliser une instruction sous condition
et utiliser une variable ❏ CT 4.2

Définitions
Une autre structure de contrôle élémentaire est la condition. Si la condition
est vraie alors les instructions sont réalisées, sinon on passe.
Dans un programme, des variables peuvent être utilisées pour stocker des
informations comme l’état d’une porte (ouverte ou fermée).
Il est important d’initialiser les variables au début du programme pour impo-
ser la valeur initiale.

1 Que vaut « varA » à la fin du programme


ci-contre ?
4

x 5
6


2 Que vaut « varA » à la fin du programme 


ci-contre?
4

2
 0
x 1 6

Le programme ci-contre est l’ébauche du


programme permettant de gérer l’ouverture et
la fermeture automatique d’un poulailler selon
qu’il fait jour ou nuit.

3 Expliquez à quelle action correspond ce début de programme.

Si la luminosité est trop faible, on fait tourner le moteur dans le sens 1 pour fermer la porte.
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

4 Saisissez ce programme sur Blockly puis modifiez-le pour qu’il ouvre la porte
si la luminosité est supérieure à 245, en créant la variable « Moteur sens2 » qui
permet d’ouvrir la porte. Corrigé p. 66

5 Que se passe-t-il lorsque la luminosité est inférieure à 10 et que la porte est déjà
© NATHAN - La photocopie non autorisée est un délit.

fermée ?

Le moteur continue d’être alimenté alors qu’il est en butée.


�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

Il�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
risque de chauffer et de tomber en panne.

6 Pour éviter ce problème, ajoutez une variable « porte_ouverte » qui sera égale
à 0 quand la porte sera fermée et à 1 quand la porte sera ouverte.
Modifiez le programme pour que le moteur ne force pas. Corrigé p. 66

61
3 Décomposer un problème ❏ CT 5.7

Définitions
En informatique, il faut essayer de décomposer le programme à réaliser en
sous-fonctions ou tâches élémentaires. En séparant les difficultés, la résolu-
tion du problème sera plus aisée, la lecture du programme principal sera plus
simple, chaque tâche pourra être réutilisée plusieurs fois dans le programme.

Le programme principal ci-contre correspond à la ges- début


tion du système de la porte du poulailler de l’exercice
répéter indéfiniment
précédent.
faire appeler sous-fonction
1 Proposez un nom à chacune de ses sous-fonctions. appeler sous-fonction

Gestion ouverture / gestion fermeture.


�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

On considère un système automatisé de déplacement de pièces ( Doc. 2 ) d’une zone


A vers une zone B à l’aide d’une pince. Des capteurs permettent de savoir si la pince
est en zone A en bas (a0) ou en haut (a1), si la pince est en zone B en bas (b0) ou en
haut (b1). Les commandes permettant de déplacer la pince sont « Monter »,
« Descendre », « Gauche » et « Droite ».

Début Début « Aller en A » Début « Aller en B » 


a1 b1

Monter Monter Pince Gauche / Droite

Présence Monter/Descendre
Non
Pièce en Non Non a0
zone A b1 a1 b0
Oui Pièce
Oui
Oui Zone A Mur
Zone B
Gauche Droite
Aller en A Doc. 2

164890_chap7_ex3
Non Non
Charger l’objet a1 b1
Oui Oui
Aller en B Descendre Descendre

Décharger l’objet
a0
Non
b0 Non

Oui Oui
Fin « Aller en A » Fin « Aller en B »

L’algorigramme ci-dessus décrit le comportement attendu. Il est composé d’un algo-


rigramme principal et de sous-fonctions.

2 En observant l’algorigramme, décrivez le comportement du système.


On supposera que la pince se situe en zone B au début du programme et
qu’une pièce est présente en zone A.
© NATHAN - La photocopie non autorisée est un délit.

Le système monte jusqu’à b1 puis il va à gauche jusqu’à a1, puis il descend jusqu’à a0.
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

Enfin, il attend que la pièce soit chargée avant de retourner en zone B de la même manière.
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

3 Complétez l’algorigramme ci-dessus correspondant à la sous-fonction « Aller en B ».

62 7 Comment programmer une machine qui trie des objets par couleur ?
J’applique une démarche de projet
La situation
Comment programmer une machine qui trie
des objets par couleur ?
On souhaite réaliser le programme gérant le fonctionnement du trieur de
bille décrit en première page. On suppose que vous avez à disposition :
– un capteur RVB (= capteur de couleur)
– deux détecteurs de présence
– deux éjecteurs
Comme sur le schéma p. 59, le système est composé d’un tapis roulant
qui amène des billes de couleurs régulièrement espacées. Les billes Doc. 3 É
 jecteur
passent devant un capteur RVB qui permet de déterminer si la bille est
rouge ou non, puis elles avancent devant les éjecteurs associés chacun à un cap-
teur de présence. Le système doit trier les billes rouges en les éjectant dans la
bonne zone.
L’espace entre deux billes est suffisamment grand pour permettre l’éjection de la
première avant que la seconde ne passe devant le capteur RVB.
Pour réaliser le programme, il sera nécessaire de le décomposer en plusieurs
sous-fonctions. Il pourrait être utile de créer des algorigrammes pour bien décrire le
comportement voulu. Chaque sous-fonction sera réalisée séparément puis l’ensemble
du travail sera mis en commun afin de simuler le comportement global du système.

LA DÉMARCHE

Étape 1 LE BESOIN
Analysez le besoin.
Corrigé voir page suivante.

Étape 2 LE CAHIER DES CHARGES


Rédigez le cahier des charges en indiquant les contraintes
à respecter et les critères à prendre en compte.

Étape 3 L’ÉCO-CONCEPTION*
Effectuez la conception du système en privilégiant les énergies et
les matériaux les plus respectueux de l’environnement.

Étape 4 LE PROTOTYPE OU LA SIMULATION


Réalisez un prototype du projet ou sa simulation numérique.
LE PROJET
Étape 5 LA VALIDATION DES SOLUTIONS EST ABOUTI SI :
Vérifiez grâce à la simulation ou par des mesures et ✔ Le problème est
des tests sur le prototype que les contraintes du cahier décomposé en plusieurs sous-
© NATHAN - La photocopie non autorisée est un délit.

des charges sont bien respectées. fonctions permettant de lire


la couleur de chaque bille,
de conserver cette information
jusqu’ au passage devant les
éjecteurs et d’éjecter la bille
au bon endroit..
✔ Le programme est créé
et testé par simulation ou
expérimentalement.

63
Je fais le bilan

TEST EXPRESS
1 Un algorigramme permet de mettre en 4 Que vaut « VarA » à la fin de ce
place un programme sans logiciel de programme ?
programmation. 9
x
Vrai    F
 aux x 10
11
2 Décomposez un programme complexe
en sous-fonctions permet de :
x s éparer les difficultés. 5 Que vaut « varB » à la fin de ce
x réutiliser les sous-fonctions à programme ?
différents endroits du programme. 10
traiter à part les points les moins 5
importants. x 0
3 Reliez chaque élément algorithmique
à sa fonction.
Stocker une
Boucle valeur

Test Répéter des


instructions

Effectuer des
Variable instructions
sous condition

À RETENIR
La décomposition d’un problème en sous-fonctions plus simples permet de séparer les
.............................................

difficultés, de travailler en équipe et de réutiliser des sous-fonctions à différents endroits.


.........................................................................................................................................................................................................................................

........................................................................................................................................................................................................................................

Les boucles dans les algorithmes permettent de répéter une séquence


.................................................................................................................

d’instructions jusqu’à ce qu’un critère soit atteint.


.........................................................................................................................................................................................................................................

Les boucles infinies sont très utilisées pour les systèmes embarqués pour faire tourner
............................................................................................................................

indéfiniment le programme principal.


......................................................................................................................................................................................................................................... 
© NATHAN - La photocopie non autorisée est un délit.

Les instructions conditionnelles dans les algorithmes permettent de réaliser une séquence
..............................................................

d’instructions sous condition.


........................................................................................................................................................................................................................................

Les variables permettent de stocker des valeurs pour les réutiliser à d’autres endroits.
................................................................................................................................................................

Cela permet par exemple de stocker l’état dans lequel le système se trouve.
........................................................................................................................................................................................................................................

........................................................................................................................................................................................................................................

64 7 Comment programmer une machine qui trie des objets par couleur ?
Corrigé de la démarche

Étape 1
Le programme peut ainsi se décomposer en deux parties :
– Lire la couleur de la bille quand elle passe devant le détecteur de présence de la zone de détection des couleurs.
– Éjecter la bille dans la bonne zone en fonction de la couleur.

Étape 2 (non réalisable pour cette démarche)

Étapes 4 et 5
Le programme Blockly est donné ci-dessous avec ses sous-fonctions :

Pour aller plus loin, on pourrait considérer que l’espace entre 2 billes successives peut être inférieur à la
distance à parcourir avant d’arriver dans la zone d’éjection. Ainsi, il faut stocker dans une liste la couleur
des billes successives.
On aurait alors :

65
1 Corrigé 
3 4

2 Corrigé 
4 6

66 7 Comment programmer une machine qui trie des objets par couleur ?