2010/12/1 matteo ruffoni <mattruffoni@xxxxxxxxx>: > > delta è un numero random tra -0,5 e +0,5 ma a cosa serve? (se lo sostituisco > con 0 il grafico sta fisso sul 50) > r ? è il random.random() (randomissimo?) sostituito ocn 0 non fa cambiare > nulla r è un numero casuale, tra 0 ed 1. Il dato che verrà graficato è self.data, che viene calcolato così, usando sia r che delta (ho parafrasato il codice originale): if r > 0.9: delta *= 15 elif r > 0.8: delta += (0.5 if self.init > self.data else -0.5) self.data += delta Il valore di self.init è 50; il tuo grafico ti dice come si presenta questa funzione :-) > Quale dei due deve essere sostituiro con le acc? Cominciamo da una cosa semplice - diciamo il grafico di ax. class DataGen(object): def __init__(self, init=0): self.data = self.init = init def next(self): self._recalc_data() return self.data def _recalc_data(self): ax = [] # lista di valori di accelerazione messages = wiimote.get_mesg() # sono arrivati dei messaggi dal Wiimote? for mesg in messages: # leggili tutti if mesg[0] == cwiid.MESG_ACC: # è l'accelerometro? ax.append( mesg[1][cwiid.X] ) # ricordati il valore letto n = len(ax) if n: self.data = sum(ax)/n # ritorna la media dei valori #else: # self.data = 0 Se il Wiimote manda più messaggi tra un timer ed il successivo, ritorniamo la media; se non è arrivato niente, il valore ritornato sarà quello della lettura precedente (se invece decommenti le ultime due righe avrai 0 come valore quando non è arrivato nulla). > delta = int(ay) > Mi sembra che il problema sia che vuole dei dati che non siano liste (in > tutti i casi la risposta è più o meno la stessa) e anche a me sembra un po' > logico nel real time non c'è bisogno di liste Ok, non è però logico che tu voglia trasformare una lista in un intero senza dire a Python come :-) Spero di essere stato comprensibile, Antonio -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx