#!/usr/bin/env python
import smbus
import time
def spustfunkci(funkce): # spusteni vybrane funkce
if (funkce == 1): # rozsvitit prvni LEDku (cervenou)
bus.write_byte_data(addr,0x06,0x01)
if (funkce == 2): # rozsvitit druhou LEDku (zelenou)
bus.write_byte_data(addr,0x06,0x04)
if (funkce == 3): # rozsvitit treti LEDku (modrou)
bus.write_byte_data(addr,0x06,0x10)
if (funkce == 4): # rozsvitit ctvrtou LEDku (zlutou)
bus.write_byte_data(addr,0x06,0x40)
if (funkce == 5): # zhasnout vsechny LEDky
bus.write_byte_data(addr,0x06,0x00)
if (funkce == 6): # rozsvitit vsechny LEDky
bus.write_byte_data(addr,0x06,0x55)
if (funkce == 7): # pomalu rozblikat zelenou LED
bus.write_byte_data(addr,0x02,0x97) # generator 0 = frekvence 1Hz
bus.write_byte_data(addr,0x03,0x80) # generator 0 = strida 50%
bus.write_byte_data(addr,0x06,0x08) # druha LED na generator 0
if (funkce == 8): # rychle rozblikat zlutou LED
bus.write_byte_data(addr,0x04,0x25) # generator 1 = frekvence 4Hz
bus.write_byte_data(addr,0x05,0x80) # generator 1 = strida 50%
bus.write_byte_data(addr,0x06,0xC0) # ctvrta LED na generator 1
if (funkce == 9): # rychle blikat zelenou LED a zaroven pomalu blikat zlutou LED
bus.write_byte_data(addr,0x02,0x97) # generator 0 = frekvence 1Hz
bus.write_byte_data(addr,0x03,0x80) # generator 0 = strida 50%
bus.write_byte_data(addr,0x04,0x25) # generator 1 = frekvence 4Hz
bus.write_byte_data(addr,0x05,0x80) # generator 1 = strida 50%
bus.write_byte_data(addr,0x06,0x8C) # ctvrta LED na generator 0 a druha LED na generator 1
if (funkce == 10): # zrychlovani blikani zelene LED
bus.write_byte_data(addr,0x02,0xFF) # generator 0 = frekvence asi 0.6Hz
bus.write_byte_data(addr,0x03,0x80) # generator 0 = strida 50%
bus.write_byte_data(addr,0x06,0x08) # druha LED na generator 0
for i in range(255,0,-1):
bus.write_byte_data(addr,0x02,i) # zmena frekvence generatoru 0
time.sleep(0.05)
time.sleep(1)
bus.write_byte_data(addr,0x06,0x00) # nakonec LEDku zhasnout
if (funkce == 11): # kratke impulzy zlute LED
bus.write_byte_data(addr,0x04,0x97) # generator 1 = frekvence 1Hz
bus.write_byte_data(addr,0x05,0x05) # generator 1 = strida 2%
bus.write_byte_data(addr,0x06,0xC0) # ctvrta LED na generator 1
if (funkce == 12): # kratke zhasinaci impulzy zlute LED
bus.write_byte_data(addr,0x04,0x97) # generator 1 = frekvence 1Hz
bus.write_byte_data(addr,0x05,0xF2) # generator 1 = strida 95%
bus.write_byte_data(addr,0x06,0xC0) # ctvrta LED na generator 1
if (funkce == 13): # postupne rozsveceni a zhasinani modre LED
bus.write_byte_data(addr,0x02,0x00) # generator 0 = frekvence 152Hz
bus.write_byte_data(addr,0x03,0x00) # generator 0 = strida 0% (zhasnuto)
bus.write_byte_data(addr,0x06,0x20) # treti LED na generator 0
for i in range(0,256,4): # rozsvecovani
bus.write_byte_data(addr,0x03,i) # zmena stridy generatoru 0
time.sleep(0.1)
time.sleep(1)
for i in range(255,0,-4): # zhasinani
bus.write_byte_data(addr,0x03,i) # zmena stridy generatoru 0
time.sleep(0.1)
time.sleep(1)
bus.write_byte_data(addr,0x06,0x00) # nakonec LEDku zhasnout uplne
if (funkce == 14): # postupny barevny prechod zelena -> cervena a zpet
bus.write_byte_data(addr,0x02,0x00) # generator 0 = frekvence 152Hz
bus.write_byte_data(addr,0x03,0xFF) # generator 0 = strida 100% (rozsviceno)
bus.write_byte_data(addr,0x04,0x00) # generator 1 = frekvence 152Hz
bus.write_byte_data(addr,0x05,0x00) # generator 1 = strida 0% (zhasnuto)
bus.write_byte_data(addr,0x06,0x0B) # druha LED na generator 0 a prvni LED na generator 1
for i in range(0,256,2): # zelena -> cervena
bus.write_byte_data(addr,0x03,255-i) # zmena stridy generatoru 0
bus.write_byte_data(addr,0x05,i) # zmena stridy generatoru 1
time.sleep(0.05)
time.sleep(5)
for i in range(255,0,-2): # cervena -> zelena
bus.write_byte_data(addr,0x03,255-i) # zmena stridy generatoru 0
bus.write_byte_data(addr,0x05,i) # zmena stridy generatoru 1
time.sleep(0.05)
time.sleep(5)
bus.write_byte_data(addr,0x06,0x00) # nakonec obe LEDky zhasnout
# start programu
bus = smbus.SMBus(1) # novejsi varianta RasPi (512MB)
#bus = smbus.SMBus(0) # starsi varianta RasPi (256MB)
addr=0x60 # nastavená adresa pomoci adresovacich vstupu
# definice polozek v menu (textovy popis funkci)
textfunkce={}
textfunkce[1] = "rozsvitit prvni LEDku (cervenou)"
textfunkce[2] = "rozsvitit druhou LEDku (zelenou)"
textfunkce[3] = "rozsvitit treti LEDku (modrou)"
textfunkce[4] = "rozsvitit ctvrtou LEDku (zlutou)"
textfunkce[5] = "zhasnout vsechny LEDky"
textfunkce[6] = "rozsvitit vsechny LEDky"
textfunkce[7] = "pomalu rozblikat zelenou LED"
textfunkce[8] = "rychle rozblikat zlutou LED"
textfunkce[9] = "rychle blikat zelenou LED a zaroven pomalu blikat zlutou LED"
textfunkce[10] = "zrychlovani blikani zelene LED"
textfunkce[11] = "kratke impulzy zlute LED"
textfunkce[12] = "kratke zhasinaci impulzy zlute LED"
textfunkce[13] = "postupne rozsveceni a zhasinani modre LED"
textfunkce[14] = "postupny barevny prechod zelena -> cervena a zpet"
bus.write_byte_data(addr,0x06,0x00) # zacina se se zhasnutymi LEDkami
funkce=1
print textfunkce[funkce]
minulaklavesa = 0 # osetreni klaves - dalsi polozka v menu lze vybrat az po uvolneni klavesy
while True:
vstupy = bus.read_byte_data(0x60,0x01) # cteni stavu dvou tlacitek na vyvodech LED14 a LED15
if ((vstupy & 0x80) == 0 and minulaklavesa == 0): # prepinani na dalsi polozku v menu
minulaklavesa = 1
funkce = funkce + 1
if (funkce > 14): funkce = 1
print textfunkce[funkce]
if ((vstupy & 0x40) == 0 and minulaklavesa == 0): # spousteni vybrane funkce
minulaklavesa = 1
spustfunkci(funkce)
if ((vstupy & 0xC0) == 192): # dalsi funkce lze vybrat az po uvolneni obou tlacitek
minulaklavesa = 0
time.sleep(0.1)
|