//!/usr/bin/python
//Dodavanje potrebnih biblioteka
import RPi.GPIO as GPIO
import time
import sqlite3
//Koristiti BCM numeraciju pinova
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
//Definisanje funkcije za citanje vrednosti prvog senzora
def parking1():
//Definisanje pinova koji se koriste
GPIO_TRIGGER = 27
GPIO_ECHO = 22
print Ultrasonic Measurement
//Podeavanje funkcije pinova
GPIO.setup(GPIO_TRIGGER,GPIO.OUT) //Trigger
GPIO.setup(GPIO_ECHO,GPIO.IN) //Echo
//Postavljanje triggera na False (Low)
GPIO.output(GPIO_TRIGGER, False)
//Dozvoliti modelu da se prilagodi
time.sleep(0.5)
//Slanje kratkog signala triggeru
GPIO.output(GPIO_TRIGGER, True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
start = time.time()
while GPIO.input(GPIO_ECHO)==0:
start = time.time()
while GPIO.input(GPIO_ECHO)==1:
stop = time.time()
//Izracunavanje proteklog vremena od trenutka kada je signal poslat
elapsed = stop-start
//Ukupna distanca je jednaka proizvodu vremena i brzine zvuka
distance = elapsed * 34300
//Distanca je jednaka polovini ukupne distance koju je preao signal
distance = distance / 2
if distance > 30:
stanje = 0
else:
stanje = 1
print Distance : %.1f % stanje
return stanje
//Reset GPIO podeavanja
GPIO.cleanup()
def parking2():
//Definisati pinove koji se koriste
GPIO_TRIGGER = 23
GPIO_ECHO = 24
print Ultrasonic Measurement
//Podesiti funkcije pinova
GPIO.setup(GPIO_TRIGGER,GPIO.O?T) //Trigger
GPIO.setup(GPIO_ECHO,GPIO.IN) //Echo
//Postavljanje triggera na False (Low)
GPIO.output(GPIO_TRIGGER, False)
//Dozvoliti modelu da se prilagodi
time.sleep(0.5)
//Poslati kratki signal triggeru
GPIO.output(GPIO_TRIGGER, True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
start = time.time()
while GPIO.input(GPIO_ECHO)==0:
start = time.time()
while GPIO.input(GPIO_ECHO)==1:
stop = time.time()
//Izracunati proteklo vreme od trenutka kada je signal poslat
elapsed = stop-start
//Ukupna distanca je jednaka proizvodu vremena i brzine zvuka
distance = elapsed * 34300
//Distanca je jednaka polovini ukupne distance koju je preao signal
distance = distance / 2
if distance > 30:
stanje = 0
else:
stanje = 1
print Distance : %.1f % stanje
return stanje
//Reset GPIO podeavanja
GPIO.cleanup()
//Deo vezan za displej
//Definisanje pinova koji se koriste
//Svaki pin predstavlja segment ekrana
segments = (21,20,16,12,26,19,13)
//Podeavanje funkcije za svaki pin
for segment in segments:
GPIO.setup(segment, GPIO.O?T)
GPIO.output(segment, 0)
//Funkcija koja prikazuje odredeni broj na ekranu
//U zavisnosti od ulaznog parametra b se prikazuje odredeni broj
def upali(b):
//Poniti sve segmente
for segment in segments: GPIO.output(segment, 0)
//Definisanje sektora za 0
if (b == 0): broj=(21,20,16,26,19,13)
//Definisanje sektora za 1
if(b==1): broj=(16,26)
//Definisanje sektora za 2
if(b==2): broj=(21,12,26,20,13)
//Prikazi broj
for br in broj: GPIO.output(br, 1)
//Ugasi sve pinove
def ugasi():
for segment in segments:
GPIO.setup(segment, GPIO.OUT)
GPIO.output(segment, 0)
//Upisivanje u bazu
def upisiUBazu(s1,s2):
dbname=/var/www/parking.db
conn=sqlite3.connect(dbname)
curs=conn.cursor()
curs.execute(UPDATE parking SET stanje= {0} WHERE id = 1.format(s1))
curs.execute(UPDATE parking SET stanje= {0} WHERE id = 2.format(s2))
//Izvravanje izmena
conn.commit()
conn.close()
def main():
//Stanje mesta 1
stanje1 = parking1()
//Stanje mesta 2
stanje2 = parking2()
//Broj preostalih mesta (Ukupno - zauzeto)
stanje3 = 2-stanje1-stanje2
upali(stanje3)
upisiUBazu(stanje1, stanje2)
print Upisano
if __name__==__main__: main()