Bonjour à tous,
j'ai acheté un lot de 2 modules ESP32 LORA Oled pour faire des tests de portée
je suis sous Win 10 et IDE 1.8.5
j'ai une erreur de compilation sur les exemples fournis que je n'arrive pas a comprendre
le code récepteur
/*
This is a simple example show the LoRa recived data in OLED.
The onboard OLED display is SSD1306 driver and I2C interface. In order to make the
OLED correctly operation, you should output a high-low-high(1-0-1) signal by soft-
ware to OLED's reset pin, the low-level signal at least 5ms.
OLED pins to ESP32 GPIOs via this connecthin:
OLED_SDA -- GPIO4
OLED_SCL -- GPIO15
OLED_RST -- GPIO16
by Aaron.Lee from HelTec AutoMation, ChengDu, China
www.heltec.cn
this project also realess in GitHub:
https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series
*/
#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>
#include "SSD1306.h"
#include "images.h"
// Pin definetion of WIFI LoRa 32
// HelTec AutoMation 2017 support@heltec.cn
#define SCK 5 // GPIO5 -- SX127x's SCK
#define MISO 19 // GPIO19 -- SX127x's MISO
#define MOSI 27 // GPIO27 -- SX127x's MOSI
#define SS 18 // GPIO18 -- SX127x's CS
#define RST 14 // GPIO14 -- SX127x's RESET
#define DI00 26 // GPIO26 -- SX127x's IRQ(Interrupt Request)
#define BAND 433E6 //you can set band here directly,e.g. 868E6,915E6
#define PABOOST true
SSD1306 display(0x3c, 4, 15);
String rssi = "RSSI --";
String packSize = "--";
String packet ;
void logo(){
display.clear();
display.drawXbm(0,5,logo_width,logo_height,logo_bits);
display.display();
}
void loraData(){
display.clear();
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_10);
display.drawString(0 , 15 , "Received "+ packSize + " bytes");
display.drawStringMaxWidth(0 , 26 , 128, packet);
display.drawString(0, 0, rssi);
display.display();
}
void cbk(int packetSize) {
packet ="";
packSize = String(packetSize,DEC);
for (int i = 0; i < packetSize; i++) { packet += (char) LoRa.read(); }
rssi = "RSSI " + String(LoRa.packetRssi(), DEC) ;
loraData();
}
void setup() {
pinMode(16,OUTPUT);
digitalWrite(16, LOW); // set GPIO16 low to reset OLED
delay(50);
digitalWrite(16, HIGH); // while OLED is running, must set GPIO16 in high、
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
logo();
delay(1500);
display.clear();
SPI.begin(SCK,MISO,MOSI,SS);
LoRa.setPins(SS,RST,DI00);
if (!LoRa.begin(BAND,PABOOST)) {
display.drawString(0, 0, "Starting LoRa failed!");
display.display();
while (1);
}
display.drawString(0, 0, "LoRa Initial success!");
display.drawString(0, 10, "Wait for incomm data...");
display.display();
delay(1000);
//LoRa.onReceive(cbk);
LoRa.receive();
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) { cbk(packetSize); }
delay(10);
}
le images.h débute ainsi
#define logo_width 128
#define logo_height 53
static char logo_bits[] = {
0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ....
}
la compil retourne l'erreur : invalid conversion from 'char*' to 'const uint8_t*
r:\Documents\Arduino2\LORArecept\LORArecept.ino: In function 'void logo()':
LORArecept:45: error: invalid conversion from 'char*' to 'const uint8_t* {aka const unsigned char*}' [-fpermissive]
display.drawXbm(0,5,logo_width,logo_height,logo_bits);
^
In file included from D:\Program Files (x86)\Arduino185\hardware\heltec\esp32\libraries\OLED\src/SSD1306Wire.h:34:0,
from sketch\SSD1306.h:33,
from r:\Documents\Arduino2\LORArecept\LORArecept.ino:23:
D:\Program Files (x86)\Arduino185\hardware\heltec\esp32\libraries\OLED\src/OLEDDisplay.h:175:10: note: initializing argument 5 of 'void OLEDDisplay::drawXbm(int16_t, int16_t, int16_t, int16_t, const uint8_t*)'
void drawXbm(int16_t x, int16_t y, int16_t width, int16_t height, const uint8_t *xbm);
^
exit status 1
invalid conversion from 'char*' to 'const uint8_t* {aka const unsigned char*}' [-fpermissive]
logo_bits est donc un pointeur sur le tableau de char et la fonction drawXbm semble attendre un pointeur en cinquième paramètre mais ça bug ...