Forum des associations de Saint-Renan

Venez rencontrer et découvrir Fablab Iroise au Forum des associations samedi 8 septembre de 9h à 13h.

S’initier à la programmation ou à l’impression 3D, concevoir des objets en 3D les rendre interactifs ou encore fabriquer des instruments de musique, voici quelques unes des activités de l’association

C’est la rentrée !!!

Samedi 1 septembre reprises des activités, avec au menu :
Forum des associations de Saint-Renan le 8 septembre de 9h à 13h
Fête de la science au Quartz du 12 au 14 octobre

On vous attends nombreux et la tête pleine de projets

Nicolas BRAS, à ne pas rater, vite c’est samedi

L’école de musique d’Iroise vous propose une nouvelle animation au mois de mai et accueille:

Nicolas BRAS
Samedi 19 mai 2018

Espace Culturel de Saint Renan

Au programme:
14h00: atelier de fabrication d’un instrument
Vidéos de démonstration, matériau à disposition, tout est mis en œuvre afin que les participants puissent commencer à fabriquer les instruments lors de l’atelier. Ceux qui n’auront pas terminé repartiront avec les liens vers les tutoriels de fabrication.

17h00: concert de Nicolas BRAS dans Musiques de Nulle Part
conférence où l’acoustique, les musiques traditionnelles ou actuelles sont détournées tout comme les matériaux pour une expérience et un voyage sonore hors du commun.

Rencontrer un artiste hors du commun, se confronter avec un univers musical inhabituel, découvrir des musiques et des cultures différentes, voilà quelques-uns des objectifs que proposent l’école de musique d’Iroise.L’intérêt est de nourrir le parcours des usagers à l’école et d’enrichir leur culture et de permettre au public extérieur également de profiter des actions artistiques et pédagogiques proposées.
Cette année avait bien commencé avec la master class de Pat O May, guitariste virtuose de métal celtique et elle se poursuit de la plus belle des manières avec la venue d’un inventeur de sons et d’instruments étranges.  Nicolas Bras fait rimer créativité et action environnementale en s’inspirant des musiques traditionnelles. Les instruments qu’il invente s’en inspirent et sont fabriqués en matériau de recyclage.

Un rendez-vous inouï en perspective et la possibilité de créer un cymbalum et une harpe en boîtes de conserve lors d’un atelier de fabrication avant d’assister à son concert, aux confins des musiques modales extra-européennes.

Renseignements et réservations 06 49 22 30 50 ou au 02 98 84 28 65 (places limitées pour l’atelier)

Concert inclus pour toute inscription à l’atelier.

 

Box domotique V1 – Partie 1

Besoin :

Création d’une box permettant d’interagir avec différents objets connectés.
La box doit être :
– Multi-protocoles (Wifi, GPIO, Radio 433 Mhz et 2.4 Ghz, …)
– La plus libre et la moins couteuse possible

Le materiel :

  • Un raspberry
  • Une carte SD
  • Un module émetteur 433 Mhz

Les étapes :

  • Installer Rasbian lite sans clavier ni écran (SSH)
  • Paramétrer Rasbian
  • Installer Node-red
  • Piloter les GPIO avec Node-red
  • Prises Chacon

Installer Rasbian sans clavier ni écran (en mode SSH)

– On télécharge l’image du système d’exploitation du raspberry Rasbian lite
– On copie l’image sur la carte SD grâce au logiciel Etcher.
– Afin d’activer le protocole SSH pour le premier démarage du raspberry, on crée un fichier vide et sans extension (ex: .txt) nomé ssh dans le répertoire /BOOT de la carte SD.
– On raccorde le pi en ethernet sur sa box et on l’alimente.

Paramétrer Rasbian

– On  récupère l’adresse IP du raspberry via l’interface de gestion de sa box opérateur.
– Avec le logiciel client ssh Putty on se connecte en SSH sur le raspberry. (id pi/raspberry)
– Pour paramétrer le raspberry on tape la commande suivante

sudo raspi-config

raspi-config
On en profite pour:

Choix 1 : modifier le mot de passe par défaut #sécu
Choix 4 : on paramètre le langage (fr_FR.UTF-8 UTF-8>) et la Timezone
Choix 5 : on active le remote GPIO
Choix 7 : Expand Filesystem

On paramètre l’interface Ethernet en @IP fixe (tuto sur domo-blog.fr)

