Skip to content

Instantly share code, notes, and snippets.

@ilmanzo
Last active October 27, 2019 16:44
Show Gist options
  • Save ilmanzo/8f1cc9d2698b7c4895b3c7fe7655ff1f to your computer and use it in GitHub Desktop.
Save ilmanzo/8f1cc9d2698b7c4895b3c7fe7655ff1f to your computer and use it in GitHub Desktop.
classe "spinner" per AstroPi SenseHat
from sense_hat import SenseHat
import time
import math
sensehat = SenseHat()
sensehat.low_light = True
class Spinner():
def __init__(self,sensehat):
self.s=sensehat # si salva un riferimento al device sensehat
self.points=[] # inizializza array di coordinate
#calcola i punti sul cerchio
for r in range(0,628,30):
x=int(4+3.5*math.cos(r/100))
y=int(4+3.5*math.sin(r/100))
#aggiunge la coppia x,y alla lista dei punti
self.points+=[(x,y)]
self.curpos=0
self.s.clear()
def plot(self,n):
#cancella ultimo pixel
self.s.set_pixel(self.points[n][0],self.points[n][1],(0,0,0))
n=(n+1)%len(self.points)
#colora i successivi con intensita' crescente
self.s.set_pixel(self.points[n][0],self.points[n][1],(64,0,0))
n=(n+1)%len(self.points)
self.s.set_pixel(self.points[n][0],self.points[n][1],(96,0,0))
n=(n+1)%len(self.points)
self.s.set_pixel(self.points[n][0],self.points[n][1],(255,0,0))
#a ogni passo incrementa la posizione nell'array
#se supera la lunghezza, riparte da zero
def spin(self):
self.plot(self.curpos)
self.curpos+=1
if self.curpos==len(self.points):
self.curpos=0
#nel mio programma inizializzo l'oggetto spinner e gli do un nome: sp
sp=Spinner(sensehat)
while 1:
# a ogni step e' sufficiente chiamare spin() e si occupa lui di tenere traccia
# di dove era rimasto e far avanzare l'animazione in modo autonomo
sp.spin()
time.sleep(0.1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment