Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
i2creset2b.py 1.32 KiB
#from gpiozero import LED,Button
import RPi.GPIO as GPIO
SCL=3
SDA=2
Addr=0x70 #SWITCH
#Addr=0x20 #io expander
Value=0
data=[(Addr<<1)+0,Value] #Write
#data=[Addr<<1+1] #Read

GPIO.setmode(GPIO.BCM)

GPIO.setup(SDA,GPIO.IN)
GPIO.setup(SCL,GPIO.IN)
print("SDA high",GPIO.input(SDA)==1)
print("SCL high",GPIO.input(SCL)==1)

GPIO.setup(SDA,GPIO.OUT)
GPIO.setup(SCL,GPIO.OUT)

GPIO.output(SDA,1)
GPIO.output(SCL,1)

#Start
#GPIO.output(SDA,0)
#GPIO.setup(SDA,GPIO.OUT)
GPIO.output(SDA,0)
GPIO.output(SCL,0)

for b in data:
 ba="{0:{fill}8b}".format(b,fill='0')
 print("Sending",ba)
 for bit in ba:
#   if int(bit)==0: 
#      GPIO.setup(SDA,GPIO.OUT)
#      GPIO.output(SDA,0)
#   else:
#      GPIO.setup(SDA,GPIO.IN)
   GPIO.output(SDA,int(bit))
   GPIO.output(SCL,1)
   GPIO.output(SCL,0)


 GPIO.setup(SDA,GPIO.IN)
# GPIO.output(SDA,0)
# print("Ack",GPIO.input(SDA)==0)
# GPIO.setup(SDA,GPIO.OUT)

 #ack clock
 GPIO.output(SCL,1)
# GPIO.setup(SDA,GPIO.IN)
 print("Ack",GPIO.input(SDA)==0)
 GPIO.output(SCL,0)
 print("Ack released",GPIO.input(SDA)==1)
 GPIO.setup(SDA,GPIO.OUT)

#Stop
#GPIO.output(SDA,0)
#GPIO.setup(SDA,GPIO.OUT)
GPIO.output(SDA,0)
GPIO.output(SCL,1)
GPIO.output(SDA,1)
#GPIO.setup(SDA,GPIO.IN)

GPIO.setup(SDA,GPIO.IN)
GPIO.setup(SCL,GPIO.IN)
print("SDA high",GPIO.input(SDA)==1)
print("SCL high",GPIO.input(SCL)==1)
GPIO.cleanup()