sudo nano /etc/dhcpcd.conf

ip-fixe
On reboot le raspbery:

sudo reboot

Installer Node-Red

bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)

A l’issue de l’installation (~ 30 min) on tape la commande suivante pour que node-red démarre automatiquement au démarrage du raspberry :

sudo systemctl enable nodered.service

On peut maintenant ouvrir Node-red dans le navigateur à cette adresse :
http://192.168.1.100:1880

node-red
On en profite pour installer le pacquet node-red-dashboard via le Manage palette, il nous servira à créer l’interface graphique de notre projet.

Piloter les GPIO avec Node-Red

Super tuto + exemple de mangeoire et sonnette connectées eduscol.education.fr.

 

Prise CHACON DIO

Nous allons commander ces prises grâce à un émetteur 433 Mhz. Ces prises sont disponible chez Leroy Merlin pour – de 30€

lot-de-3-prises-telecommandables-interieure-dio

Montage:

Untitled Sketch_bb2

sources:
https://flows.nodered.org/flow/e33d31301c522dab4be2c68eb55c5fc5

cd /home/pi/.node-red/node_modules/
mkdir node-red-contrib-radio-emi
cd node-red-contrib-radio-emi/
wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=1cFD3ueWznk4zOMeiHWCzGthGOw08aQeB' -O radioEmission
sudo chmod 755 radioEmission

Pour tester :

sudo ./radioEmission 0 12325261 1 on
sudo ./radioEmission 0 12325261 1 off

Importer le flow suivant dans Node-red:

