|  |   | 
| (42 révisions intermédiaires par 2 utilisateurs non affichées) | 
| Ligne 15 : | Ligne 15 : | 
|  |  |  |  | 
|  | <br> |  | <br> | 
| − |   | + | ==membres du projet== | 
|  | '''Participants''' : Yann, Patrick, Pierre, Olivier |  | '''Participants''' : Yann, Patrick, Pierre, Olivier | 
|  |  |  |  | 
|  | <br> |  | <br> | 
| − |   | + | '''Experte conseil''' : Lisa et Pierre pour la bonne bibliothèque pour l'Oled | 
| − | '''Experte conseil''' : Lisa et Pierre pour la bonne bibliotheque pour l'Oled |  | 
| − |   |  | 
|  | <br> |  | <br> | 
|  |  |  |  | 
|  | + | ==prototype qu'on souhaite réaliser == | 
|  | Sur un idée de Yann, nous partons sur l’idée d’un cube qui va aider les enfants à prendre connaissance du rythme de la journée tel qu’il est fixé par les adultes. |  | Sur un idée de Yann, nous partons sur l’idée d’un cube qui va aider les enfants à prendre connaissance du rythme de la journée tel qu’il est fixé par les adultes. | 
|  |  |  |  | 
| Ligne 32 : | Ligne 31 : | 
|  | Les temps de la journée sont : |  | Les temps de la journée sont : | 
|  |  |  |  | 
| − |      • Accueil arrivée | + |      • 7h30 : Accueil arrivée / jaune | 
| − |      • Rangement   | + |      • 9h30 : Rangement rassemblement / blanc | 
| − |      • Activité | + |      • 9h45 : Activité / Rouge | 
| − |      • Rangement rassemblement | + |      • 11h30 : Rangement rassemblement / blanc | 
| − |      • Repas   | + |      • 11h45 : Repas / vert | 
| − |      • Temps sieste | + |     • 13h00 : Rangement rassemblement / blanc | 
| − |      • Activité | + |      • 13h20 : Temps sieste / bleu | 
| − |      • Goûter | + |      • 15h30 : Lever sieste / cyan | 
| − |      • Accueil départ | + |     • 15h45 : Rassemblement / blanc | 
|  | + |      • 16h00 : Goûter / vert | 
|  | + |     • 16h30 : Activité temps libre / Rouge | 
|  | + |      • 17h00 : Accueil départ / orange | 
|  |  |  |  | 
| − | Liste de matériel : | + | ==Liste du matériel== | 
|  |  |  |  | 
|  | * feuille de calque |  | * feuille de calque | 
| − | * led patate | + | * led blanche diamètre 10mm | 
|  | * interrupteur |  | * interrupteur | 
| − | * wemos | + | * wemos D1 mini https://www.wemos.cc/en/latest/d1/d1_mini.html | 
| − | * led rgb | + | * ruban led rgb WS2812 | 
|  | * batterie 18650 |  | * batterie 18650 | 
|  | * shield batterie |  | * shield batterie | 
|  | * clock shield |  | * clock shield | 
| − | * ecran | + | * ecran oled 1.3" | 
|  | * bois picto |  | * bois picto | 
|  |  |  |  | 
| − | to do
 | + | ==Réalisation== | 
| − | interface web
 |  | 
|  |  |  |  | 
|  | + | [[image:LeCube bb.png|600px]] | 
|  | + | Le schéma électrique du Cube | 
|  |  |  |  | 
| − | Le code pour interfacer l'oled 1.30"ICC.
 | + | [[image:PiloterLeCube.png|300px]] | 
|  | + | L'interface web permet de gérer la luminosité du cube | 
|  |  |  |  | 
| − | Il est nécessaire d'ajouter les fichiers images au code.
 |  | 
|  |  |  |  | 
| − | L'exemple de l'image sieste est reproduite ci-après.
 | + | Le code de l'application : [[Fichier:LeCube.zip]] | 
