diff --git a/asset/icons/doc/arduino/AUTHORS.md b/asset/icons/doc/arduino/AUTHORS.md
new file mode 100644
index 0000000..50d8d5e
--- /dev/null
+++ b/asset/icons/doc/arduino/AUTHORS.md
@@ -0,0 +1,5 @@
+Icons by Arduino.cc
+
+Licence : http://arduino.cc
+
+Website : http://arduino.cc
diff --git a/asset/icons/doc/arduino/arduino.svg b/asset/icons/doc/arduino/arduino.svg
new file mode 100644
index 0000000..9b2ce50
--- /dev/null
+++ b/asset/icons/doc/arduino/arduino.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/asset/icons/doc/game-icons/system/back-forth.svg b/asset/icons/doc/game-icons/system/back-forth.svg
new file mode 100644
index 0000000..1766be4
--- /dev/null
+++ b/asset/icons/doc/game-icons/system/back-forth.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/asset/icons/doc/python/AUTHORS.md b/asset/icons/doc/python/AUTHORS.md
new file mode 100644
index 0000000..f0fb82b
--- /dev/null
+++ b/asset/icons/doc/python/AUTHORS.md
@@ -0,0 +1,8 @@
+Icons by Python.org
+
+Authors :
+- TM / ®Python Software Foundation
+
+Licence : https://www.python.org/psf/trademarks/
+
+Website : https://www.python.org
diff --git a/asset/icons/doc/python/python.svg b/asset/icons/doc/python/python.svg
new file mode 100644
index 0000000..a98e200
--- /dev/null
+++ b/asset/icons/doc/python/python.svg
@@ -0,0 +1,54 @@
+
+
+
\ No newline at end of file
diff --git a/portail_coulissant/porcou_doc.py b/portail_coulissant/porcou_doc.py
index 6c34b50..12780c4 100644
--- a/portail_coulissant/porcou_doc.py
+++ b/portail_coulissant/porcou_doc.py
@@ -12,31 +12,27 @@
# Documentation du système
################################################################################
-system_card=["model-card", "twins-card", "movement-card", "sensor-card", "gyro-card", "board-card"]
+system_card=["twins-card", "serial-card", "movement-card", "sensor-card", "gyro-card", "board-card", "model-card", "arduino-card"]
card_description ={}
-# Maquette
-card_model_title="Maquette"
-card_model_text=""" Le modèle 3D est basé sur la maquette \n développée par l\"entreprise A4 Technologie. \n
- Les documents techniques et \n pédagogiques signés A4 Technologie \n sont diffusés librement sous licence \n Creative Commons BY-NC-SA."""
-card_model_url=[["Wiki A4 Technologie","https://www.a4.fr/wiki/index.php?title=Portail_coulissant_(BE-APORT-COUL)"]]
-card_description.update({"model-card" : [card_model_title, card_model_text, card_model_url]})
-
# Jumeau numérique
+# Message envoyé (asynchrone) : \n avancer : a, reculer : r, droite : d, \n gauche g, marquer : m et forer : f \n\n\n """
card_twins_title="Jumeau numérique"
card_twins_text=""" jumeau() \n -> Active le jumeau réel.\n
- jumeau_config(port, vitesse) \n -> Définit la configuration de la liaison \n série.
-
- Si le port n\"est pas spécifié, il sera \n recherché automatiquement \n (carte Arduino Uno ou Mega). \n
+ jumeau_config(port, vitesse) \n -> Définit la configuration de la liaison \n série.\n
+ Si le port n\"est pas spécifié, il sera \n recherché automatiquement (carte \n Arduino Uno ou Mega). \n
La vitesse par défaut est 115200 baud."""
-card_twins_url=[["Microcontrôleur Arduino","https://www.arduino.cc/"],
- ["Liaison série : pySerial","https://pythonhosted.org/pyserial/"],
- ["Protocole Firmata : pyFirmata","https://github.com/tino/pyFirmata"]]
+card_twins_url=[]
card_description.update({"twins-card" : [card_twins_title, card_twins_text, card_twins_url]})
-# Message envoyé (asynchrone) : \n avancer : a, reculer : r, droite : d, \n gauche g, marquer : m et forer : f \n\n\n """
- # serie_msg(texte) \n -> Envoi un message \n \n texte=serie_rcpt() \n -> Reçoit un message"""
-
+# Liaison série
+card_serial_title="Liaison série"
+card_serial_text=""" serie_msg(texte) \n -> Envoi un message \n
+ texte=serie_rcpt() \n -> Reçoit un message"""
+card_serial_url=[["Liaison série : pySerial","https://pythonhosted.org/pyserial/"],
+ ["Protocole Firmata : pyFirmata","https://github.com/tino/pyFirmata"]]
+card_description.update({"serial-card" : [card_serial_title, card_serial_text, card_serial_url]})
+
# Ouvrir et fermer
card_movement_title="Ouvrir et fermer"
card_movement_text=""" mot_o (True|False) \n -> Ouvre le portail (moteur sens trigo) \n
@@ -63,10 +59,30 @@ card_description.update({"gyro-card" : [card_gyro_title, card_gyro_text, card_gy
card_board_title="Pupitre"
card_board_text= """ bp_ext() \n -> Bouton poussoir coté rue\n Retourne True si le bouton est pressé.\n
bp_int() \n -> Bouton poussoir coté cour\n Retourne True si le bouton est pressé."""
-# card_board_text=" rp_marquer() \n -> Place une balise sur la case. \n \n Ropy possède que 20 balises, il ne \n peut pas en poser une de plus.\n\n Avec l'amélioration \"Balise +\", le \n nombre de balise transportées est \n étendu à 200."
card_board_url=[]
card_description.update({"board-card" : [card_board_title, card_board_text, card_board_url]})
+# Maquette
+card_model_title="Maquette"
+card_model_text=""" Le modèle 3D est basé sur la maquette \n développée par l\"entreprise A4 Technologie. \n
+ Les documents techniques et \n pédagogiques signés A4 Technologie \n sont diffusés librement sous licence \n Creative Commons BY-NC-SA. \n
+ Le pilotage de la maquette se fait par une \n carte Arduino (Uno ou Mega) reliée à \n l"ordinateur via la liaison série (USB) et le \n protocole Firmata."""
+card_model_url=[["A4 Technologie","https://www.a4.fr"],
+ ["Maquette A4 Technologie","https://www.a4.fr/wiki/index.php?title=Portail_coulissant_(BE-APORT-COUL)"]]
+card_description.update({"model-card" : [card_model_title, card_model_text, card_model_url]})
+
+# Arduino
+card_arduino_title="Arduino"
+card_arduino_text=""" Arduino une plateforme open-source de \n développement électronique basée sur \n le microcontrôleur de la famille ATmega.
+
+ Elle est utilisée pour la création d"objets \n électroniques interactifs et connectés : \n IoT, domotique, robotique, ...
+
+ Le langage de programmation est le C. Par \n la bibliothèque Arduino il est particulièrement \n aisé d"accéder aux entrées/sorties de la
+ carte. Les platines permettent l"ajout \n d"extensions : relais, Grove, RFID, GPS, ... """
+
+card_arduino_url=[["Plateforme Arduino","https://www.arduino.cc/"]]
+card_description.update({"arduino-card" : [card_arduino_title, card_arduino_text, card_arduino_url]})
+
##
# Envoi des données
##
diff --git a/portail_coulissant/portail_coulissant-14.blend b/portail_coulissant/portail_coulissant-14.blend
index 0bf4b10..6fa7eb0 100644
Binary files a/portail_coulissant/portail_coulissant-14.blend and b/portail_coulissant/portail_coulissant-14.blend differ
diff --git a/twin_doc.py b/twin_doc.py
index a4f5ae8..b55a961 100644
--- a/twin_doc.py
+++ b/twin_doc.py
@@ -45,8 +45,8 @@ card_description.update(system.get_card_description())
# Documentation Python
###############################################################################
-# python_card=["function-card", "alternative-card", "loop-card", "flow-card", "text-card", "list-card", "dict-card", "oop-card", "console-card", "sleep-card"]
-python_card=["function-card", "alternative-card", "loop-card", "flow-card", "console-card", "sleep-card"]
+# "oop-card"
+python_card=["function-card", "alternative-card", "loop-card", "flow-card", "text-card", "list-card", "dict-card", "console-card", "sleep-card", "python-card"]
# Fonction
card_function_title="Fonction"
@@ -79,31 +79,55 @@ card_description.update({"loop-card" : [card_loop_title, card_loop_text, card_lo
# Flux
card_flow_title="Contrôle du flux"
-card_flow_text=""" Les structures (if, while, for) peuvent \n être gérées plus finement par les \n fonctions \'break\', \'continue\' et \'pass\'. \n
- - \'break\' : termine l\"itération en cours et \n arrête la boucle.
- - \'continue\' : termine l\"itération en cours et \n reprend la boucle.
- - \'pass\' : instruction vide."""
+card_flow_text=""" Les structures (if, while, for) peuvent \n être gérées plus finement par les \n fonctions 'break', 'continue' et 'pass'. \n
+ - 'break' : termine l"itération en cours et \n arrête la boucle.
+ - 'continue' : termine l"itération en cours et \n reprend la boucle.
+ - 'pass' : instruction vide."""
card_flow_url=[["w3schools.com : break","https://www.w3schools.com/python/ref_keyword_break.asp"],
["w3schools.com : continue","https://www.w3schools.com/python/ref_keyword_break.asp"],
["w3schools.com : pass","https://www.w3schools.com/python/ref_keyword_pass.asp"]]
card_description.update({"flow-card" : [card_flow_title, card_flow_text, card_flow_url]})
-# Chaine de caractère
-card_text_title="Chaîne de caractères\n(texte)"
-card_text_text="\nFIXME"
-card_text_url=[["w3schools.com : strings","https://www.w3schools.com/python/python_strings.asp"]]
+# Chaîne de caractères
+card_text_title="Chaîne de caractères"
+card_text_text=""" Une chaîne de caractères correspond à un \n texte (mot, phrase). Elle est délimitée \n par " ou ' : texte = 'Bonjour ! ' \n
+- texte1 + texte2 : concaténe plusieurs \n chaînes.
+- len(texte) : renvoie la longueur de texte.
+- "\\n" : caractère aller à la ligne.
+- texte[i] : renvoie le caractère du rang i de \n texte (commence à 0).
+- texte[2:5] : renvoie les caractères du rang \n 2 au rang 5.
+- texte.replace("a","b") : remplace les "a" en "b". """
+card_text_url=[
+ ["Doc. Python v3 Français : string","https://docs.python.org/fr/3/library/string.html"],
+ ["w3schools.com : strings","https://www.w3schools.com/python/python_strings.asp"]]
card_description.update({"text-card" : [card_text_title, card_text_text, card_text_url]})
# Liste
card_list_title="Liste"
-card_list_text="FIXME"
-card_list_url=[["w3schools.com : lists","https://www.w3schools.com/python/python_lists.asp"]]
+card_list_text=""" Une liste est une séquence d"éléments. \n Elle est délimitée par des crochets :
+ liste = ['pomme', 7, 'rouge', True] \n
+- liste[i] : renvoie l"élément du rang i de la \n liste (commence à 0).
+- liste.append('neige') : ajoute 'neige' à la \n fin de la liste.
+- len(liste) : renvoie le nombre d"éléments.
+- liste.sort() : classe par ordre croissant la \n liste (alphabétiquement / numériquement).
+- liste.remove('rouge') : enlève la première \n occurence de la valeur."""
+card_list_url=[
+ ["Doc. Python v3 Français : list","https://docs.python.org/fr/3/library/stdtypes.html#sequence-types-list-tuple-range"],
+ ["w3schools.com : lists","https://www.w3schools.com/python/python_lists.asp"]]
card_description.update({"list-card" : [card_list_title, card_list_text, card_list_url]})
# Dictionnaire
card_dict_title="Dictionnaire"
-card_dict_text="FIXME"
-card_dict_url=[["w3schools.com : dictionaries","https://www.w3schools.com/python/python_dictionaries.asp"]]
+card_dict_text=""" Une liste est une collection d"éléments. \n Elle est délimitée par des accolades, \n chaque valeur comporte une clé unique :
+ dico = {'nom' : 'Haddock', 'prénom' : \n 'Archibald', 'année' : 1940} \n
+- dico[clé] : renvoie la valeur liée à la clé.
+- dico.update('domicile' : 'Moulinsart') : met \n à jour les paires de clé/valeur.
+- len(dico) : renvoie le nombre d"éléments.
+- list(dico) : renvoie la liste des clés.
+- dico.pop("année") : enlève la valeur associée \n à la clé."""
+card_dict_url=[
+ ["Doc. Python v3 Français : dict","https://docs.python.org/fr/3/library/stdtypes.html#mapping-types-dict"],
+ ["w3schools.com : dictionaries","https://www.w3schools.com/python/python_dictionaries.asp"]]
card_description.update({"dict-card" : [card_dict_title, card_dict_text, card_dict_url]})
# Objet (POO)
@@ -127,9 +151,18 @@ card_sleep_title="Gestion du temps"
card_sleep_text=" Vous pouvez créer des temporisations \n dans le déroulement du script.\n\n"
card_sleep_text= card_sleep_text + " time.sleep(x) \n -> Marque d\"un temps d\"arrêt de \n x secondes.\n\n"
card_sleep_text= card_sleep_text + " Il faudra préalablement importer la \n bibliothèque \'time\' avec \'import time\'."
-card_sleep_url=[["docs.python.org : sleep","https://docs.python.org/fr/3/library/time.html#time.sleep"]]
+card_sleep_url=[["Doc. Python v3 Fr : sleep","https://docs.python.org/fr/3/library/time.html#time.sleep"]]
card_description.update({"sleep-card" : [card_sleep_title, card_sleep_text, card_sleep_url]})
+# Python
+card_python_title="Langage Python"
+card_python_text=""" Le Python est un langage de programmation \n interprété open source. Python vise à être \n visuellement épuré avec une syntaxe \n clairement séparée des mécanismes de \n bas niveau.\n
+ Python possède beaucoup de bibliothèques \n spécialisées. Multiplateformes et \n multiparadigme, il est utilisé dans de \n nombreux contextes : scriptage, calcul \n numérique, prototypage, enseignement, \n ou encore comme langage de commande \n pour de nombreux logiciels."""
+
+card_python_url=[["python.org","https://python.org"], ["AFPy","https://www.afpy.org"]]
+card_description.update({"python-card" : [card_python_title, card_python_text, card_python_url]})
+
+
###############################################################################
# Interface
###############################################################################