Code RASPBERRY PI :
# Modules
from goto import *
from datetime import datetime
import time
import [Link] as GPIO
[Link]([Link])
now = [Link]()
dt_string = [Link]("%d/%m/%Y %H:%M:%S")
EN1 = 13
EN2 = 6
EN3 = 5
OUT1 = 17
OUT2 = 27
OUT3 = 22
Buzz = 21
Butt = 4
Add1 = 23
Add2 = 20
Add3 = 26
Add4 = 19
Add5 = 24
Add6 = 25
Add7 = 12
Add8 = 16
[Link](EN1, [Link])
[Link](EN2, [Link])
[Link](EN3, [Link])
[Link](OUT1, [Link])
[Link](OUT2, [Link])
[Link](OUT3, [Link])
[Link](Buzz, [Link])
[Link](Butt, [Link])
[Link](Add1, [Link])
[Link](Add2, [Link])
[Link](Add3, [Link])
[Link](Add4, [Link])
[Link](Add5, [Link])
[Link](Add6, [Link])
[Link](Add7, [Link])
[Link](Add8, [Link])
now = [Link]()
dt_string = [Link]("%d/%m/%Y %H:%M:%S")
#print("date and time =", dt_string)
a1 = 0
a2 = 0
a3 = 0
a4 = 0
a5 = 0
a6 = 0
a7 = 0
a8 = 0
c=0
duree = 0.2
mess = 0
messC = 0
adC = 0
def BitRead(ad):
Com_Add = format(ad, "b")
l=0
l = 4-len(Com_Add)
#print("Init ",Com_Add)
b =""
for i in range(l):
b = b + "0"
Com_Add = b+Com_Add
return Com_Add
while True:
[Link](0.01)
if [Link](Butt)==0:
#print("Test en cours ... ")
message = ""
c=0
[Link](EN1,0)
[Link](EN2,0)
[Link](EN3,0)
[Link](0.2)
for ad in range(16):
if ad>=2:
[Link](EN3,1)
a1 = int(BitRead(ad)[3])
a2 = int(BitRead(ad)[2])
a3 = int(BitRead(ad)[1])
a4 = int(BitRead(ad)[0])
a5 = int(BitRead(ad)[3])
a6 = int(BitRead(ad)[2])
a7 = int(BitRead(ad)[1])
a8 = int(BitRead(ad)[0])
L = [a4,a3,a2,a1]
M = [a8,a7,a6,a5]
# Adjust Left Address bits
[Link](Add1,a1)
[Link](Add2,a2)
[Link](Add3,a3)
[Link](Add4,a4)
# Adjust Right Address bits
[Link](Add5,a5)
[Link](Add6,a6)
[Link](Add7,a7)
[Link](Add8,a8)
[Link](0.2)
if [Link](OUT1)==1:
mess = ad + 1
#print("Bon pour ",int(mess))
[Link](duree)
else:
if [Link](OUT1)==0:
c=c+1
mess = ad + 1
#print("Le fil ",int(mess)," est discontinue")
[Link](Buzz,1)
[Link](duree)
if [Link](OUT2)==1:
mess = ad + 17
#print("Bon pour ",int(mess))
[Link](duree)
else:
if [Link](OUT2)==0:
c=c+1
mess = ad + 17
#print("Le fil ",int(mess)," est discontinue")
[Link](Buzz,1)
[Link](duree)
[Link](0.2)
if [Link](OUT3)==1:
mess = ad + 33
if [Link](EN3)==0:
#print("Bon pour ",int(mess))
[Link](duree)
else:
if [Link](OUT3)==0:
mess = ad + 33
if [Link](EN3)==0:
c=c+1
#print("Le fil ",int(mess)," est discontinue")
[Link](Buzz,1)
[Link](duree)
adC = ad + 1
a5 = int(BitRead(adC)[3])
a6 = int(BitRead(adC)[2])
a7 = int(BitRead(adC)[1])
a8 = int(BitRead(adC)[0])
# Adjust Right Address bits
[Link](Add5,a5)
[Link](Add6,a6)
[Link](Add7,a7)
[Link](Add8,a8)
[Link](0.2)
if [Link](OUT1)==1:
if ad < 15:
c=c+1
mess = ad + 1
messC = mess + 1
#print("Les fils suivants sont en CC ",mess," et ",messC)
[Link](Buzz,1)
[Link](duree)
if [Link](OUT2)==1:
if ad < 15:
c=c+1
mess = ad +17
messC = mess + 1
#print("Les fils suivants sont en CC ",mess," et ",messC)
[Link](Buzz,1)
[Link](duree)
if [Link](OUT3)==1:
if ad < 2:
c=c+1
mess = ad +33
messC = mess + 1
#print("Les fils suivants sont en CC ",mess," et ",messC)
[Link](Buzz,1)
[Link](duree)
# Adjust Right Address bits
[Link](Add5,0)
[Link](Add6,0)
[Link](Add7,0)
[Link](Add8,0)
[Link](0.2)
if [Link](OUT2)==1:
if ad == 15:
c=c+1
mess = ad + 1
messC = mess + 1
#print("Les fils suivants sont en CC ",mess," et ",messC)
[Link](Buzz,1)
[Link](duree)
if [Link](OUT3)==1:
if ad == 15:
c=c+1
mess = ad + 17
messC = mess + 1
#print("Les fils suivants sont en CC ",mess," et ",messC)
[Link](Buzz,1)
[Link](duree)
if c == 0:
print(" Faisceaux OK ")
else:
print(" Faisceaux BAD ")
[Link](2)
[Link](Buzz,0)
else:
[Link](EN1,1)
[Link](EN2,1)
[Link](EN3,1)
[Link](Buzz,0)