|  |  |  |  | 
| − | <pre>
 | + | Le cube est découpé et dépoli au laser (après un test sur du carton). | 
| − | /**
 |  | 
| − |     Rework par 071V13R auHP 21 @Fab à Brest
 |  | 
| − |    
 |  | 
| − |    The MIT License (MIT)
 |  | 
|  |  |  |  | 
| − |    Copyright (c) 2018 by ThingPulse, Daniel Eichhorn
 | + | https://www.wiki.lesfabriquesduponant.net/images/c/c2/Decoupe%22_plexi_130x130x130.pdf | 
| − |    Copyright (c) 2018 by Fabrice Weinberg
 |  | 
|  |  |  |  | 
| − |    Permission is hereby granted, free of charge, to any person obtaining a copy
 | + | https://www.wiki.lesfabriquesduponant.net/images/c/c4/Decoupe_embase_MDF135x135x60_3mm.pdf | 
| − |    of this software and associated documentation files (the "Software"), to deal
 |  | 
| − |    in the Software without restriction, including without limitation the rights
 |  | 
| − |    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 |  | 
| − |    copies of the Software, and to permit persons to whom the Software is
 |  | 
| − |    furnished to do so, subject to the following conditions:
 |  | 
|  |  |  |  | 
| − |    The above copyright notice and this permission notice shall be included in all
 | + | La base est modélisée sous inkscape testée sur carton puis découpée sur du mdf. | 
| − |    copies or substantial portions of the Software.
 |  | 
| − |   |  | 
| − |    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 |  | 
| − |    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 |  | 
| − |    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 |  | 
| − |    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 |  | 
| − |    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 |  | 
| − |    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 |  | 
| − |    SOFTWARE.
 |  | 
| − |   |  | 
| − |    ThingPulse invests considerable time and money to develop these open source libraries.
 |  | 
| − |    Please support us by buying our products (and not the clones) from
 |  | 
| − |    https://thingpulse.com
 |  | 
| − |   |  | 
| − |    Tuto pour le wemos : https://www.teachmemicro.com/1-3-i2c-oled-arduino-esp8266-tutorial/
 |  | 
| − |    attention inverser SDA / SDK
 |  | 
| − |   |  | 
| − | */
 |  | 
| − |   |  | 
| − | // Include the correct display library
 |  | 
| − |   |  | 
| − | // For a connection via I2C using the Arduino Wire include:
 |  | 
| − | #include <Wire.h>               // Only needed for Arduino 1.6.5 and earlier
 |  | 
| − | #include"SH1106.h" // WEMOS
 |  | 
| − |   |  | 
| − | // Logo icone image
 |  | 
| − | #include "sieste.h"
 |  | 
| − | #include "activite.h"
 |  | 
| − | #include "arrivee.h"
 |  | 
| − | #include "gouter.h"
 |  | 
| − | #include "repas.h"
 |  | 
| − | #include "depart.h"
 |  | 
| − | #include "rangement.h"
 |  | 
| − |   |  | 
| − |   |  | 
| − | // Initialize the OLED display using Arduino Wire:
 |  | 
| − | SH1106 display(0x3C,D1,D2); //WEMOS attenion inversion branchement par rapport au tuto
 |  | 
| − |   |  | 
| − | void setup() {
 |  | 
| − |   Serial.begin(115200);
 |  | 
| − |   Serial.println();
 |  | 
| − |   |  | 
| − |   // Initialising the UI will init the display too.
 |  | 
| − |   display.init();
 |  | 
| − |   //display.flipScreenVertically();
 |  | 
| − |   Serial.print ("Fin du setup");
 |  | 
| − |   |  | 
| − | }
 |  | 
| − |   |  | 
| − | void loop() {
 |  | 
| − |   
 |  | 
| − |   // clear the display
 |  | 
| − |   
 |  | 
| − |   display.clear();
 |  | 
| − |     
 |  | 
| − | // routine de lancement 
 |  | 
| − |   |  | 
| − | // affichage de "Bonjour"
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_LEFT);
 |  | 
