da questo sito potete trovare una cosa interessante che mi è piaciuta molto.
si tratta di un progetto che permette di leggere con 2 led RGB il colore del materiale che gli poni davanti.
ho provato a farlo ma mi dava spesso numeri sballati anche negativi alle volte.
a parte questo ho deciso di creare in python una mia versione del programma per visualizzare a monitor il colore anche se necessita ancora di moti miglioramenti.
in se non è niente di particolare e volevo passarlo a chi volesse provarlo. utilità del mio programma poca ma ormai che l'ho fatto spero che potrà tornare utile ad altri.
il codice per arduino è lo stesso del sito sopra linkato
mentre per il codice python serve aver intallato le librerie
wx e pyserial
attenzione alla terza riga bisogna settare la porta che si sta' usando la mia è /dev/tty.usbmodemfd121 e dovrebbe andare bene per tutti i mac
un ultima cosa io ho già creato l'eseguibile per mac che non necessita di alcuna installazione che lo trovate qui DOWNLOAD FOR MAC se siete disposti a creare un eseguibile per linux e windows linkatelo su questo post
import wx
import serial
sr=serial.Serial("/dev/tty.usbmodemfd121", 9600) #settare la propria porta seriale
def create(parent):
return Frame1(parent)
[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1PANEL1, wxID_FRAME1SASHWINDOW1,
wxID_FRAME1SLIDER1, wxID_FRAME1SLIDER2, wxID_FRAME1SLIDER3,
wxID_FRAME1STATICTEXT1, wxID_FRAME1STATICTEXT2, wxID_FRAME1STATICTEXT3,
wxID_FRAME1STATICTEXT4, wxID_FRAME1STATICTEXT5, wxID_FRAME1STATICTEXT6,
] = [wx.NewId() for _init_ctrls in range(13)]
class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
pos=wx.Point(358, 230), size=wx.Size(853, 437),
style=wx.DEFAULT_FRAME_STYLE, title=u'prova')
self.SetClientSize(wx.Size(853, 415))
self.SetBackgroundColour(wx.Colour(42, 55, 221))
self.SetAutoLayout(True)
self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
pos=wx.Point(0, 0), size=wx.Size(848, 416),
style=wx.TAB_TRAVERSAL)
self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label='cambia',
name='button1', parent=self.panel1, pos=wx.Point(352, 24),
size=wx.Size(120, 52), style=0)
self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
id=wxID_FRAME1BUTTON1)
self.slider1 = wx.Slider(id=wxID_FRAME1SLIDER1, maxValue=255,
minValue=0, name='slider1', parent=self.panel1, pos=wx.Point(48,
48), size=wx.Size(280, 18), style=wx.SL_HORIZONTAL, value=0)
self.slider2 = wx.Slider(id=wxID_FRAME1SLIDER2, maxValue=255,
minValue=0, name='slider2', parent=self.panel1, pos=wx.Point(48,
96), size=wx.Size(280, 18), style=wx.SL_HORIZONTAL, value=0)
self.slider3 = wx.Slider(id=wxID_FRAME1SLIDER3, maxValue=255,
minValue=0, name='slider3', parent=self.panel1, pos=wx.Point(48,
144), size=wx.Size(280, 18), style=wx.SL_HORIZONTAL, value=0)
self.sashWindow1 = wx.SashWindow(id=wxID_FRAME1SASHWINDOW1,
name='sashWindow1', parent=self.panel1, pos=wx.Point(440, 80),
size=wx.Size(296, 200), style=wx.CLIP_CHILDREN | wx.SW_3D)
self.sashWindow1.SetBackgroundColour(wx.Colour(255, 255, 255))
self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
label=u'Rosso', name='staticText1', parent=self.panel1,
pos=wx.Point(40, 24), size=wx.Size(82, 16), style=0)
self.staticText11 = wx.StaticText(id=wxID_FRAME1STATICTEXT4,
label='0', name='staticText4', parent=self.panel1,
pos=wx.Point(280, 24), size=wx.Size(60, 16), style=0)
self.staticText2 = wx.StaticText(id=wxID_FRAME1STATICTEXT2,
label=u'Verde', name='staticText2', parent=self.panel1,
pos=wx.Point(40, 72), size=wx.Size(37, 16), style=0)
self.staticText21 = wx.StaticText(id=wxID_FRAME1STATICTEXT4,
label='0', name='staticText4', parent=self.panel1,
pos=wx.Point(280, 72), size=wx.Size(60, 16), style=0)
self.staticText3 = wx.StaticText(id=wxID_FRAME1STATICTEXT3,
label=u'Blu', name='staticText3', parent=self.panel1,
pos=wx.Point(40, 120), size=wx.Size(20, 16), style=0)
self.staticText31 = wx.StaticText(id=wxID_FRAME1STATICTEXT4,
label='0', name='staticText4', parent=self.panel1,
pos=wx.Point(280, 120), size=wx.Size(60, 16), style=0)
def __init__(self, parent):
self._init_ctrls(parent)
def OnSlider1Scroll(self, event):
event.Skip()
def OnButton1Button(self, event):
RGB=sr.readline().split("/")
R=int(RGB[0])
G=int(RGB[1])
B=int(RGB[2])
self.sashWindow1.BackgroundColour=R,G,B
self.slider1.Value=R
self.staticText11.Label=str(R)
self.slider2.Value=G
self.staticText21.Label=str(G)
self.slider3.Value=B
self.staticText31.Label=str(B)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = create(None)
frame.Show()
app.MainLoop()