read RGB versione 0.1 python by mandorlone


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

download source

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()

ciao, grazie mille che hai creato un applicazione per noi "poveri" mac user :stuck_out_tongue_closed_eyes:.
Vorrei imparare il python, sapresti indicarmi una valida guida per cominciare? :.

certamente io ho imparato dai video tutorial su un canale youtube. impararlo è molto semplice se segui questi video in 3 giorni sai tutto quello che serve.

sul suo sito http://www.niktorthenat.com/python.html che in questi giorni è in fase di lavorazione trovi molte guide

ps le installazioni delle librerie su mac non sono semplici fra qualche giorno inizio a fare video tutorial su come installare su mac un ambiente di sviluppo python ben strutturato

aaah, niktor the nat, è fantastico!!!
quando ho tempo comincio a seguire i tutorial su python (ne sto seguendo altri) :grin:
grazie.
se ti serve qualcosa dimmelo
ciaoooo