| − |   display.setFont(ArialMT_Plain_16);
 |  | 
| − |   display.drawString(0, 0, "Bonjour");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (1000);
 |  | 
| − |   display.clear();
 |  | 
| − |   |  | 
| − | // affichage de "la journée commence bien avec le Cube"
 |  | 
| − |   display.setFont(ArialMT_Plain_10);
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_LEFT);
 |  | 
| − |   display.drawStringMaxWidth(0, 0, 128,"Lajournée commence bien avec le Cube." );
 |  | 
| − |   display.display();
 |  | 
| − |   delay (1000);
 |  | 
| − |   display.clear();
 |  | 
| − |   |  | 
| − | // affichage de "c'estparti"
 |  | 
| − |   display.setFont(ArialMT_Plain_10);
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(64, 22, "C'est parti.");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (1000);
 |  | 
| − |   display.clear();
 |  | 
| − |   |  | 
| − | // phase d'accueil
 |  | 
| − |   |  | 
| − | for (int t=0; t<100; t++)
 |  | 
| − | {
 |  | 
| − |   display.drawXbm(45,0, arrivee_width, arrivee_height, arrivee_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − |   |  | 
| − | // phase rangement rassemblement
 |  | 
| − |   |  | 
| − | for (int t=0; t<100; t++)
 |  | 
| − | {
 |  | 
| − |   display.drawXbm(48,0, rangement_width, rangement_height, rangement_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − |   |  | 
| − | // phase d activité
 |  | 
| − |   |  | 
| − | for (int t=0; t<100; t++)
 |  | 
| − | {
 |  | 
| − |   display.drawXbm(50,0, activite_width, activite_height, activite_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − |   |  | 
| − | // phase rangement rassemblement
 |  | 
| − |   |  | 
| − | for (int t=0; t<100; t++)
 |  | 
| − | {
 |  | 
| − |   display.drawXbm(48,0, rangement_width, rangement_height, rangement_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − |   |  | 
| − | // phase de repas
 |  | 
| − |   |  | 
| − | for (int t=0; t<100; t++)
 |  | 
| − | {
 |  | 
| − |   display.drawXbm(50,0, repas_width, repas_height, repas_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − |   |  | 
| − | // phase rangement rassemblement
 |  | 
| − |   |  | 
| − | for (int t=0; t<100; t++)
 |  | 
| − | {
 |  | 
| − |   display.drawXbm(48,0, rangement_width, rangement_height, rangement_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − |   |  | 
| − | // phase de sieste
 |  | 
|  |  |  |  | 
| − | for (int t=0; t<100; t++)
 | + | Ce qu'il nous/vous reste à faire : | 
| − | {
 | + | Interface web à améliorer | 
| − |   display.drawXbm(45,0, sieste_width, sieste_height, sieste_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − |   |  | 
| − | // phase rangement rassemblement |  | 
| − |   |  | 
| − | for (int t=0; t<100; t++)
 |  | 
| − | {
 |  | 
| − |   display.drawXbm(48,0, rangement_width, rangement_height, rangement_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − |   |  | 
| − | // phase de gouter
 |  | 
| − |   |  | 
| − | for (int t=0; t<100; t++)
 |  | 
| − | {
 |  | 
| − |   display.drawXbm(45,0, gouter_width, gouter_height, gouter_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − |   |  | 
| − | // phase d activité
 |  | 
| − |   |  | 
| − | for (int t=0; t<100; t++)
 |  | 
| − | {
 |  | 
| − |   display.drawXbm(50,0, activite_width, activite_height, activite_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − |   |  | 
| − | // phase de depart
 |  | 
| − |   |  | 
| − | for (int t=0; t<100; t++)
 |  | 
| − | {
 |  | 
| − |   display.drawXbm(35,0, depart_width, depart_height, depart_bits);
 |  | 
| − |   display.drawProgressBar(5, 50, 120, 10, t);
 |  | 
| − |   int progress = t;
 |  | 
| − |   display.setTextAlignment(TEXT_ALIGN_CENTER);
 |  | 
| − |   display.drawString(65, 32, String(progress) + "%");
 |  | 
| − |   display.display();
 |  | 
| − |   delay (25);
 |  | 
| − |   display.clear();
 |  | 
| − | }
 |  | 
| − | }
 |  | 
| − | </pre>
 |  | 
| − |   |  | 
| − | le fichier image de la sieste 
 |  | 
| − | cf http://www.wikidebrouillard.org/wiki/Convertir_une_image_en_format_xbm
 |  | 
| − |   |  | 
| − | <pre>
 |  | 
| − | #define sieste_width 41
 |  | 
| − | #define sieste_height 32
 |  | 
| − | static unsigned char sieste_bits[] = {
 |  | 
| − |    0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00,
 |  | 
| − |    0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00,
 |  | 
| − |    0x00, 0x30, 0x04, 0x30, 0x00, 0x00, 0x00, 0x38, 0x04, 0x30, 0x00, 0x00,
 |  | 
| − |    0x00, 0x78, 0x8c, 0x30, 0x00, 0x00, 0x00, 0x38, 0xc6, 0x38, 0x00, 0x00,
 |  | 
| − |    0x00, 0x38, 0x04, 0x30, 0x00, 0x00, 0x00, 0x30, 0x04, 0x30, 0x00, 0x00,
 |  | 
| − |    0x00, 0xe0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00,
 |  | 
| − |    0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x60, 0xfe, 0x00, 0x00, 0x00,
 |  | 
| − |    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 |  | 
| − |    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00,
 |  | 
| − |    0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc7, 0xff, 0xff, 0x7f, 0x00,
 |  | 
| − |    0xfc, 0xe7, 0xff, 0xff, 0xff, 0x00, 0xfc, 0xe7, 0xff, 0xff, 0xff, 0x01,
 |  | 
| − |    0xfc, 0xe7, 0xff, 0xff, 0xff, 0x01, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x01,
 |  | 
| − |    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 |  | 
| − |    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
 |  | 
| − |    0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
 |  | 
| − |    0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x00 };
 |  | 
| − |   |  | 
| − | </pre>
 |  | 
| − |   |  | 
| − | Le cube est découpé et dépoli àlaser (après un test sur du carton.
 |  | 
| − | La base est modélisée sous inkscape testée sur carton puis découpée sur du mdf.
 |  | 
|  |  |  |  | 
|  | ==Les images == |  | ==Les images == | 
| Ligne 357 : | Ligne 88 : | 
|  | [[Fichier:Trio.jpg|200px|thumb|left|icon arrivee]icon rangement/rassemblement]] |  | [[Fichier:Trio.jpg|200px|thumb|left|icon arrivee]icon rangement/rassemblement]] | 
|  | [[Fichier:Sieste.jpg|200px|thumb|left|icon sieste]] |  | [[Fichier:Sieste.jpg|200px|thumb|left|icon sieste]] | 
|  | + | [[Fichier:CubeLed.JPG|200px|thumb|left|CubeLed]] | 
|  | + | [[Fichier:Basecube.JPG|200px|thumb|left|Basecube]] | 
|  |  |  |  | 
|  | + | [[Fichier:LeCubeInterne.jpg|200px|thumb|left|Intérieur du Cube]] | 
|  | + | [[Fichier:LeCubeExterne.jpg|200px|thumb|left|Extérieur du Cube]] | 
|  |  |  |  | 
|  | [[Catégorie:HP21 Lumière]] |  | [[Catégorie:HP21 Lumière]] | 
|  | [[Catégorie:Hackathon Pédagogique]] |  | [[Catégorie:Hackathon Pédagogique]] | 
|  | + | [[Catégorie:led]][[Catégorie:ruban de led]][[Catégorie:WS1812B]] |