{"id":5217,"date":"2022-11-25T18:55:37","date_gmt":"2022-11-25T17:55:37","guid":{"rendered":"https:\/\/www.breizh56.fr\/crepp2024\/?page_id=5217"},"modified":"2022-12-10T10:40:59","modified_gmt":"2022-12-10T09:40:59","slug":"221210-atelier3-programme-kit-solaire","status":"publish","type":"page","link":"https:\/\/www.breizh56.fr\/crepp2024\/221210-atelier3-programme-kit-solaire\/","title":{"rendered":"221210: atelier3, programme kit solaire"},"content":{"rendered":"<div>Suite aux 1ers essais de notre maquette kit de suivi solaire,<\/div>\n<div>\n<div>J&rsquo;ai pr\u00e9f\u00e9r\u00e9 modifier le c\u00e2blage pour simplifier la programmation.<\/div>\n<div>On verra cette modif au prochain atelier du 10\/12\/2022.<\/div>\n<div><\/div>\n<div>\n<div>Cependant, pour ceux qui m&rsquo;ont demand\u00e9 les infos en avance, voici ci-joint:<\/div>\n<div><strong>&#8211; Les instructions de c\u00e2blage et l&rsquo;alignement du moteur inclinaison,<\/strong><\/div>\n<div><a href=\"https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/Kit_suivi_solaire_-_Cablage_2022_11_25.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5222 size-full\" src=\"https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/Kit_suivi_solaire_-_Cablage_2022_11_25.png\" alt=\"\" width=\"1890\" height=\"1134\" srcset=\"https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/Kit_suivi_solaire_-_Cablage_2022_11_25.png 1890w, https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/Kit_suivi_solaire_-_Cablage_2022_11_25-300x180.png 300w, https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/Kit_suivi_solaire_-_Cablage_2022_11_25-768x461.png 768w, https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/Kit_suivi_solaire_-_Cablage_2022_11_25-1024x614.png 1024w\" sizes=\"(max-width: 1890px) 100vw, 1890px\" \/><\/a><\/div>\n<div><\/div>\n<div><strong>&#8211; La page du catalogue<\/strong> o\u00f9 a \u00e9t\u00e9 achet\u00e9 le kit.<\/div>\n<\/div>\n<\/div>\n<div><a href=\"https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/Kit-De-D\u00e9marrage-Solaire-Complet-Pour-Arduino-Kit-De-Suivi-De-La-Lumi\u00e8re-Avec-Panneau-Solaire-Intelligent-AliExpress.pdf\">Kit De D\u00e9marrage Solaire Complet Pour Arduino, Kit De Suivi De La Lumi\u00e8re Avec Panneau Solaire Intelligent,- AliExpress<\/a><\/div>\n<div><a href=\"https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/AliExpresMontage.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5233 size-full\" src=\"https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/AliExpresMontage.png\" alt=\"\" width=\"1023\" height=\"7026\" srcset=\"https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/AliExpresMontage.png 1023w, https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/AliExpresMontage-768x5275.png 768w, https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/AliExpresMontage-149x1024.png 149w\" sizes=\"(max-width: 1023px) 100vw, 1023px\" \/><\/a><\/div>\n<div><\/div>\n<div>\n<div><\/div>\n<\/div>\n<div><strong>&#8211; Le programme<\/strong> (\u00e0 d\u00e9compresser): vous pouvez le t\u00e9l\u00e9verser dans la carte,<\/div>\n<div><a href=\"https:\/\/www.breizh56.fr\/crepp2024\/wp-content\/uploads\/2022\/11\/Kit_suivi_solaire_-_Programme_2022_11_18.zip\">Kit_suivi_solaire_-_Programme_2022_11_18<\/a><\/div>\n<p>code:<\/p>\n<pre>\/*\r\n\r\n Traceur solaire 4 capteurs de lumi\u00e8re.\r\n \r\n Le programme:\r\n - lit les 4 capteurs de lumi\u00e8re,\r\n - Les interpretes pour d\u00e9cider vers o\u00f9 s'orienter,\r\n - et fait tourner les 2 servos moteurs pour s'aligner vers la lumi\u00e8re.\r\n\r\n Cr\u00e9\u00e9 le 1 Sep 2022, par Xavier Lesot, bas\u00e9 sur : https:\/\/www.instructables.com\/DIY-Miniature-Solar-Tracker\/\r\n Modifi\u00e9 le 4 Nov 2022, par Xavier Lesot : Ajout des commentaires.\r\n Modifi\u00e9 le 18 Nov 2022, par Xavier Lesot : Am\u00e9liorations apr\u00e8s 1ers retours d'exp\u00e9riences.\r\n*\/\r\n\r\n\/\/ --------------------------------------------\r\n\/\/ C\u00e2blage des broches\r\n\/\/ Connecte la broche physique avec sa r\u00e9f\u00e9rence dans le programme.\r\n\/\/ --------------------------------------------\r\n\/\/ Entr\u00e9es\r\nint brocheHG = A0;\r\nint brocheHD = A1;\r\nint brocheBG = A2;\r\nint brocheBD = A3;\r\nint brocheJoyX = A4;\r\nint brocheJoyY = A5;\r\n\r\n\/\/ Sorties\r\nint brocheServoRotation = 10;\r\nint brocheServoInclinaison = 11;\r\nint brocheLed = 13;\r\n\r\n\/\/ --------------------------------------------\r\n\/\/ Cr\u00e9er des Variables\r\n\/\/ D\u00e9finit des cases dans la m\u00e9moire RAM pour y stocker des valeurs. \r\n\/\/ int = 16 bits = -32,768 to 32,767\r\n\/\/ --------------------------------------------\r\nint HG; \/\/ stockera la valeur du capteur Haut Gauche\r\nint HD; \/\/ stockera la valeur du capteur Droite\r\nint BG; \/\/ stockera la valeur du capteur Bas Gauche\r\nint BD; \/\/ stockera la valeur du capteur Bas droite\r\nint JoyX; \/\/ Option contr\u00f4le par joystick\r\nint JoyY;\r\n\r\n\/\/ R\u00e9glages param\u00e9trable:\r\nint frequenceActualisation = 25; \/\/ R\u00e9glage de la vitesse\r\nint consigneRotation = 90; \/\/ Position initiale (au d\u00e9marrage) 90\u00b0 = millieu.\r\nint consigneInclinaison = 10; \/\/ Position initiale (au d\u00e9marrage) 90\u00b0 = millieu.\r\nbool modeJoystick = false; \/\/ false: Mode capteur, true: mode joystick (optionnel).\r\n\r\n\/\/ limites logiciels\r\n\/\/ But\u00e9es logiciels pour emp\u00eacher le mecanisme d'aller l\u00e0 ou il coince.\r\n\/\/ Ces r\u00e9glages doivent \u00eatre adjust\u00e9s lorsque c'est m\u00e9caniquement impossible d'atteindre toute la plage de rotation du servomoteur.\r\nint LimiteRotationMax = 180;\r\nint LimiteRotationMin = 0;\r\nint LimiteInclinaisonMax = 100;\r\nint LimiteInclinaisonMin = 10;\r\n\r\n\/\/ --------------------------------------------\r\n\/\/ Servo\r\n\/\/ --------------------------------------------\r\n\/\/ cr\u00e9er un objet servo pour contr\u00f4ler un servo.\r\n\/\/ douze objets servo peuvent \u00eatre cr\u00e9\u00e9s sur la plupart des cartes.\r\n#include &lt;Servo.h&gt; \/\/ La biblot\u00e8que d'instructions qui s'occupe de fabriquer le signal electrique pour piloter le servo.\r\nServo servoRotation; \/\/ cr\u00e9e un objet servo pour contr\u00f4ler un servo.\r\nServo servoInclinaison; \/\/ cr\u00e9e un objet servo pour contr\u00f4ler un servo\r\n\r\n\/\/ ============================================\r\n\/\/ Setup\r\n\/\/ ============================================\r\nvoid setup() { \/\/ mettez votre code d'installation ici, \u00e0 ex\u00e9cuter une fois.\r\n\r\n\t\/\/ Servo\r\n\tservoRotation.attach(brocheServoRotation); \/\/ attache le servomoteur \u00e0 l'objet servoRotation par la broche 10.\r\n\tservoInclinaison.attach(brocheServoInclinaison); \/\/ attache le servomoteur \u00e0 l'objet servoInclinaison par la broche 11.\r\n\r\n\t\/\/ broche \u00e0 configurer en sortie\r\n\tpinMode(brocheLed, OUTPUT); \/\/ dit \u00e0 l'arduino que la broche est utilis\u00e9e en sortie (car aussi possible de l'utiliser en entr\u00e9e).\r\n\r\n\t\/\/ Liaison S\u00e9rie\r\n\t\/\/ D\u00e9marre la communication sur la liaison s\u00e9rie \u00e0 la vitesse 9600 bauds \r\n\t\/\/ (bauds: bit per second: bps. Repr\u00e9sente le nombre de bits (0 ou 1) transmis en une seconde.)\r\n\t\/\/ (9600 bauds: +-1ko\/s. Dur\u00e9e d'un bit: 1.042 ms.)\r\n\tSerial.begin(115200); \/\/ D\u00e9marre la liaison s\u00e9rie\r\n\tSerial.println(\"Hello World !\"); \/\/ \u00ab Hello world \u00bb sont les mots traditionnellement \u00e9crits par un programme informatique simple dont le but est de faire la d\u00e9monstration rapide de son ex\u00e9cution sans erreur.\r\n}\r\n\r\n\/\/ ============================================\r\n\/\/ Loop\r\n\/\/ ============================================\r\nvoid loop() { \/\/mettez votre code principal ici, \u00e0 ex\u00e9cuter \u00e0 plusieurs reprises.\r\n\t\r\n\t\/\/ --------------------------------------------\r\n\t\/\/ Lecture des entr\u00e9es analogiques.\r\n\t\/\/ --------------------------------------------\r\n\t\/\/ Lectures des valeurs des photoresistances\r\n\tHG = analogRead(brocheHG); \/\/ lit l'entr\u00e9e A0 et stock le r\u00e9sultat dans HG\r\n\tHD = analogRead(brocheHD);\r\n\tBG = analogRead(brocheBG);\r\n\tBD = analogRead(brocheBD);\r\n\r\n\t\/\/ Si besoin d'inverser le signal\r\n\t\/\/ HG = map(HG, 0, 1023, 1023, 0);\r\n\t\/\/ HD = map(HD, 0, 1023, 1023, 0);\r\n\t\/\/ BG = map(BG, 0, 1023, 1023, 0);\r\n\t\/\/ BD = map(BD, 0, 1023, 1023, 0);\r\n\r\n\tif (modeJoystick){ \/\/ si mode Joystick alors:\r\n\t\tJoyX = analogRead(A4); \/\/ lit aussi les joysticks\r\n\t\tJoyY = analogRead(A5);\r\n\t}\r\n\r\n\t\/\/ A propos des photor\u00e9sistances:\r\n\t\/\/ https:\/\/fr.wikipedia.org\/wiki\/Photor%C3%A9sistance\r\n\t\/\/ Expos\u00e9 \u00e0 la lumi\u00e8re affiche grands chiffres car repr\u00e9sente beaucoup d'\u00e9lectricit\u00e9e \u00e0 pouvoir la traverser.\r\n\t\/\/ Cach\u00e9 de la lumi\u00e8re affiche petits chiffres car repr\u00e9sente peu d'\u00e9lectricit\u00e9e \u00e0 pouvoir la traverser.\r\n\r\n\t\/\/ Affichage des r\u00e9sultats sur le moniteur s\u00e9rie:\r\n\t\/\/ (L'arduino envoi sur la liaison s\u00e9rie, l'ordinateur re\u00e7oit et affiche sur le moniteur s\u00e9rie).\r\n\tSerial.println(); \/\/ Commence sur une nouvelle ligne. (println: \"Print Line New\" fait Retour chariot et saut \u00e0 la ligne)\r\n\r\n\tSerial.print(\"HG: \"); \/\/ envoi un texte qui d\u00e9crit ce qui va suivre\r\n\tSerial.print(HG); \/\/ envoi la valeur du capteur HautGauche\r\n\tSerial.print(\", \"); \/\/ envoi virgule et espace pour la mise en forme pour que ce soit mieux lisible dans le moniteur serie \r\n\r\n\tSerial.print(\"HD: \");\r\n\tSerial.print(HD);\r\n\tSerial.print(\", \");\r\n\r\n\tSerial.print(\"BG: \");\r\n\tSerial.print(BG);\r\n\tSerial.print(\", \");\r\n\r\n\tSerial.print(\"BD: \");\r\n\tSerial.print(BD);\r\n\tSerial.print(\", \");\r\n\r\n\tif (modeJoystick){\r\n\t\tSerial.print(\"JoyX: \"); Serial.print(JoyX); Serial.print(\", \");\r\n\t\tSerial.print(\"JoyY: \"); Serial.print(JoyY); Serial.print(\", \");\r\n\t}\r\n\t\/\/ --------------------------------------------\r\n\t\/\/ Interpr\u00e9tation des capteurs:\r\n\t\/\/ Selon la provenance de la lumi\u00e8re,\r\n\t\/\/ change la consigne \u00e0 l'axe du servomoteur d' 1\u00b0 dans un sens ou dans l'autre.\r\n\t\/\/ --------------------------------------------\r\n\tSerial.print(\"| \"); \/\/ mise en forme\r\n\r\n\t\/\/ Rotation\r\n\tif (HG &gt; HD) { \/\/ Si +plus de lumi\u00e8re \u00e0 Gauche\r\n\t\tconsigneRotation -= 1; \/\/ incr\u00e9mente 1\u00b0 de rotation dans le sens horaire pour aller vers elle.\r\n\t\tSerial.print(\"R- \"); \/\/ Affiche le r\u00e9sultat de l'interpr\u00e9tation: \"Rotation -1\u00b0\"\r\n\t}\r\n\tif (BG &gt; BD) { \/\/ Si +plus de lumi\u00e8re \u00e0 Gauche\r\n\t\tconsigneRotation -= 1; \/\/ incr\u00e9mente 1\u00b0 de rotation horaire\r\n\t\tSerial.print(\"R- \"); \r\n\t}\r\n\tif (HG &lt; HD) { \/\/ Si +plus de lumi\u00e8re \u00e0 Droite\r\n\t\tconsigneRotation += 1; \/\/ incr\u00e9mente 1\u00b0 de rotation anti-horaire\r\n\t\tSerial.print(\"R+ \");\r\n\t}\r\n\tif (BG &lt; BD) { \/\/ Si +plus de lumi\u00e8re \u00e0 Droite consigneRotation += 1; \/\/ incr\u00e9mente 1\u00b0 de rotation anti-horaire Serial.print(\"R+ \"); } \/\/ inclinaison if (HG &gt; BG){ \/\/ Si +plus de lumi\u00e8re en Haut\r\n\t\tconsigneInclinaison += 1; \/\/ incr\u00e9mente incline 1\u00b0 vers le Haut\r\n\t\tSerial.print(\"I+ \");\r\n\t}\r\n\tif (HD &gt; BD){ \/\/ Si +plus de lumi\u00e8re en Haut\r\n\t\tconsigneInclinaison += 1; \/\/ incr\u00e9mente incline 1\u00b0 vers le Haut\r\n\t\tSerial.print(\"I+ \");\r\n\t}\r\n\tif (HG &lt; BG){ \/\/ Si +plus de lumi\u00e8re en Bas\r\n\t\tconsigneInclinaison -= 1; \/\/ incr\u00e9mente incline 1\u00b0 vers le Bas\r\n\t\tSerial.print(\"I- \");\r\n\t}\r\n\tif (HD &lt; BD){  \/\/ Si +plus de lumi\u00e8re en Bas\r\n\t\tconsigneInclinaison -= 1; \/\/ incr\u00e9mente incline 1\u00b0 vers le Bas\r\n\t\tSerial.print(\"I- \");\r\n\t}\r\n\tSerial.print(\"| \"); \/\/ mise en forme\r\n\t\/\/ --------------------------------------------\r\n\t\/\/ interpr\u00e9tation des capteurs termin\u00e9\r\n\t\/\/ --------------------------------------------\r\n\r\n\t\/\/ --------------------------------------------\r\n\t\/\/ Fin de course logiciel.\r\n\t\/\/ Limite les consignes minimums et maximums\r\n\t\/\/ la limite max des servomoteur c'est 0...180\u00b0\r\n\t\/\/ (modification des r\u00e9glages des limites tout en haut du programme.)\r\n\t\/\/ --------------------------------------------\t\r\n\t\r\n\t\/\/ Rotation Minimum\r\n\tif (consigneRotation &lt; LimiteRotationMin) { \/\/ Si (Consigne plusPetiteQue minimum) alors consigneRotation = LimiteRotationMin; \/\/ r\u00e9hausse la consigne \u00e0 la limite. } \/\/ Rotation Maximum if (consigneRotation &gt; LimiteRotationMax) {\/\/ Si (Consigne plusGrandeQue maximum) alors\r\n\t\tconsigneRotation = LimiteRotationMax; \/\/ redescend la consigne \u00e0 la limite.\r\n\t}\r\n\t\/\/ Inclinaison Minimum\r\n\tif (consigneInclinaison &lt; LimiteInclinaisonMin){  \/\/ Inclinaison Maximum\r\n\t\tconsigneInclinaison = LimiteInclinaisonMax;\r\n\t}\r\n\r\n\t\/\/ --------------------------------------------\r\n  \t\/\/ Joystick\r\n  \t\/\/ Si bouton mode joystick alors branche les joysticks directement sur les consignes aux moteurs et ignore les r\u00e9sultats pr\u00e9cents.\r\n  \t\/\/ --------------------------------------------\r\n\tif (modeJoystick){\r\n\t\tconsigneRotation = map(JoyX, 0, 1023, 0, 180);\r\n\t\tconsigneInclinaison = map(JoyY, 0, 1023, 0, 180);\r\n\t}\r\n\t\/\/ --------------------------------------------\r\n  \t\/\/ Ecriture de la consigne vers les moteurs \r\n  \t\/\/ --------------------------------------------\r\n\t\/\/ Affichage les consignes sur le moniteur s\u00e9rie\r\n\tSerial.print(\"Rotation: \");\r\n  \tSerial.print(consigneRotation);\r\n\tSerial.print(\", \");\r\n\tSerial.print(\"Inclinaison: \");\r\n\tSerial.print(consigneInclinaison);\r\n\tSerial.print(\", \");\r\n\t\r\n\tservoRotation.write(consigneRotation); \/\/ envoi la consigne vers le moteur\r\n\tservoInclinaison.write(consigneInclinaison); \/\/ envoi la consigne vers le moteur\r\n\r\n\t\/\/ fait clignoter la led \u00e0 chaque actualisation\r\n\tif (digitalRead(brocheLed) == LOW){\r\n\t\tdigitalWrite(brocheLed, HIGH);\r\n\t}else{\r\n\t\tdigitalWrite(brocheLed, LOW);\r\n\t}\r\n\r\n\t\/\/ --------------------------------------------\r\n\t\/\/ Fr\u00e9quence d'actualisation.\r\n\t\/\/ C'est le temps avant de relire la boucle,\r\n\t\/\/ C'est donc le Temps avant de refaire tourner d'1\u00b0 les moteurs,\r\n\t\/\/ C'est donc la vitesse du traceur solaire.\r\n  \t\/\/ --------------------------------------------\r\n\tdelay(frequenceActualisation); \/\/ en millisecondes\r\n} \/\/ Fin.\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Suite aux 1ers essais de notre maquette kit de suivi solaire, J&rsquo;ai pr\u00e9f\u00e9r\u00e9 modifier le c\u00e2blage pour simplifier la programmation. On verra cette modif au prochain atelier du 10\/12\/2022. Cependant, pour ceux qui m&rsquo;ont demand\u00e9 les infos en avance, voici ci-joint: &#8211; Les instructions de c\u00e2blage et l&rsquo;alignement du moteur inclinaison, &#8211; La page du catalogue o\u00f9 a \u00e9t\u00e9 achet\u00e9 [&#8230;]<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5217","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/pages\/5217"}],"collection":[{"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/comments?post=5217"}],"version-history":[{"count":12,"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/pages\/5217\/revisions"}],"predecessor-version":[{"id":5373,"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/pages\/5217\/revisions\/5373"}],"wp:attachment":[{"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/media?parent=5217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}