{"id":2490,"date":"2022-12-13T08:57:34","date_gmt":"2022-12-13T13:57:34","guid":{"rendered":"http:\/\/ve2cuy.com\/420-1c4\/?page_id=2490"},"modified":"2024-03-18T09:39:29","modified_gmt":"2024-03-18T14:39:29","slug":"formatif-de-lepreuve-synthese","status":"publish","type":"page","link":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/formatif-de-lepreuve-synthese\/","title":{"rendered":"Formatif de l&rsquo;\u00e9preuve synth\u00e8se 2022"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2022\/12\/equipe.jpeg\" alt=\"\" class=\"wp-image-2491\" width=\"582\" height=\"404\" srcset=\"https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2022\/12\/equipe.jpeg 624w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2022\/12\/equipe-300x208.jpeg 300w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/><\/figure>\n<\/div>\n\n\n<h1 class=\"has-cyan-bluish-gray-color has-text-color wp-block-heading\">1 &#8211; \u00c0 partir du syst\u00e8me fonctionnel suivant:<\/h1>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color wp-block-heading\">1.1 &#8211; L&rsquo;\u00e9cran de simulation<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1392\" height=\"1268\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2022\/12\/formatif2022.gif\" alt=\"\" class=\"wp-image-2495\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">NOTE<\/mark><\/strong>: Prendre le temps de regarder la simulation au complet<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"has-luminous-vivid-orange-color has-text-color wp-block-heading\">1.2 &#8211; Le code source (<strong>sketch.ino<\/strong>)<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include \"Streaming.h\"\n#include &lt;LiquidCrystal_I2C.h>\n\n\/\/ ********************************************************\n\/\/ Les enum\nenum codesAlarme {\n  evenement_detection_mouvement,\n  ACK_evenement_detection_mouvement,\n  evenement_systeme_enligne,\n  ACK_evenement_systeme_enligne\n};\n\/\/ ********************************************************\n\n\/\/ ********************************************************\n\/\/ Les constantes (MACRO)\n#define   UART_CENTRALE               Serial3\n#define   UART_SYSTEME_ALARME         Serial1\n#define   UART_VITESSE_CONSOLE        9600\n#define   UART_VITESSE_CENTRALE       115200\n#define   UNE_SECONDE                 1000\n#define   DEMI_SECONDE                500\n#define   DELAI_TRANSMISSION_MESSAGE  UNE_SECONDE * 2\n#define   BOUTON_DELAI_REBOND         50\n#define   LCD_NB_LIGNE                4\n#define   LCD_NB_COLONNE              20\n#define   LCD_LIGNE1                  0\n#define   LCD_LIGNE2                  1\n#define   LCD_LIGNE3                  2\n#define   LCD_LIGNE4                  3\n#define   LCD_PREMIERE_COLONNE        0\n#define   LCD_ADRESSE_I2C             0x27\n#define   DETECTEUR_MOUVEMENT_ENTREE  7\n\n\/\/ ********************************************************\n\/\/ D\u00e9claration des fonctions\nvoid      initialisationDesAppareils();\n\/\/ ********************************************************\n\n\/\/ ********************************************************\n\/\/ Variables Globales\nLiquidCrystal_I2C ecranPrincipal(LCD_ADRESSE_I2C,LCD_NB_COLONNE,LCD_NB_LIGNE);\n\/\/ ********************************************************\n\n\/\/ ********************************************************\n\/\/                    D\u00e9but du programme\n\/\/ ********************************************************\n\n\/\/ ********************************************************\nvoid setup() \n\/\/ ********************************************************\n{\n  Serial.begin(UART_VITESSE_CONSOLE);   \n  initialisationDesAppareils();\n\n  ecranPrincipal.setCursor(0,1);\n  ecranPrincipal &lt;&lt; \"Connexion ....\";\n  if (connexionALaCentrale()){\n      ecranPrincipal.setCursor(0,2);\n      ecranPrincipal &lt;&lt; \"Systeme en ligne\"; \n  }\n\n}\n\n\/\/ ********************************************************\nvoid loop() \n\/\/ ********************************************************\n{\n  bool alarmeON = true;\n  afficherTempsEcoule();\n\n  if (digitalRead(DETECTEUR_MOUVEMENT_ENTREE)) {\n      Serial &lt;&lt; \"DETECTEUR_MOUVEMENT_ENTREE\\n\";\n      ecranPrincipal.clear();\n      ecranPrincipal &lt;&lt; \"Detection mouvement\";\n      Serial &lt;&lt; \"Aviser la centrale de l'intrusion\\n\";\n      envoyerMessageVersLaCentrale(evenement_detection_mouvement);\n      while(digitalRead(DETECTEUR_MOUVEMENT_ENTREE)); \/\/ S'assurer que le d\u00e9tecteur est d\u00e9tendu.\n      ecranPrincipal.clear();\n  }\n\n} \/\/ loop()\n\n\n\/\/ ********************************************************\nvoid initialisationDesAppareils()\n\/\/ ********************************************************\n{\n\n  ecranPrincipal.begin(LCD_NB_COLONNE,LCD_NB_LIGNE);\n  ecranPrincipal.backlight();\n  ecranPrincipal &lt;&lt; \"Initialisation...\";\n\n  UART_SYSTEME_ALARME.begin(UART_VITESSE_CENTRALE);\n  UART_CENTRALE.begin(UART_VITESSE_CENTRALE);\n  pinMode(DETECTEUR_MOUVEMENT_ENTREE, INPUT);\n\n} \/\/ initialisationDesAppareils\n\n\n\/\/ ********************************************************\nboolean connexionALaCentrale()\n\/\/ ********************************************************\n{\n  byte codeAlarme;\n  Serial &lt;&lt; F(\"Tentative de connexion \u00e0 la centrale ...\") &lt;&lt; endl;\n  UART_SYSTEME_ALARME.write(evenement_systeme_enligne);\n  delay(DELAI_TRANSMISSION_MESSAGE);\n\n  if (UART_CENTRALE.available()){\n    Serial &lt;&lt; F(\"UART_CENTRALE.available()\") &lt;&lt; endl;\n    codeAlarme = UART_CENTRALE.read();\n\n    switch (codeAlarme)  {\n\n      case evenement_systeme_enligne: \n      Serial &lt;&lt; F(\"evenement_systeme_enligne\") &lt;&lt; endl;\n      Serial &lt;&lt; F(\"Succes: Connexion \u00e0 la centrale ...\") &lt;&lt; endl;\n\n      \/\/afficherPageEcran(centraleSystemeEnLigne);\n      return true;\n      break;\n\n      default:  \n       \n      Serial &lt;&lt; \"Evenement non trait\u00e9\" &lt;&lt; endl;\n             \n      break;\n\n    } \/\/ switch\n\n  } \/\/ if available()\n\n  return false;\n} \/\/ connexionALaCentrale\n\n\/\/ ********************************************************\nboolean envoyerMessageVersLaCentrale(codesAlarme message)\n\/\/ ********************************************************\n{\n  byte codeAlarme;\n  Serial &lt;&lt; F(\"envoyerMessageVersLaCentrale\") &lt;&lt; endl;\n  UART_SYSTEME_ALARME.write(message);\n  delay(DELAI_TRANSMISSION_MESSAGE);\n\n  if (UART_CENTRALE.available()){\n     Serial &lt;&lt; F(\"UART_CENTRALE.available()\") &lt;&lt; endl;\n     Serial &lt;&lt; F(\"La centrale a re\u00e7u le message: \");\n    codeAlarme = UART_CENTRALE.read();\n\n    switch (codeAlarme)  {\n\n      case evenement_detection_mouvement: \n \n      Serial &lt;&lt; F(\"evenement_detection_mouvement\") &lt;&lt; endl;\n      return true;\n      break;\n\n      default:  \n      Serial &lt;&lt; \"Evenement non trait\u00e9\" &lt;&lt; endl;\n      break;\n\n    } \/\/ switch\n\n  } \/\/ if available()\n\n  return false;\n} \/\/ connexionALaCentrale\n\n\n\/\/ ***************************************************\nvoid afficherTempsEcoule() {\n\/\/ ***************************************************\n  static unsigned long depart = millis();\n\n  if (millis() - depart &lt; UNE_SECONDE) return;\n\n  char bufferLigneLCD[21];   \/\/ Vecteur pour construire le message \u00e0 afficher\n  depart = millis();         \/\/ R\u00e9initialiser le temps qui passe ...\n\n  unsigned long tempsEcoule = millis() \/ 1000;\n  int secondes =  tempsEcoule % 60;\n  int minutes  =  (tempsEcoule \/ 60 ) % 60;\n  int heures   =  (tempsEcoule \/ 3600 ) % 24;\n  int jours    =  0;\n\n  snprintf(bufferLigneLCD, LCD_NB_COLONNE + 1, \"Actif: %03d, %02d:%02d:%02d\", 0, heures, minutes, secondes );\n  ecranPrincipal.setCursor(LCD_PREMIERE_COLONNE,LCD_LIGNE4);\n  ecranPrincipal.print(bufferLigneLCD);\n} \/\/ afficherTemps()\n\n\/\/ ********************************************************\n\/\/                    Fin du programme\n\/\/ ********************************************************<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">NOTE<\/mark><\/strong>:  Ce code source est fonctionnel et produit le r\u00e9sultat de l&rsquo;animation de la simulation 1.1<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"has-cyan-bluish-gray-color has-text-color wp-block-heading\">1.3 &#8211; Le sch\u00e9ma du syst\u00e8me (diagram.json)<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n  \"version\": 1.02,\n  \"author\": \"Alain Boudreault\",\n  \"editor\": \"wokwi\",\n  \"parts\": [\n    { \"type\": \"wokwi-arduino-mega\", \"id\": \"mega\", \"top\": -16.21, \"left\": 449.2, \"attrs\": {} },\n    {\n      \"type\": \"wokwi-lcd2004\",\n      \"id\": \"lcd1\",\n      \"top\": -218.29,\n      \"left\": 469.8,\n      \"attrs\": { \"pins\": \"i2c\", \"background\": \"blue\", \"color\": \"white\" }\n    },\n    {\n      \"type\": \"wokwi-pir-motion-sensor\",\n      \"id\": \"pir1\",\n      \"top\": -216.95,\n      \"left\": 373.95,\n      \"attrs\": {}\n    }\n  ],\n  \"connections\": [\n    [ \"mega:19\", \"mega:14\", \"black\", [ \"v-16.99\", \"h-48\" ] ],\n    [ \"mega:18\", \"mega:15\", \"black\", [ \"h9.69\", \"v-16.99\", \"h-47.57\", \"v16.99\" ] ],\n    [ \"pir1:OUT\", \"mega:7\", \"black\", [ \"v15.38\", \"h-9.53\", \"v85.45\", \"h268.33\" ] ],\n    [ \"mega:49\", \"mega:51\", \"black\", [ \"v0.51\", \"h-4.54\" ] ],\n    [\n      \"pir1:GND\",\n      \"mega:GND.1\",\n      \"black\",\n      [ \"v17.09\", \"h-0.33\", \"v24.3\", \"h-0.09\", \"v21.41\", \"h-18.52\", \"v38.03\", \"h197.02\" ]\n    ],\n    [ \"lcd1:GND\", \"pir1:GND\", \"black\", [ \"h-0.09\", \"v123.66\", \"h-83.59\" ] ],\n    [ \"lcd1:VCC\", \"pir1:VCC\", \"black\", [ \"v-9.83\", \"h-0.93\", \"v124.21\", \"h-102.21\" ] ],\n    [ \"pir1:VCC\", \"mega:5V\", \"black\", [ \"v100.95\", \"h242.96\", \"v93.43\", \"h0.08\" ] ],\n    [ \"lcd1:SDA\", \"mega:SDA\", \"black\", [ \"v104.88\", \"h-63.62\", \"v38.29\", \"h139.02\" ] ],\n    [ \"lcd1:SCL\", \"mega:SCL\", \"black\", [ \"v95.38\", \"h-63.62\", \"v38.3\", \"h129.02\" ] ]\n  ],\n  \"dependencies\": {}\n}<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"has-vivid-cyan-blue-color has-text-color wp-block-heading\">2 &#8211; Apporter les modifications suivantes<\/h1>\n\n\n\n<h3 class=\"has-black-color has-text-color wp-block-heading\">2.1 &#8211; Ajouter une <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">DEL<\/mark> (LED)<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">2.2 &#8211; Allumer la <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">DEL<\/mark> lorsque le d\u00e9tecteur de mouvement est activ\u00e9<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">2.3 &#8211; Modifier la fonction &lsquo;<em><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">envoyerMessageVersLaCentrale()<\/mark><\/strong><\/em>&lsquo;<\/h3>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">La fonction doit retourner une valeur de type <strong><em>enum<\/em><\/strong> &lsquo;<strong><em>codesAlarme<\/em><\/strong>&lsquo; transmit par <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">UART_CENTRALE<\/mark><\/strong> .  Par exemple, si la fonction &lsquo;<em><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">envoyerMessageVersLaCentrale<\/mark><\/strong><\/em>&lsquo; re\u00e7oit la valeur &lsquo;<em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">evenement_detection_mouvement<\/mark><\/em>&lsquo;, ce code doit \u00eatre transmit \u00e0 <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">UART_CENTRALE<\/mark><\/strong> et <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">UART_SYSTEME_ALARME<\/mark><\/strong> attend la r\u00e9ponse.  Cette r\u00e9ponse sera le code transmit avec comme pr\u00e9fix &lsquo;<strong><em>ACK<\/em><\/strong>&lsquo;. <\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Par exemple:  <em><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">envoyerMessageVersLaCentrale(evenement_detection_mouvement)<\/mark><\/strong><\/em> doit retourner <em><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">ACK_evenement_detection_mouvement<\/mark><\/strong><\/em>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Exemple\n#define CODE_INVALIDE -1\n\nplacerIciLeBonType envoyerMessageVersLaCentrale(codesAlarme message)\n{\n  byte codeAlarme;\n  Serial &lt;&lt; F(\"envoyerMessageVersLaCentrale\") &lt;&lt; endl;\n  UART_SYSTEME_ALARME.write(message);\n  delay(DELAI_TRANSMISSION_MESSAGE);\n\n  if (UART_CENTRALE.available()){\n     Serial &lt;&lt; F(\"UART_CENTRALE.available()\") &lt;&lt; endl;\n     Serial &lt;&lt; F(\"La centrale a re\u00e7u le message: \");\n     codeAlarme = UART_CENTRALE.read();\n\n    switch (codeAlarme)  {\n\n      case evenement_detection_mouvement: \n \n          Serial &lt;&lt; F(\"evenement_detection_mouvement\") &lt;&lt; endl;\n\n          \/\/ *************** Section \u00e0 compl\u00e9ter !!\n          \/\/ A - La centrale doit transmettre le code de confirmation 'ACK_evenement_detection_mouvement'\n          \/\/ B - Le syst\u00e8me d'alarme attend la r\u00e9ponse de la centrale\n          \/\/ C - Le syst\u00e8me d'alarme lit la r\u00e9ponse de la centrale et la retourne (return).\n          break;\n\n      default:  Serial &lt;&lt; \"Evenement non trait\u00e9\" &lt;&lt; endl;\n                break;\n\n    } \/\/ switch\n\n  } \/\/ if available()\n\n  return CODE_INVALIDE;\n} \/\/ connexionALaCentrale<\/pre>\n\n\n\n<h3 class=\"has-text-align-left wp-block-heading\">2.4 &#8211; Lorsque la valeur retourn\u00e9e par la fonction &lsquo;<em><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">envoyerMessageVersLaCentrale()<\/mark><\/strong><\/em>&lsquo; est \u00e9gale \u00e0 &lsquo;<em><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">ACK_evenement_detection_mouvement<\/mark><\/strong><\/em>&lsquo;, il faut alors \u00e9teindre la <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">DEL<\/mark>.  <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">NOTE<\/mark>:  Ne pas \u00e9teindre la DEL dans la fonction <em><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">envoyerMessageVersLaCentrale()<\/mark><\/strong><\/em>.<\/h3>\n\n\n\n<h3 class=\"has-text-align-left wp-block-heading\">2.5 &#8211; Afficher dans la console de d\u00e9boggage que si la macro <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">_DEBUG_<\/mark> est d\u00e9finie.<\/h3>\n","protected":false},"excerpt":{"rendered":"<p>1 &#8211; \u00c0 partir du syst\u00e8me fonctionnel suivant: 1.1 &#8211; L&rsquo;\u00e9cran de simulation NOTE: Prendre le temps de regarder la simulation au complet 1.2 &#8211; Le code source (sketch.ino) NOTE: Ce code source est fonctionnel et produit le r\u00e9sultat de l&rsquo;animation de la simulation 1.1 1.3 &#8211; Le sch\u00e9ma du syst\u00e8me (diagram.json) 2 &#8211; Apporter [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ub_ctt_via":"","footnotes":""},"class_list":["post-2490","page","type-page","status-publish","hentry"],"featured_image_src":null,"_links":{"self":[{"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/pages\/2490","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/comments?post=2490"}],"version-history":[{"count":18,"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/pages\/2490\/revisions"}],"predecessor-version":[{"id":2518,"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/pages\/2490\/revisions\/2518"}],"wp:attachment":[{"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/media?parent=2490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}