Pages: [1]   Go Down
Author Topic: read RGB versione 0.1 python by mandorlone  (Read 809 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 2
Posts: 396
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


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
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
Code:
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()
« Last Edit: September 06, 2012, 01:35:21 pm by ilmandorlone » Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1722
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?  smiley-small
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Offline Offline
Sr. Member
****
Karma: 2
Posts: 396
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: September 06, 2012, 01:22:02 pm by ilmandorlone » Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1722
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Pages: [1]   Go Up
Jump to: