Go Down

Topic: read RGB versione 0.1 python by mandorlone (Read 952 times) previous topic - next topic

ilmandorlone

Sep 06, 2012, 06:10 pm Last Edit: Sep 06, 2012, 08:35 pm by ilmandorlone Reason: 1

da questo sito potete trovare una cosa interessante che mi è piaciuta molto.
http://www.gioblu.com/tutorials/sensori/275-sensore-di-colore-led-rgb
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
[font=Verdana]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[/font]
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
Code: [Select]

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

cece99

ciao, grazie mille che hai creato un applicazione per noi "poveri" mac user :smiley-yell:.
Vorrei imparare il python, sapresti indicarmi una valida guida per cominciare?  :.
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

ilmandorlone

#2
Sep 06, 2012, 08:18 pm Last Edit: Sep 06, 2012, 08:22 pm by ilmandorlone Reason: 1
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.
http://www.youtube.com/playlist?list=PLC64779F4E2E7EB10&feature=plcp
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

cece99

aaah, niktor the nat, è fantastico!!!
quando ho tempo comincio a seguire i tutorial su python (ne sto seguendo altri)  :smiley-mr-green:
grazie.
se ti serve qualcosa dimmelo
ciaoooo
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Go Up