Last active
October 27, 2019 16:44
-
-
Save ilmanzo/8f1cc9d2698b7c4895b3c7fe7655ff1f to your computer and use it in GitHub Desktop.
classe "spinner" per AstroPi SenseHat
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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