Anda di halaman 1dari 3

Nama : Moch Alfani DAC

NBI : 1461800104

from threading import Thread


from multiprocessing import Pipe
import time

DataSensor=[[3000,2000,1000,750,500,300,100,50,10,5],
[3000,2000,1000,750,500,300,100,50,10,5],
[1000,800,600,500,400,300,200,100,50,5],
[1000,800,600,500,400,300,200,100,50,5],
['Merah','Kuning','Hijau']]

V=60
LebarJalan=600
LebarMobil=180
PosisiKiri=100
PosisiKanan=20
JarakDepan=3000
JarakBelakang=3000
JarakKiri=0
JarakKanan=0

def SensorDepan(koneksi):
global JarakDepan
JarakDepan=0
while JarakDepan<10:
A=DataSensor[0][JarakDepan]
koneksi.send(['Depan',A])
print("Jarak depan: ",A)

JarakDepan +=1
time.sleep(1)

def SensorBelakang(koneksi):
global JarakBelakang
JarakBelakang=0
while JarakBelakang<10:
A=DataSensor[1][JarakBelakang]
koneksi.send(['Belakang',A])
print("Jarak Belakang: ",A)
JarakBelakang +=1
time.sleep(1)

def SensorKiri(koneksi):
global JarakKiri
JarakKiri=0
while JarakKiri<10:
A=DataSensor[2][JarakKiri]
koneksi.send(['Kiri',A])
print("Jarak Kiri: ",A)
JarakKiri +=1
time.sleep(1)

def SensorKanan(koneksi):
global JarakKanan
JarakKanan=0
while JarakKanan<10:
A=DataSensor[3][JarakKanan]
koneksi.send(['Kanan',A])
print("Jarak Kanan: ",A)
JarakKanan +=1
time.sleep(1)

def Kecepatan(x):
print("Kecepatan= ",x," Km/jam")

def Injakrem(x):
global V
global JarakDepan
global JarakBelakang
V=V-x
if JarakDepan>=2:
JarakDepan-=2
if JarakBelakang<9:
JarakBelakang+=1

def InjakGas(x):
global V
global JarakDepan
global JarakBelakang
V=V+x
if JarakDepan<9:
JarakDepan+=1
if JarakBelakang>=2:
JarakBelakang-=2

def Berhenti():
global V
global JarakDepan
global JarakBelakang
while V>0:
V=V-5
time.sleep(1)
V=0
JarakDepan=0
JarakBelakang=0
time.sleep(10)
Berjalan()

def Berjalan():
global V
while V<60:
V=V+5
time.sleep(1)
V=60

def GeserKanan(x):
global JarakKiri
JarakKiri+=x
global JarakKanan
JarakKanan-=x

def GeserKiri(x):
global JarakKiri
JarakKiri-=x
global JarakKanan
JarakKanan+=x

def MasterKontrol(Koneksi):
global JarakDepan
while True:
vList=Koneksi.recv()
sensor=vList[0]
Nilai =vList[1]
Kecepatan(V)
if sensor=='Depan':
if Nilai<=30:
Berhenti()
print('Mobil berhenti')
elif Nilai<=250:
Injakrem(5)
print('Mobil Direm')
else:
print("Jarak Kedepan = ",Nilai/10," meter")
elif sensor=='Belakang':
if Nilai<=30:
InjakGas(5)
print("Mobil tambah kecepatan")
else:
print("Jarak dengan mobil belakang =", Nilai/10," meter")
elif sensor=='Kiri':
if Nilai<=100:
GeserKanan(5)
print("Geser Ke kanan")
else:
print("Jarak Kiri = ",Nilai," cm")
elif sensor=='Kanan':
if Nilai<=20:
GeserKiri(5)
print("Geser Ke Kiri")
else:
print("Jarak Kanan = ",Nilai," cm")

time.sleep(1)

if __name__=='__main__':
PipaIn,PipaOut = Pipe()
ProsesDepan=Thread(target=SensorDepan,args=(PipaIn,))
ProsesBelakang=Thread(target=SensorBelakang,args=(PipaIn,))
ProsesKiri=Thread(target=SensorKiri,args=(PipaIn,))
ProsesKanan=Thread(target=SensorKanan,args=(PipaIn,))
ProsesKontrol=Thread(target=MasterKontrol,args=(PipaOut,))

ProsesDepan.start()
ProsesBelakang.start()
ProsesKiri.start()
ProsesKanan.start()
ProsesKontrol.start()

Anda mungkin juga menyukai