meta données pour cette page
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
projets:comptetemps [14/12/2022 11:14] – [étape 3 : mix] laure | projets:comptetemps [28/01/2023 23:10] (Version actuelle) – laure | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Compte - Temps Interactif ====== | + | < |
+ | ===== ⏲️ 🍄 Compte - Temps Interactif ===== | ||
+ | {{tag> | ||
+ | |||
+ | < | ||
+ | On lance l' | ||
+ | |||
+ | <label type=" | ||
+ | <label type=" | ||
+ | <label type=" | ||
+ | <label type=" | ||
+ | <label type=" | ||
+ | <label type=" | ||
+ | <label type=" | ||
+ | |||
+ | </ | ||
- | < | ||
- | On lance l' | ||
==== étape 1 : du code simple de chaque côté==== | ==== étape 1 : du code simple de chaque côté==== | ||
Ligne 284: | Ligne 298: | ||
<WRAP half column> | <WRAP half column> | ||
< | < | ||
+ | * Ajout d'un compteur millisecondes pour que ça aille plus vite (les heures ne sont plus affichées) | ||
+ | * Le bouton physique Arduino arrête le chrono à l' | ||
+ | * Pour relancer le chrono le MJ utilise sa souris de PC | ||
+ | * Possibilité de passer en Plein écran plutôt qu'en 800x600px | ||
+ | * | ||
</ | </ | ||
<WRAP half column> | <WRAP half column> | ||
< | < | ||
- | <panel title=" | + | <panel title=" |
- | <file java> | + | < |
+ | /* MON PROJET : un compteur de seconde centré dans l' | ||
+ | + Piloté par Arduino et un bouton ( stop / start) | ||
+ | | ||
+ | | ||
+ | */ | ||
+ | |||
+ | // objet global Chrono, déclaration de classe | ||
+ | StopChronoTimer sc; | ||
+ | |||
+ | // Communication avec Arduino | ||
+ | import processing.serial.*; | ||
+ | Serial myPort; | ||
+ | |||
+ | String dt; // Data received from the serial port | ||
+ | float valD; | ||
+ | int btnVal = 0; // une valeur pour l'etat du bouton | ||
+ | |||
+ | int oldBtn = 0; // une valeur pour conserver l' | ||
+ | |||
+ | int cptBtn = 1; // une variable pour compter les appuis | ||
+ | |||
+ | PFont matypo; | ||
+ | |||
+ | void setup() { | ||
+ | // fullScreen(); | ||
+ | size(800, | ||
+ | |||
+ | // printArray(Serial.list()); | ||
+ | String portName = "/ | ||
+ | myPort = new Serial(this, | ||
+ | |||
+ | sc = new StopChronoTimer(); | ||
+ | sc.start(); | ||
+ | } | ||
+ | |||
+ | void draw() { | ||
+ | while (myPort.available() >0) { | ||
+ | |||
+ | dt = myPort.readStringUntil(' | ||
+ | if (dt !=null) { | ||
+ | // si on lit qqchose on le trasnforme en int avec ces 2 lignes | ||
+ | valD = float(dt); | ||
+ | btnVal = int(valD); | ||
+ | } | ||
+ | } | ||
+ | top(); | ||
+ | } | ||
+ | |||
+ | /// FONCTONS | ||
+ | |||
+ | void top() { // dessine le texte-temps sur l' | ||
+ | background(# | ||
+ | fill(000); | ||
+ | textSize(208); | ||
+ | textAlign(CENTER); | ||
+ | // nf est utile pour transformer des chiffres en string text https:// | ||
+ | text(nf(sc.minutes(), | ||
+ | |||
+ | |||
+ | if (btnVal==0 | ||
+ | /// | ||
+ | } else if (btnVal ==1 && | ||
+ | cptBtn = cptBtn + 1; | ||
+ | oldBtn = 1; | ||
+ | score(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void score() { | ||
+ | int[] score = new int[3]; | ||
+ | score[0] = sc.minutes(); | ||
+ | score[1] = sc.secondes(); | ||
+ | score[2] = sc.millisec(); | ||
+ | |||
+ | fill(# | ||
+ | textSize(24); | ||
+ | |||
+ | text(" | ||
+ | noLoop(); | ||
+ | } | ||
+ | |||
+ | |||
+ | // Pour relancer un compteur j' | ||
+ | // mais il ne faut pas cliquer si le compteur n'est pas déjà arrêté | ||
+ | |||
+ | void mouseReleased() { | ||
+ | | ||
+ | oldBtn = 0; | ||
+ | sc.start(); | ||
+ | loop(); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | // CLASSES | ||
+ | |||
+ | class StopChronoTimer { | ||
+ | int startTime = 0; | ||
+ | int stopTime = 0; | ||
+ | boolean running = false; | ||
+ | |||
+ | void start() { | ||
+ | startTime = millis(); | ||
+ | running = true; | ||
+ | } | ||
+ | |||
+ | void stop() { | ||
+ | stopTime = millis(); | ||
+ | running = false; | ||
+ | } | ||
+ | |||
+ | /* int[] score(int s, int m, int h){ | ||
+ | int s = return secondes(); | ||
+ | int m = return minutes(); | ||
+ | int h = return heures(); | ||
+ | } | ||
+ | */ | ||
+ | |||
+ | void fin() { | ||
+ | stopTime = 0; | ||
+ | startTime = 0; | ||
+ | running = false; | ||
+ | } | ||
+ | |||
+ | int gTempsPasse() { | ||
+ | int tempsP; | ||
+ | if (running) { | ||
+ | tempsP = (millis()-startTime); | ||
+ | } else { | ||
+ | tempsP =(stopTime - startTime); | ||
+ | } | ||
+ | return tempsP; | ||
+ | } | ||
+ | |||
+ | int millisec(){ | ||
+ | return (gTempsPasse()/ | ||
+ | } | ||
+ | |||
+ | int secondes() { | ||
+ | return (gTempsPasse()/ | ||
+ | } | ||
+ | |||
+ | int minutes() { | ||
+ | return (gTempsPasse()/ | ||
+ | } | ||
+ | |||
+ | int heures() { | ||
+ | return (gTempsPasse()/ | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
</ | </ | ||
- | </ | + | </ |
+ | </ | ||
</ | </ | ||
</ | </ | ||
Ligne 303: | Ligne 476: | ||
<WRAP half column> | <WRAP half column> | ||
< | < | ||
- | |||
Je vais donc prendre les dimensions de l' | Je vais donc prendre les dimensions de l' | ||
+ | {{ : | ||
+ | Bon évidemment le premier essai n'est pas au top mais mon fichier FreeCAD est enregistré avec les modif : | ||
+ | * élargissement du diamètre accueil bouton ( de 11,2 mesuré mais trop serrant à 11,5 mm) | ||
+ | * diamètre pied champi fixé à 24 mm | ||
+ | Il faudra regénérer un mesh si on veut le réimprimer | ||
</ | </ | ||
<WRAP half column> | <WRAP half column> | ||
- | depuis Arduino on envoie un signal... | + | Mon premier jet est mal adapté, à bricoler pour que le caps bouton rentre dedans. |
</ | </ | ||
</ | </ | ||
+ | |||
+ | ==== étape 5 : montage et miniaturisation === | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | colonnes | ||
+ | </ | ||
+ | |||
+ | <WRAP half column> | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ |