De gemakkelijkste manier om de I²C bus te testen is het gebruik van een OLED display, daar heb ik al wat ervaring mee.
Het I²C adres wist ik nog ( 0x3C) en de SDA en SCL zijn gemakkelijk te vinden op de OLED , maar waar zitten die op het LOLIN S2 bordje?
Internet gaf uitsluitels ( na toch wat zoeken) en het bleek dat SDA dezelfde pin is als MOSI en de CLK blijft de CLK.
Samengevat :
SDA : pin 11
CLK : pin 7
Ik gebruikte de lib's van Arduino om deze OLED aan te sturen maar dit werkte niet.
#include <Wire.h> // libraries voor oled display
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Het vermoeden was dat de lib default de standaard pins gebruikte voor
I²C voor de Adafruit bordjes.
Door in de Wire.h te snuisteren zag ik dat de mogelijk bestond om de
class te "overriden" ( = overloading) met de pins die ik nodig had
Snippet uit de lib:
public:
TwoWire(uint8_t bus_num);
~TwoWire();
//call setPins() first, so that begin() can be called without
TwoWire(uint8_t bus_num);
~TwoWire();
//call setPins() first, so that begin() can be called without
arguments from libraries
bool setPins(int sda, int scl);
Daar heb ik dan ook gebruik van gemaakt in mijne soft :
snippet :
Wire.setPins(11, 7); //override default pins met S2 pins voor SDA en CLK
Resultaat ziet U hieronder , het werkt!
Geen opmerkingen:
Een reactie posten