Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem with this lib and LoRa #229

Open
Baptou88 opened this issue Dec 1, 2021 · 0 comments
Open

Problem with this lib and LoRa #229

Baptou88 opened this issue Dec 1, 2021 · 0 comments

Comments

@Baptou88
Copy link

Baptou88 commented Dec 1, 2021

Hello Everyone !

I just noticed a problem with this library and some libraries for the use of an ssd1306 and I would like to understand where this problem comes from and how it is possible to fix it

here is my situation:

  • I use an ESP32 with OLED 0.96" by Heltec (this product
  • I use this lib to use LoRa functionality (I'm not use the official lib because they don't implement the onTxDone function)

At this point all is Ok my project work correctly

However when I want to use the screen through these libs (Adafruit_SSD1306 or this one ) I'have an error on The Serial Monitor [E][esp32-hal-i2c.c:1434] i2cCheckLineState(): Bus Invalid State, TwoWire() Can't init sda=1, scl=1 which occurs just after passing the function 'onTxDone'


#include <Arduino.h>
 #include <SPI.h>              // include libraries
 #include <LoRa.h>
 // #include <Adafruit_GFX.h>
// #include <Adafruit_SSD1306.h>
#include <SSD1306Wire.h>
#include <Wire.h>

const long frequency = 868E6;  // LoRa Frequency
const int csPin = 10;          // LoRa radio chip select
const int resetPin = 9;        // LoRa radio reset
const int irqPin = 2;          // change for your board; must be a hardware interrupt pin
#define SCREEN_ADDRESS 0x3C
//Adafruit_SSD1306 display(128  , 64, &Wire1, RST_OLED);
//Adafruit_SSD1306 display(4);
SSD1306Wire display(0x3c,SDA_OLED,SCL_OLED,GEOMETRY_128_64);
void onReceive(int packetSize){
  Serial.println("I've receive a packet");
}
void onTxDone(){
  Serial.println("txDone " + String( millis()));
  LoRa.receive();
}
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
//  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { //SSD1306_EXTERNALVCC
//     Serial.println(F("SSD1306 allocation failed"));
//     for(;;); // Don't proceed, loop forever
//   }
    pinMode(16, OUTPUT);
    digitalWrite(16, HIGH);
    delay(10);
    if (!display.init())
    {
    Serial.println("Error init display");
    } 
    display.drawCircle(10,10,5);
    display.display();
    SPI.begin(SCK,MISO,MOSI,SS);
    LoRa.setPins(18,14,26);
    pinMode(25,OUTPUT);
    while (!LoRa.begin(frequency)) {
        Serial.println("Starting LoRa failed!");
        delay(500);
    }
    Serial.println("Lora ok");
    LoRa.onReceive(onReceive);
    LoRa.onTxDone(onTxDone);
    LoRa.receive();
    delay(1000);
}
void loop() {
  // put your main code here, to run repeatedly:
  // display.clearDisplay();
  // display.setCursor(10,10);
  // display.println("Bonjour ");
  // display.drawCircle(20,20,10,SSD1306_WHITE);
  static int test = 0;
  display.clear();
  if (test > 128)
  {
    test = 0;
  }
  test++;
  display.setPixel(test,10);
  display.display();
  static unsigned long lastsend =0;
  if (millis()-lastsend > 5000) //send packet every 5sec
  {
    lastsend = millis();
    LoRa.beginPacket();
    LoRa.println("bonjour");
    digitalWrite(25,HIGH);
    LoRa.endPacket(true);
    //LoRa.receive();
    Serial.println(millis());
    digitalWrite(25,LOW);
  }
}

I hope I have been understandable enough

sandeepmistry/arduino-LoRa#536 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant