Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Système Chronométrage - Où commencer ?
#1

Bonjour, actuellement en terminale STI2D spécialité SIN, pour la fin de l'année mon groupe et moi devons faire un système de chronométrage pour notre projet de bac avec une raspberry PI ainsi que la carte Explore NFC d'élément 14.
Nous avons tout mis en place concernant la raspberry PI et les softwares pour la Explore NFC pour que nos badges soient détectés, nous avons réussi à les faire détecter mais maintenant nous devons importer un système de chronométrage avec un chronomètre codé en python.


Notre projet consiste à créer une simulation de course de cyclisme, il y a normalement deux coureurs qui possèdent un badge NFC, nous devons faire détecter le temps, les départs, arrivés, nombre tours et faux départs.

Nous sommes actuellement perdus, vu que notre prof est ignorant avec nous, celui-ci s'occupe que du groupe qui représentera le lycée pour un évènement de course, nous, nous sommes mis de côté et devons être "autonome" selon lui ainsi que de trouver des solutions, mais après maintes recherche sur le web, nous n'avons toujours pas de solutions..

Si vous pouviez nous éclaircir sur comment procéder à l'installation d'un programme python sur notre carte raspberry PI, nous commençons à douter de notre projet et de sa facilité / difficulté,
Je vous remercie.


Voici notre programme en python:

Code :
[== Indéfini ==]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from tkinter import *
import time
from functools import partial

class Chronometre(Frame):  # definition de la class'Chronomètre' dans Frame                                                            
    def __init__(self, parent=None, **kw):    # definition initiale de la class  
        Frame.__init__(self, parent, kw)
        self._start = 0.0      
        self._elapsedtime = 0.0
        self._running = 0
        self.timestr = StringVar()            
        self.makeWidgets()    
  
    def makeWidgets(self): #definition pour afficher le temps                      
        l = Label(self, textvariable=self.timestr)
        self._setTime(self._elapsedtime)
        l.pack(fill=X, expand=NO, pady=10, padx=10)                    
  
    def _update(self): # definition du reset
        self._elapsedtime = time.time() - self._start
        self._setTime(self._elapsedtime)
        self._timer = self.after(50, self._update)
  
    def _setTime(self, elap): #définition du temps en minutes/secondes/millisecondes
        minutes = int(elap/60)
        seconds = int(elap - minutes*60.0)
        hseconds = int((elap - minutes*60.0 - seconds)*100)              
        self.timestr.set('%02d:%02d:%03d' % (minutes, seconds, hseconds))
  
    def Start(self, event=None): #lancement du chrono s'il est en arrêt                                                  
        if not self._running:          
            self._start = time.time() - self._elapsedtime
            self._update()
            self._running = 1      
  
    def Stop(self): # arrêt du chrono s'il est en marche                                  
        if self._running:
            self.after_cancel(self._timer)          
            self._elapsedtime = time.time() - self._start  
            self._setTime(self._elapsedtime)
            self._running = 0
  
    def Reset(self): # remise à zéro du chrono                              
        self._start = time.time()      
        self._elapsedtime = 0.0  
        self._setTime(self._elapsedtime)
  
    def get(self) :
        return self._running
  
  
def masw(Event,sw):
    if  sw.get() :
        sw.Stop
        print ('stop')
    else:
        sw.Start
        print ('start')
  
def masv(Event,sv):
    if  sv.get() :
        sv.Stop
        print ('stop')
    else:
        sv.Start
        print ('start')
          
def start_chronos(chronos, event):
    for chrono in chronos:
        chrono.Start()

def reset_chronos(chronos, event):
    for chrono in chronos:
        chrono.Reset()

def stop_chrono_gauche(chrono, event):
    chrono.Stop()

def stop_chrono_droit(chrono, event):
    chrono.Stop()
  
def main(): # definition de la fenetre de tkinter
    root = Tk()
    root.title('projet 2014-2015')
    sw = Chronometre(root)
    sw.pack(side=LEFT,padx=30,pady=30)
    sv = Chronometre(root)
    sv.pack(side=RIGHT,padx=30,pady=30)
  
    root.bind('<a>', partial(start_chronos, (sw, sv)))
    root.bind('<z>', partial(stop_chrono_gauche, (sw)))
    root.bind('<e>', partial(stop_chrono_droit, (sv)))
    root.bind('<r>', partial(reset_chronos, (sw, sv)))
    
      
    root.mainloop()
  
  
if __name__ == '__main__':
    main()
Répondre
#2

Bonsoir,

Sans avoir lu le code, est-ce que vous ne pourriez pas "simplement" stocker l'heure de détection du badge ?
Si le badge est détecté avant le départ : faux départ
Si le badge est détecté et pas de faux départ, stocker l'heure de passage

Par requêtes SQL on peut compter le nombre de passage, la différence entre deux relevés donne le temps. Et il devient "facile" de mettre ca dans un graphique.

Pour la base de donnée c'est faisable avec SQLite et Python

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#3

Bonjour, oui pourquoi pas mais comment faire afficher l'heure quand le badge passera ?
Y a-t-il un logiciel ou autre de disponible pour cela ?
Répondre
#4

Avec la commande print ?

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)