CODE: xxxx.bas
' t_pins; tests pins D4,D2,D1,D5,D6
D0=16:D1=5:D2=4:D3=0:D4=2:D5=14:D6=12:D7=13:D8=15:D9=3:D10=1
I2C.SETUP D2,D1 ' 4, 5 ' set I2C port on pins 4-sda and 5-scl--esp8266
OLED.INIT 0 ' normal orientation
OLED.CLS ' clear the screen
OLED.FONT 3 '1=10pixels,2-16,3=24
OLED.COLOR 1
'DIM tempPin(5) = D4,D2,D1,D5,D6
DIM tempPin(5) = D4,D3,D8,D5,D6
wlog tempr$(d7,1)
for i=0 to 4
pin.mode tempPin(i), output
next i
SERVO.SETUP 1, D0 ' attach the servo #1 to pin GPIO12
do
for i=0 to 180
servo 1,i
pause 10
next i
for i=0 to 180
servo 1,180-i
pause 10
next i
servo 1,90
' wlog tempPin(0);" ";
for i=0 to 4
print tempPin(i);" ";
pin(tempPin(i))=1
pause 1000
pin(tempPin(i))=0
pause 1000
next i
j = 0
for i = 1 to 63
pwm(D5)=j
j = j + 16
pause 20
next i
for i = 1 to 63
pwm(D5)=j
j = j - 16
pause 20
next i
pin(D5)=0
pause 1000
gosub mcp23017
loop
mcp23017:
' MCP23017_test
' I2C.SETUP 4, 5 ' set I2C port on pins 4-sda and 5-scl--esp8266
'I2C.SETUP 21, 22 ' set I2C port on pins 21-sda and 22-scl--esp32
OLED.CLS ' clear the screen
OLED.PRINT 40,10, mid$(tempr$(d7,1),1,4)+"C"
'MCP23017 = &h20 ' assumes A2, A1, A0 to GND
MCP23017 = &h21 ' assumes A2, A1 to GND, A0 high
'MCP23017 internal registers
IODIRA = 0: IODIRB = 1: IOCONA = 10: OLATA = 20: OLATB = 21
i2c.WriteRegByte MCP23017,IODIRA,0 ' set direction to output
i2c.WriteRegByte MCP23017,IODIRB,0 ' set direction to output
' do
gosub mcp17
pause 1000
' loop
return
mcp17:
print "write to mcp23017, 0x";str$(MCP23017, "%02x", 1)
wlog "write to mcp23017, 0x";str$(MCP23017, "%02x", 1)
for i = 1 to 6
i2c.WriteRegByte MCP23017,OLATA,&HAA ' &b10101010
i2c.WriteRegByte MCP23017,OLATB,&HAA ' &b10101010
PAUSE 1000
I2C.WriteRegByte MCP23017,OLATA,&H55 '&b01010101 '
I2C.WriteRegByte MCP23017,OLATB,&H55 '&b10101010 '
PAUSE 1000
Next i
I2C.WriteRegByte MCP23017,OLATA,0 ' turn all off
I2C.WriteRegByte MCP23017,OLATB,0 ' turn all off
return