[{"id":"f28896f.bd25a68","type":"function","z":"a8893c87.db65f","name":"Filtre Emission","func":"var ws = msg.payload;\n\nif(ws==\"prise_1_on\"){ //Si appui sur le bouton 1 ON de la télécommande virtuelle\n var msg1 = { payload:\"sudo /home/pi/.node-red/node_modules/node-red-contrib-radio-emi/radioEmission 0 12325261 1 on\" }; //Création d'un objet comprenant la ligne de commande qui execute le programme en C++\n return [msg1]; //On retourne ce message vers la sortie de la node\n}\n\nif(ws==\"prise_1_off\"){\n var msg1 = { payload:\"sudo /home/pi/.node-red/node_modules/node-red-contrib-radio-emi/radioEmission 0 12325261 1 off\" };\n return [msg1]; \n}\n\nif(ws==\"prise_2_on\" || ws==\"prise_2_onemi\"){\n var msg1 = { payload:\"sudo /home/pi/.node-red/node_modules/node-red-contrib-radio-emi/radioEmission 0 12325261 2 on\" };\n return [msg1];\n}\n\nif(ws==\"prise_2_off\" || ws==\"prise_2_offemi\"){\n var msg1 = { payload:\"sudo /home/pi/.node-red/node_modules/node-red-contrib-radio-emi/radioEmission 0 12325261 2 off\" };\n return [msg1];\n}\n\nif(ws==\"prise_3_on\" || ws==\"prise_3_onemi\"){\n var msg1 = { payload:\"sudo /home/pi/.node-red/node_modules/node-red-contrib-radio-emi/radioEmission 0 12325261 3 on\" };\n return [msg1];\n}\n\nif(ws==\"prise_3_off\" || ws==\"prise_3_offemi\"){\n var msg1 = { payload:\"sudo /home/pi/.node-red/node_modules/node-red-contrib-radio-emi/radioEmission 0 12325261 3 off\" };\n return [msg1];\n}","outputs":1,"noerr":0,"x":320,"y":120,"wires":[["b1e419cd.fff3d8"]]},{"id":"b1e419cd.fff3d8","type":"exec","z":"a8893c87.db65f","command":"","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"radioEmission","x":580,"y":120,"wires":[[],[],[]]},{"id":"6bf9a685.527338","type":"ui_switch","z":"a8893c87.db65f","name":"Prise 1","label":"Prise 1","group":"aeb1704d.6d297","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"prise_1_on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"prise_1_off","offvalueType":"str","officon":"","offcolor":"","x":110,"y":60,"wires":[["f28896f.bd25a68"]]},{"id":"145e2a46.8168e6","type":"ui_switch","z":"a8893c87.db65f","name":"Prise 2","label":"Prise 2","group":"aeb1704d.6d297","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"prise_2_on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"prise_2_off","offvalueType":"str","officon":"","offcolor":"","x":110,"y":120,"wires":[["f28896f.bd25a68"]]},{"id":"2f8a95f5.d3948a","type":"ui_switch","z":"a8893c87.db65f","name":"Prise 3","label":"Prise 3","group":"aeb1704d.6d297","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"prise_3_on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"prise_3_off","offvalueType":"str","officon":"","offcolor":"","x":110,"y":180,"wires":[["f28896f.bd25a68"]]},{"id":"aeb1704d.6d297","type":"ui_group","z":"","name":"Commandes","tab":"777713cf.aa843c","order":3,"disp":true,"width":"6","collapse":false},{"id":"777713cf.aa843c","type":"ui_tab","z":"","name":"Ecran Principal","icon":"home","order":1}]

 

 

Quelques infos …

Merci, tout d’abord aux organisateurs et au public du salon du jeu à St-Renan. Beaucoup de visiteurs curieux et intéressés par les présentations du Fablab : Découpe laser, impression 3D, console Raspberry et montages électroniques.

Nous serons ouverts samedi prochain 14 avril à 14h30 au centre Culturel de St-Renan, mais il n’y aura exceptionnellement  pas d’ouverture les 21, 28 avril et 5 mai, reprise des ouvertures le 12 mai avec les ateliers découverte de l’Arduino et la fabrication de station météo, préparation de l’atelier fabrication de yukulele à l’école Notre Dame de Liesse. Et tous les autres projets en cours: réalisation domotique(David nous prépare un bel article !!!), construction d’une imprimante 3D (bravo Thomas pour l’avancement de ton projet).

Prise en main de l’arduino : la station météo

Pour finaliser ce projet on démarre par le commencement :

La carte Arduino Uno

et son interface de programmation

#include

void setup(){

}
void loop(){

}

prise en main avec quelques leds et boutons, puis l’écran LCD, puis le capteurs de température LM35, puis le DHT22, un peu de pression atmosphérique avec le BMP280. On programme tout cela et …

ce n’est pas fini car les plus courageux pourront apporter pleins de raffinements et un emballage super design.

 

Le jeu de 421 électronique

Un aperçu de ce que pourrait donner ce jeu de 421, avec un affichage lumineux dans des dalles d’Altuglas gravées.

L’affichage de la valeur d’un dé se fait avec seulement 4 « allumages » de led :

  1. une led centrale
  2. deux leds au milieu de chaque cotés
  3. une led en bas à gauche et une led en haut à droite, groupées. (+ le 1 bien sur)
  4. une led en haut à gauche et une led en bas à droite, groupées. (+ le 3 )
  5. = le 4 + le 3 et le 1
  6. = le 2 + le 3 et le 4

Un câblage qui utilise toutes les entrées-sorties de la carte ! :

  • 4 X 3 sorties leds pour les 3 dés
  • 4 entrées pour les boutons
  • 2 entrées pour l’affichage 7 segments

Un aperçu du programme arduino (à améliorer certes !)

#include "SevenSegmentTM1637.h"

const int D1_1 = 2; // the number of the pushbutton pin
const int D1_2 = 3; // the number of the pushbutton pin
const int D1_3 = 4; // the number of the pushbutton pin
const int D1_4 = 5; // the number of the pushbutton pin
const int D2_1 = 6; // the number of the pushbutton pin
const int D2_2 = 7; // the number of the pushbutton pin
const int D2_3 = 8; // the number of the pushbutton pin
const int D2_4 = 9; // the number of the pushbutton pin
const int D3_1 = 10; // the number of the pushbutton pin
const int D3_2 = 11; // the number of the pushbutton pin
const int D3_3 = 12; // the number of the pushbutton pin
const int D3_4 = 13; // the number of the pushbutton pin

const int Bt_1 = 15; // the number of the pushbutton pin
const int Bt_2 = 16; // the number of the pushbutton pin
const int Bt_3 = 17; // the number of the pushbutton pin
const int Bt_G = 14; // the number of the pushbutton pin
const byte PIN_CLK = 18; // define CLK pin (any digital pin)
const byte PIN_DIO = 19; // define DIO pin (any digital pin)

int Temps = 2000;
bool Bt_GState = 0;
bool Bt_1State = 0;
bool Bt_2State = 0;
bool Bt_3State = 0;
bool D1 = 0;
bool D2 = 0;
bool D3 = 0;
bool Jeu = 0; // jeu = 0 : charge ; jeu = 1 : decharge
bool Joueur = 0 ; //joueur1 = 0 : joueur2 = 1
bool Debut = 0 ; // debut = 0 joueur1 debute sinon joueur2
int Val = 0;
int Val1 = 0;
int Val2 = 0;
int Score = 0;
int Score1 = 0 ;
int Score2 = 0 ;
int Jetons1 = 0 ;
int Jetons2 = 0 ;
int Lance = 0; // si jeu = 1 lance = 3
int Pot = 21;
int Temp ;
String Seg;
 String ScoreT;
int Tirage[3];

SevenSegmentTM1637 display(PIN_CLK, PIN_DIO);

void setup() {
 Serial.begin(9600); // initializes the Serial connection @ 9600 baud
 display.begin(); // initializes the display
 display.setBacklight(100); // set the brightness to 100 %
 display.print("INIT"); // display INIT on the display


 pinMode(14, INPUT_PULLUP);
 pinMode(15, INPUT_PULLUP);
 pinMode(16, INPUT_PULLUP);
 pinMode(17, INPUT_PULLUP);
 for (int thisPin = 2; thisPin < 14; thisPin++) {
 pinMode(thisPin, OUTPUT);
 }
 randomSeed(analogRead(7));
 delay(Temps); // wait 1000 ms
 Efface();
 Affiche(1, 4);
 Affiche(2, 2);
 Affiche(3, 1);
 delay(Temps);
 Efface();
}

void loop() {

while (Pot < 22 && Pot > 0) { // phase de charge
 Jeu = false;
 
 if(!Joueur){
 Efface();
// Serial.print("Joueur : ");
// Serial.println(Joueur + 1);
 while(!Bt_GState && !Joueur) {
 AfficheJoueur(); 
 if (digitalRead(Bt_G) == LOW){ Bt_GState = 1;
 //Serial.println("Prêt au Lancement des dés");
 }
 LanceCharge();
 }
 }
 
 if(Joueur){
 Efface();
// Serial.print("Joueur : ");
// Serial.println(Joueur + 1);
 while(!Bt_GState && Joueur) {
 AfficheJoueur();
 if (digitalRead(Bt_G) == LOW){ Bt_GState = 1;
 Serial.println("Prêt au Lancement des dés J2");
 }
 LanceCharge();
 }
 }
 }
 if (Pot == 0 && Jeu == false) { // phase de decharge
 if (Jetons1 > Jetons2) {
 int tmp = Jetons1;
 Jetons1 = Jetons2;
 Jetons2 = tmp;
 }
 Jeu = true;
 display.clear();
 display.setColonOn(0);
 display.print("DECHARGE"); 
 Joueur = 0;
 AfficheJoueur();
// Serial.print("Passage en phase decharge : ");
// Serial.println(Jeu);
 Efface();
 }

while (Jetons1 > 0 && Jetons2 > 0 && Jeu == true) {
 
 if(!Joueur){
 
 while(!Bt_GState && !Joueur) {
 AfficheJoueur(); 
 Efface();
 if (digitalRead(Bt_G) == LOW){ Bt_GState = 1;Serial.println("Prêt au Lancement des dés");}
 
 if (Lance != 0) {
 if (digitalRead(Bt_1) == LOW){ Bt_1State = !Bt_1State;Serial.println("Verouillage D1");}
 if (digitalRead(Bt_2) == LOW){ Bt_2State = !Bt_2State;Serial.println("Verouillage D2");}
 if (digitalRead(Bt_3) == LOW){ Bt_3State = !Bt_3State;Serial.println("Verouillage D3");}
 
 if (Bt_1State){ D1=1; 
 Affiche(1, Tirage[0]);}
 if (Bt_2State){ D2=1; 
 Affiche(2, Tirage[1]);}
 if (Bt_3State){ D3=1; 
 Affiche(3, Tirage[2]);}
 }
 
 LanceDecharge();
 
}
 }
 if(Joueur){
 
 while(!Bt_GState && Joueur) {
 AfficheJoueur(); 
 Efface();
 if (digitalRead(Bt_G) == LOW){ Bt_GState = 1;Serial.println("Prêt au Lancement des dés");}

if (Lance != 0) {
 if (digitalRead(Bt_1) == LOW){ Bt_1State = !Bt_1State; }
 if (digitalRead(Bt_2) == LOW){ Bt_2State = !Bt_2State; }
 if (digitalRead(Bt_3) == LOW){ Bt_3State = !Bt_3State; }
 
 if (Bt_1State){ D1=1; 
 Affiche(1, Tirage[0]);}
 if (Bt_2State){ D2=1; 
 Affiche(2, Tirage[1]);}
 if (Bt_3State){ D3=1; 
 Affiche(3, Tirage[2]);}
 }


LanceDecharge();
}
}
 }
 if(Pot==0 && Jetons1==0){display.clear();
 display.setColonOn(0);
 display.print("JOUEUR 1 GAGNE"); 
 if (digitalRead(Bt_G) == LOW){
 Jeu = 0; Jetons1 = Jetons2 = 0 ; Pot = 21; display.clear(); display.print("Reset");}
 }
 if(Pot==0 && Jetons2==0){display.clear();
 display.setColonOn(0);
 display.print("JOUEUR 2 GAGNE"); 
 if (digitalRead(Bt_G) == LOW){
 Jeu = 0; Jetons1 = Jetons2 = 0 ; Pot = 21; display.clear(); display.print("Reset");}}
}
void Efface() {
 //if(!D1) {
 digitalWrite (D1_1, LOW);
 digitalWrite (D1_2, LOW);
 digitalWrite (D1_3, LOW);
 digitalWrite (D1_4, LOW);
 // }
 // if(!D2) {
 digitalWrite (D2_1, LOW);
 digitalWrite (D2_2, LOW);
 digitalWrite (D2_3, LOW);
 digitalWrite (D2_4, LOW);
 //}
 //if(!D3) {
 digitalWrite (D3_1, LOW);
 digitalWrite (D3_2, LOW);
 digitalWrite (D3_3, LOW);
 digitalWrite (D3_4, LOW);
 //}
}
void LanceCharge() {
 
 if (Bt_GState == 1 && Jeu == false) {
 Serial.println("Lancement des dés");
 //Efface();
 Tirage[0] = random(1, 7); Tirage[1] = random(1, 7); Tirage[2] = random(1, 7);

Tri();
 
// Serial.print("Tirage : ");
// Serial.print(Tirage[0]);
// Serial.print(Tirage[1]);
// Serial.println(Tirage[2]);

Affiche(1, Tirage[0]);
 Affiche(2, Tirage[1]);
 Affiche(3, Tirage[2]);
 delay (Temps);


CalculScore();
// Serial.println("Calcul score");
 if(Joueur){ CalculJetons();
 AfficheJetons();
 }
 Joueur = !Joueur;
// Serial.print("Passage au joueur : ");
// Serial.println(Joueur + 1);
 Bt_GState = 0; //Serial.println("Remise à zéro du lancement");
 }
}
void LanceDecharge() {
 
 if (Bt_GState == 1 && Jeu == true) {
 Lance += 1;
// Serial.print("N° lancement: "); Serial.println(Lance);
// Serial.print("D1-D2-D3 avant tirage : ");
// Serial.print(D1); Serial.print(D2); Serial.println(D3);
 
 if (Lance < 4){
 
 if (!D1) {Tirage[0] = random(1, 7);}
 if (!D2) {Tirage[1] = random(1, 7);}
 if (!D3) {Tirage[2] = random(1, 7);}

Tri();
 
// Serial.print("Tirage Décharge: ");
// Serial.print(Tirage[0]);
// Serial.print(Tirage[1]);
// Serial.println(Tirage[2]);

Efface();

Affiche(1, Tirage[0]);
 Affiche(2, Tirage[1]);
 Affiche(3, Tirage[2]);

Bt_1State = Bt_2State = Bt_3State = D1 = D2 = D3 = 0;
 
delay (Temps);
 
 
 
 if(Lance==3){
 CalculScore(); Lance = 0;
// Serial.println("Calcul score Décharge");
 if(Joueur){
 CalculJetons();
// Serial.println("Calcul jetons Décharge");
 AfficheJetons();
// Serial.println("Affiche Jetons Decharge");}
 Joueur = !Joueur;
// Serial.print("Passage au joueur : ");
// Serial.println(Joueur + 1);
 }
 }
 
 Bt_GState = 0; //Serial.println("Remise à zéro du lancement"); 
 }
}

void Affiche(int nd, int d) {
 if (d == 1) {
 if (nd == 1) {
 digitalWrite (D1_1, HIGH);
 }
 if (nd == 2) {
 digitalWrite (D2_1, HIGH);
 }
 if (nd == 3) {
 digitalWrite (D3_1, HIGH);
 }
 }
 if (d == 2) {
 if (nd == 1) {
 digitalWrite (D1_2, HIGH);
 }
 if (nd == 2) {
 digitalWrite (D2_2, HIGH);
 }
 if (nd == 3) {
 digitalWrite (D3_2, HIGH);
 }
 }
 if (d == 3) {
 if (nd == 1) {
 digitalWrite (D1_1, HIGH);
 digitalWrite (D1_3, HIGH);
 }
 if (nd == 2) {
 digitalWrite (D2_1, HIGH);
 digitalWrite (D2_3, HIGH);
 }
 if (nd == 3) {
 digitalWrite (D3_1, HIGH);
 digitalWrite (D3_3, HIGH);
 }
 }
 if (d == 4) {
 if (nd == 1) {
 digitalWrite (D1_4, HIGH);
 digitalWrite (D1_3, HIGH);
 }
 if (nd == 2) {
 digitalWrite (D2_4, HIGH);
 digitalWrite (D2_3, HIGH);
 }
 if (nd == 3) {
 digitalWrite (D3_4, HIGH);
 digitalWrite (D3_3, HIGH);
 }
 }
 if (d == 5) {
 if (nd == 1) {
 digitalWrite (D1_1, HIGH);
 digitalWrite (D1_3, HIGH);
 digitalWrite (D1_4, HIGH);
 }
 if (nd == 2) {
 digitalWrite (D2_1, HIGH);
 digitalWrite (D2_3, HIGH);
 digitalWrite (D2_4, HIGH);
 }
 if (nd == 3) {
 digitalWrite (D3_1, HIGH);
 digitalWrite (D3_3, HIGH);
 digitalWrite (D3_4, HIGH);
 }
 }
 if (d == 6) {
 if (nd == 1) {
 digitalWrite (D1_2, HIGH);
 digitalWrite (D1_3, HIGH);
 digitalWrite (D1_4, HIGH);
 }
 if (nd == 2) {
 digitalWrite (D2_2, HIGH);
 digitalWrite (D2_3, HIGH);
 digitalWrite (D2_4, HIGH);
 }
 if (nd == 3) {
 digitalWrite (D3_2, HIGH);
 digitalWrite (D3_3, HIGH);
 digitalWrite (D3_4, HIGH);
 }
 }
}
void Tri() {
 while (Tirage[0] < Tirage[1] || Tirage[0] < Tirage[2] || Tirage[1] < Tirage[2]) {
 if (Tirage[0] < Tirage[1]) {
 Temp = Tirage[0];
 Tirage[0] = Tirage[1];
 Tirage[1] = Temp;
 }
 if (Tirage[1] < Tirage[2]) {
 Temp = Tirage[1];
 Tirage[1] = Tirage[2];
 Tirage[2] = Temp;
 }
 }
}

void CalculScore() {
 // tri des des
 Tri();
 // combinaisons
 // 421
 if (Tirage[0] == 4 && Tirage[1] == 2 && Tirage[2] == 1 ) {
 Val = 100;
 (!Joueur) ? Val1 = Val : Val2 = Val;
 }
 
 // 111
 if (Tirage[0] == 1 && Tirage[1] == 1 && Tirage[2] == 1 ) {Val = 70;
(!Joueur) ? Val1 = Val : Val2 = Val;}
 
 // 666 - 611
 if ( Tirage[0] == Tirage[1] && Tirage[1] == Tirage[2] && Tirage[0] == 6 ) {Val = 66;
 (!Joueur) ? Val1 = Val : Val2 = Val;} 
 if ( Tirage[0] == 6 && Tirage[1] == 1 && Tirage[2] == 1 ) {Val = 65;
 (!Joueur) ? Val1 = Val : Val2 = Val;}
 
// 555 - 511
if ( Tirage[0] == Tirage[1] && Tirage[1] == Tirage[2] && Tirage[0] == 5 ) { Val = 55; 
 (!Joueur) ? Val1 = Val : Val2 = Val;}
if ( Tirage[0] == 5 && Tirage[1] == 1 && Tirage[2] == 1 ) { Val = 54; 
 (!Joueur) ? Val1 = Val : Val2 = Val;}

// 444 - 411
if ( Tirage[0] == Tirage[1] && Tirage[1] == Tirage[2] && Tirage[0] == 4 ) { Val = 44; 
 (!Joueur) ? Val1 = Val : Val2 = Val;}
if ( Tirage[0] == 4 && Tirage[1] == 1 && Tirage[2] == 1 ) { Val = 43; 
 (!Joueur) ? Val1 = Val : Val2 = Val;}
 
// 333 - 311
if ( Tirage[0] == Tirage[1] && Tirage[1] == Tirage[2] && Tirage[0] == 3 ) { Val = 33; 
 (!Joueur) ? Val1 = Val : Val2 = Val;}
if ( Tirage[0] == 3 && Tirage[1] == 1 && Tirage[2] == 1 ) { Val = 32; 
 (!Joueur) ? Val1 = Val : Val2 = Val;
 }
// 222 - 211
if ( Tirage[0] == Tirage[1] && Tirage[1] == Tirage[2] && Tirage[0] == 2 ) { Val = 22; 
 (!Joueur) ? Val1 = Val : Val2 = Val;}
if ( Tirage[0] == 2 && Tirage[1] == 1 && Tirage[2] == 1 ) { Val = 21; 
 (!Joueur) ? Val1 = Val : Val2 = Val;}
 
// Suites
if ( Tirage[0] == 6 && Tirage[1] == 5 && Tirage[2] == 4 ) { Val = 20; 
 (!Joueur) ? Val1 = Val : Val2 = Val;}
 if ( Tirage[0] == 5 && Tirage[1] == 4 && Tirage[2] == 3 ) { Val = 19; 
(!Joueur) ? Val1 = Val : Val2 = Val;}
 if ( Tirage[0] == 4 && Tirage[1] == 3 && Tirage[2] == 2 ) { Val = 18; 
(!Joueur) ? Val1 = Val : Val2 = Val;}
 if ( Tirage[0] == 3 && Tirage[1] == 2 && Tirage[2] == 1 ) { Val = 17; 
(!Joueur) ? Val1 = Val : Val2 = Val;}

//221 Nenette
if ( Tirage[0] == 2 && Tirage[1] == 2 && Tirage[2] == 1 ) { Val = 16; 
 (!Joueur) ? Val1 = Val : Val2 = Val;}

// Hors combinaisons
if ( Val1 == 0 && Val2 == 0){ 
Val =Tirage[0] * 100 + Tirage[1] * 10 + Tirage[2];
Val1 = Val; 
 //Serial.print("Hors combinaison J1 : ");
 //Serial.println(Val1);
} 
if (Val1>100 && Val2==0 && Joueur) { Val = 0;
 Val =Tirage[0] * 100 + Tirage[1] * 10 + Tirage[2];
Val2 = Val; 
 //Serial.print("Hors combinaison J2 : ");
 //Serial.println(Val2);
}

if (Joueur) {
 if ( Val1 - Val2 == 0 ) { Score1 = 0; Score2 = 0;}
 if ((Val1 <101 && Val1 > Val2 )||(Val1 <101 && Val2 > 100 )) {Score2 = 0;
 switch(Val1){
 case(100): Score1 = 10;break;
 case(70): Score1 = 7;break;
 case(66): Score1 = 6;break;
 case(65): Score1 = 6;break;
 case(55): Score1 = 5;break;
 case(54): Score1 = 5;break;
 case(44): Score1 = 4;break;
 case(43): Score1 = 4;break;
 case(33): Score1 = 3;break;
 case(32): Score1 = 3;break;
 case(22): Score1 = 2;break;
 case(21): Score1 = 2;break;
 case(20): Score1 = 2;break;
 case(19): Score1 = 2;break;
 case(18): Score1 = 2;break;
 case(17): Score1 = 2;break;
 case(16): Score1 = 4;break;
 default: Score1 = 1;break; 
 }
 }
 if ((Val2<101 && Val1 < Val2 )||(Val2 <101 && Val1 > 100 )) {Score1 = 0;
 switch(Val2){
 case(100): Score2 = 10;break;
 case(70): Score2 = 7;break;
 case(66): Score2 = 6;break;
 case(65): Score2 = 6;break;
 case(55): Score2 = 5;break;
 case(54): Score2 = 5;break;
 case(44): Score2 = 4;break;
 case(43): Score2 = 4;break;
 case(33): Score2 = 3;break;
 case(32): Score2 = 3;break;
 case(22): Score2 = 2;break;
 case(21): Score2 = 2;break;
 case(20): Score2 = 2;break;
 case(19): Score2 = 2;break;
 case(18): Score2 = 2;break;
 case(17): Score2 = 2;break;
 case(16): Score2 = 4;break;
 default: Score2 = 1;break; 
 }
 }
 if(Val1>100 && Val2>100) {
 if (Val1==Val2) { Score1=Score2=0 ; //Serial.println("Egalité Hors combinaison ");
 }
 if(Val1>Val2){ Score1=1;}
 if(Val2>Val1){ Score2=1;}
 }
 
 //Serial.print("Valeur Val1 : ");
// Serial.println(Val1);
// Serial.print("Valeur Val2 : ");
// Serial.println(Val2);
 Val1 = Val2 = 0;
// Serial.print("Calcul du score : ");
// Serial.println(Score1 + Score2);
}

}
 
void CalculJetons() {
 if (!Jeu) {
 if (Score1 > Pot) {
 Score1 = Pot;
 }
 if (Score2 > Pot) {
 Score2 = Pot;
 }
 if (Score1 > Score2) {
 Jetons2 = Jetons2 + Score1;
 }
 if (Score2 > Score1) {
 Jetons1 = Jetons1 + Score2;
 }
 Pot = Pot - Score1 - Score2;
 Score1 = Score2 = 0;
 
// Serial.print("Calcul du pot : ");
// Serial.println(Pot);
 }
 if(Jeu) {
 if (Score1 > Score2) {
 if (Score1 > Jetons1) {
 Score1 = Jetons1;
 }
 Jetons2 = Jetons2 + Score1;
 Jetons1 = Jetons1 - Score1;
 }
 if (Score2 > Score1) {
 if (Score2 > Jetons2) {
 Score2 = Jetons2;
 }
 Jetons1 = Jetons1 + Score2;
 Jetons2 = Jetons2 - Score2;
 }
 Score1 = Score2 = 0;
 }
 
}
void AfficheJetons(){
String str1;
 str1="J2";
String str2 = String(Jetons2);
if(Jetons2>=0 && Jetons2<=9){str2 = '0'+ str2;}
String str0 = str1 + str2;
display.clear();
 display.setColonOn(1);
 display.print(str0); // display LOOP on the display
delay(Temps); 
String str3;
 str3="J1";
String str4 = String(Jetons1);
if(Jetons1>=0 && Jetons1<=9){str4 = '0'+ str4;}
String str = str3 + str4;
display.clear();
 display.setColonOn(1);
 display.print(str); // display LOOP on the display 
delay(Temps);

// Serial.print("Jetons joueur 1 : ");
// Serial.println(Jetons1);
// Serial.print("Jetons joueur 2 : ");
// Serial.println(Jetons2);
}
void AfficheJoueur(){
 String str1;
(Joueur) ? str1="J2" : str1= "J1";
display.clear();
 display.setColonOn(1);
 display.print(str1); // display LOOP on the display
display.blink(); 
}

Voilà

quelques infos

Bonjour,
Quelques informations pour les semaines à venir

Attention : En raison d’un évènement de l’école de musique, le FabLab sera fermé le samedi 10 mars
(rendez-vous donc le 17 mars de 14h30 à 17h30)

Le 18 mars, nous seront présents au salon : La Rénanaise musicale @ Espace Culturel
Les horaires : 10h – 12h30 & 14h – 18h

Les 7 & 8 avril, nous seront présents au salon : La fête du jeux @ Espace Culturel
Les horaires : samedi 14h – 18h & dimanche 10h – 18h

 

 


Concernant les projets du FabLab, nous avons prévu de nous concentrer sur

la conception d’une station météo


Il s’agit d’un projet très pédagogique et très facilement réalisable avec les kits que vous avez.
Nous avons les capteurs manquant dans vos kits.

 

voici le prévisionnel

semaine 1 : utiliser le capteur de température analogique LM35 et l’afficher sur le moniteur série de l’ordinateur

semaine 2 : ajout de l’écran LCD I2C et affichage de la température sur cet écran

semaine 3 : ajout d’un capteur de température et d’humidité DTH22 et d’un bouton poussoir permettant de basculer de la mesure de température analogique aux mesures numériques

semaine 4 : ajout d’un capteur de pression BMP280

semaine 5 : ajout de 3 leds indiquant l’évolution de la pression.