[ Sajben @ 20.06.2014. 11:44 ] @
Imam Raspberry Pi + PiFace Digital. Pravio sam neke jednostavne animacije sa LED diodama i kasnije došao na ideju da pokrenem dve animacije u isto vreme.

Code:

#!/usr/bin/python
import pifacedigitalio as p
import thread
import time
p.init()
pio=p.PiFaceDigital()

def led(a,b,c,d,delay):
  while True:
    p.digital_write(a,1)
    time.sleep(delay)
    p.digital_write(d,0)
    time.sleep(delay)
    p.digital_write(b,1)
    time.sleep(delay)
    p.digital_write(a,0)
    time.sleep(delay)
    p.digital_write(c,1)
    time.sleep(delay)
    p.digital_write(b,0)
    time.sleep(delay)
    p.digital_write(d,1)
    time.sleep(delay)
    p.digital_write(c,0)
    time.sleep(delay)

# Create two threads as follows
try:
    thread.start_new_thread( led, (0,1,2,3,0.1, ) )
    thread.start_new_thread( led, (7,6,5,4,0.1, ) )

except:
    print "Error: unable to start thread"

while 1:
        pass



Nakon pokretanja skripte desetak sekundi sve radi normalno a nakon toga nastaje problem, neke diode ostanu upaljene pa kasnie se iskljuce uglavnom ne radi kako treba.

Hvala unapred na pomoci.
[ HeYoo @ 20.06.2014. 12:27 ] @
Da li si probao da povecas ili stavis razlicit delay?

Jsi li probao da lockujes thread kada ukljucujes/iskljucujes LED?
http://linuxgazette.net/107/pai.html
[ Sajben @ 20.06.2014. 15:33 ] @
Hvala za savete.
Upravo sam ubacio zakljucavanje i radi ok s tim da se prvo izvrsava jedna nit (thread) a tek onda druga.

Jel moze da se namesti da se izvrsavaju (barem prividno) u isto vreme?
[ jablan @ 20.06.2014. 15:53 ] @
zaključavaj samo oko digital_write, ne oko celog bloka.
[ Sajben @ 20.06.2014. 16:31 ] @
Ima puno koda ali radi ono što treba.

Hvala na pomoći.
[ jablan @ 20.06.2014. 20:38 ] @
Citat:
Sajben: Ima puno koda


Jebaga, izvuci taj blok (lock - digital_write - unlock - sleep) u posebnu funkciju pa neće biti puno koda.