Go Down

Topic: read RGB versione 0.1 python by mandorlone (Read 1 time) 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy