Inspiracją do napisania tego posta jest to, że powstały DEMO kody do obsługi tych czujników. Jednak, jak w wielu układów I2C, możliwa jest zmiana adresu układu poprzez podłączenie jakiejś wybranej nóżki układu do masy bądź "plusa".
Kiedy adres się różni to żaden przykładowy kod nie zadziała.
Poniżej adres układu BME280 w odsłonie Adafruit.
Dlatego warto sprawdzić pod jakim adresem zgłasza się układ który chcemy uruchomić.
Poniżej zamieszczę kod "skanera adresów na szynie I2C", ale proszę mieć na uwadze, ze ten jest na TWI czyli sprzętowe I2C które w różnych procesorach jest na innych nóżkach.
Dla Mega16, Mega32, Mega644 itd, itp 40 nóżkowych to są piny PC0 i PC1 (SCL i SCK) a w 28 nóżkowych to już PC4 i PC5.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m32def.dat"
- $crystal = 11059200
- $hwstack = 32
- $swstack = 32
- $framesize = 128
- $baud = 19200
- Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 'UPT M16
- Config Lcd = 20x4
- Cursor Off , Noblink
- Cls
- Waitms 500
- Config Portc.6 = Input : Set Portc.6 : Switch Alias Pinc.6
- $lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI
- Config Scl = Portc.0 ' we need to provide the SCL pin name
- Config Sda = Portc.1 ' we need to provide the SDA pin name
- I2cinit ' we need to set the pins in the proper state
- Config Twi = 100000 ' wanted clock frequency
- Dim B As Byte , Lock As Byte
- Locate 1 , 1 : Lcd "Scanning.."
- Print "Scanning"
- For B = 0 To 254 Step 2 'for all odd addresses
- I2cstart 'send start
- I2cwbyte B 'send address
- If Err = 0 Then 'we got an ack
- Locate 2 , 1 : Lcd "Slv.at: &H" ; Hex(b) ; " (" ; B ; ")"
- Print "Slv.at: &H" ; Hex(b) ; " (" ; B ; ")"
- Locate 3 , 1 : Lcd " Push switch..."
- Lock = 1
- Do
- Debounce Switch , 0 , Sw_sub , Sub
- Loop Until Lock = 0
- End If
- I2cstop 'free bus
- Next
- Thirdline : Lcd Spc(20)
- Fourthline : Lcd "Koniec"
- End
- Sw_sub:
- Lock = 0
- Thirdline : Lcd Spc(20)
- Return
- 'Found:
- 'DAC at &HC0 (192)
- 'ALS at &H06 (006)
- ' at &HAC (172)
- 'EEP at &HAE (174)
- 'RTC at &HD0 (208)
- 'BME at &HEC (236)
- 'BMP at &HEE (238)

Dla tych którzy zauważyli, tak mieszkam trochę wyżej nad poziomem morza
