Vous ne pouvez pas modifier cette page, pour la raison suivante :
L’action que vous essayez de réaliser n’est permise qu’aux utilisateurs du groupe : Utilisateurs.
Statut du projet
(Un choix)
Concept Experimental Prototype Fonctionnel Inconnu Abandonné Obsolete
Statut de la publication
Aucune Brouillon Publié Finalisé
Image
Importer un fichier
Description
(petite description du projet, 80 caractères max)
Licence
Vous pouvez trouver plus d'informations sur les licences libres sur le site creativecommons.org.
Contributeur⋅ice⋅s
(personnes participant au projet, séparés par des virgules):
Inspiration
Matériaux
(liste des matériaux utilisés, séparés par des virgules)
Machines
(liste des machines spécifiques utilisées, séparés par des virgules)
Fichier(s) source
Url
Un problème ou une suggession à propos de ce formulaire ? Parlez en sur Discussion:DataFab
Texte libre:
== Concept == Bouillon Cube est un serious game présenté au premier abord comme un jeu de rapidité. Ce cube intéractif a pour but de sensibiliser le joueur sur la déforestation. Le jeu dénonce différents produits du quotidien qui font parti des principales causes de la déforestation. En plus de susciter le sens critique, le jeu apporte des conseils et solutions pour lutter contre cette catastrophe écologique. <br /> == Déroulement du jeu == Le jeu se suit avec deux outils: le cube et une page web qui présente les différentes instructions. Le but est de réaliser toutes les activités de la journée, resprésentées sur le cube, le plus vite possible.<br /> [[Fichier:Bouillons-cubes cube.jpg|vignette]] === Etape du jeu === Le joueur se place devant le cube pour pouvoir le prendre en main. Pour débuter le jeu il faut activer le bouton qui lancera le chronomètre.<br /> <br /> Le jour va ensuite suivre les instructions et effectuer les différentes actions tout autour du cube.<br /> 1. Etalez la pâte à tartiner chocolat-noisette.<br /> 2. Revissez le pot de pâte à tartiner chocolat-noisette.<br /> 3. Prenez vos vêtements dans le tiroir<br /> 4. Appeler son boss pour connaitre le lieu de la conférence.<br /> 5. Demarrer la voiture.<br /> 6. Prenez note de la conférence.<br /> 7. Enlever votre blouson de cuir.<br /> 8. Faire réchauffer votre poulet au four.<br /> 9. Rechargez votre téléphone.<br /> <br /> Ces intéractions se font à l'aide de différents capteurs éléctroniques, habillés par le cube. <br /> Une fois terminé, le joueur ré-appuie sur le bouton pour stopper le chronomètre.<br /> <br /> === Fin du jeu === La page web indique au joueur qu'une trappe va s'ouvrir pour lui afficher son score.<br /> Hors lorsque la trappe va s'ouvrir, le joueur va découvrir une animation d'arbres qui tombent pour illustrer la déforestation. Un chiffre qui va s'afficher sur le cadrant, ne sera pas en seconde mais convertie en nombre d'arbres coupés dans le monde, pendant le temps que le joueur aura mis à finir le jeu.<br /><br /> [[Fichier:Bouillons-cubes Fin.jpg|vignette]] La page web découle aussi sur une landing page qui parle des différentes causes de la déforestation et permet au joueur de réaliser et comprendre le lien entre la déforestation et les activités qu'il aura réalisé pendant le jeu.<br /> A la fin de la page, le joueur est appelé à faire un don pour une des différentes associations qui luttent contre la déforestation. <br /> <br /> ==Concevoir le cube== Nous avons commencez par faire les graphismes et la découpe extérieure du cube pour les passer à la découpeuse laser avec les logiciels Illustrator, Inkscape. Le cube entier devait être démontable facilement sans viser ou coller. La plaque à découper était une planche de contre-plaqué de 4mm d'épaisseur. Certain trou pour insérer les potentiomètre on été fait avec une visseuse électrique muni d'un forêt. Pour les interactions du cube, nous avons utiliser trois potentiomètres (étapes 2, 5, 8), il y a quatre capteur de fin de courses (étapes 3, 4, 7, 9), un capteur de pression (étape 6) et de la peinture conductrice (étape 1). Pour montrer que les interactions sont validé il y a un ruban de trois leds sur les trois face. Il y a aussi des interactions dans le cube. Quand le jeu est fini, la trappe s'ouvre grâce à un solenoïde. Les arbres pour tomber on chacun un servo moteur alternatif ainsi que l'écran à leds au fond qui à démarré des le début pour montrer le nombre d'arbre abattu le temps de la partie. Nous n'avons pas pu faire toute les interactions par manque de place sur la carte photon et de temps. [[Fichier:Bouillons-cubes planches.jpg|vignette]] [[Fichier:Bouillons-cubes interieure.jpg|vignette]] == Site Web == <br /> <gallery> web.jpg|Les différentes pages du site web </gallery> <br /> Le site web est directement relié aux interactions du cube et permet d’enchaîner les instructions de façon fluide. == Programmation du cube == Ce code a été réalisé avec particle pour être transféré sur la carte photon //Importation des librairy pour l'écran 4x7 segments #include <TM1637Display.h> //Importation des librairy pour le ruban a led #include <neopixel.h> //Initialisation de l'écran 4x7 segments #define CLK D1 #define DIO D2 TM1637Display display(CLK, DIO); //Initialisation du ruban de led #define PIN D6 #define N_LEDS 9 Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN); //Initialisation des Capteurs de fin de courses #define FinCourse1 D4 #define FinCourse2 D5 #define FinCourse3 D7 //Initialisation du capteur de pression int fsrAnalogPin = A2; int fsrReading; //Initialisation du solenoid int solenoidPin = D4; //Initialisation du bouton int interrupteur = LOW; int toggle = 0; int buttonPin = D0; int buttonState = 0; //Initialisation des potentiomètres int analogPin0 = A0; int analogPin1 = A1; int analogPin2 = A3; int val0 = 0; int val1 = 0; int val2 = 0; //Initiatilsation de variables pour changer la couleur des leds int red0 = 0; int red1 = 0; int red2 = 0; int red3 = 0; int red4 = 0; int red5 = 0; int red6 = 0; //Initialisation de la variable du nombre d'arbres découpés int arbre=0; void setup() { strip.begin(); pinMode(buttonPin, INPUT); display.setBrightness(0x0d); Serial.begin(9600); // Envoi de message de déboggage sur connexion série pinMode(fsrAnalogPin, OUTPUT); pinMode(solenoidPin, OUTPUT); //Variables envoyées au web Particle.variable("interrupteur", interrupteur); Particle.variable("red0", red0); Particle.variable("red1", red1); Particle.variable("red2", red2); Particle.variable("red3", red3); Particle.variable("red4", red4); Particle.variable("red5", red5); Particle.variable("red6", red6); pinMode(FinCourse1, INPUT); pinMode(FinCourse2, INPUT); pinMode(FinCourse3, INPUT); Serial.begin(115200); } void loop() { //Lecture de la valeur du capteur de pression fsrReading = analogRead(fsrAnalogPin); val0 = analogRead(analogPin0); val1 = analogRead(analogPin1); val2 = analogRead(analogPin2); //Lecture de la valeur des fin de courses int fdc1 = digitalRead(FinCourse1); int fdc2 = digitalRead(FinCourse2); int fdc3 = digitalRead(FinCourse3); //Lecture de la valeur du bouton buttonState = digitalRead(buttonPin); //Bouton avec 2 étâts comme un interrupteur (interrupteur ON et interrupteur OFF) if (buttonState == HIGH) { if (toggle == 1) { interrupteur=!interrupteur; toggle=0; } } else { toggle=1; } //Si l'interrupteur est ON if(interrupteur == HIGH){ if(toggle == 0){ //Remise a 0 des valeurs de l'arbre et des leds au clic arbre=0; red0=0; red1=0; red2=0; red3=0; red4=0; red5=0; red6=0; } //Solenoid permettant d'ouvrir la porte se bloque digitalWrite(solenoidPin, LOW); for(int i=0; i<strip.numPixels(); i++) { // Pour toute les leds ou le capteur est fonctionnel, elles deviennent rouges -> Début de l'expérience strip.setPixelColor(i, strip.Color(255,0,0)); //Seules 2 capteurs ne sont pas fonctionnels -> Les leds s'allument vertes dès le début strip.setPixelColor(0, strip.Color(0,255,0)); strip.setPixelColor(5, strip.Color(0,255,0)); //Pour chaque interaction avec un capteur -> Valeur de la led prend 1 if(val0 > 3800) { red0 = 1; } if(val1 > 3800) { red1 = 1; } if(val2 > 3800) { red3 = 1; } if(fsrReading < 200){ red2 = 1; } if(fdc1 == HIGH){ red4 = 1; } if(fdc2 == HIGH){ red5 = 1; } if(fdc3 == HIGH){ red6 = 1; } //Si la valeur de la led est 1 -> Led s'allume en vert if(red0 == 1){ strip.setPixelColor(6, strip.Color(0,255,0)); } if(red1 == 1){ strip.setPixelColor(1, strip.Color(0,255,0)); } if(red2 == 1){ strip.setPixelColor(3, strip.Color(0,255,0)); } if(red3 == 1){ strip.setPixelColor(4, strip.Color(0,255,0)); } if(red4 == 1){ strip.setPixelColor(2, strip.Color(0,255,0)); } if(red5 == 1){ strip.setPixelColor(8, strip.Color(0,255,0)); } if(red6 == 1){ strip.setPixelColor(7, strip.Color(0,255,0)); } strip.show(); arbre++; //Incrementation du nombre d'arbres delay(25); display.showNumberDec(arbre); } } else //Si l'interrupteur est OFF { for(int i=0; i<strip.numPixels(); i++) {//Toute les leds clignotent vert et blanc strip.setPixelColor(i, strip.Color(0,255,0)); delay(50); strip.show(); strip.setPixelColor(i, strip.Color(255,255,255)); delay(50); strip.show(); digitalWrite(solenoidPin, HIGH); //Solenoid permettant d'ouvrir la porte s'e bloque s'ouvre } //Le nombre d'arbre se stop arbre=arbre; display.showNumberDec(arbre); } }
Résumé :
Modification mineure Suivre cette page
Annuler