Incompatibilité entre softwareSerial et <Adafruit_SSD1306.h>

Bonjour à toussss
je développe un soft sur UNO utilisant
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
pour un afficheur oled de .096"
et
#include <SoftwareSerial.h> pour une liaison vers un module HC12.

Tant que la liaison série soft n'est pas initialisée, la gestion de l'afficheur ne pose aucun problème.
Dés qu'elle l'est : (SoftwareSerial HC12(10, 11); // HC-12 TX Pin = 10, HC-12 RX Pin = 11)
l'afficheur ne fonctionne plus !!
Il semble donc qu'il y ait une incompatibilité entre ces 2 fonctions.
Une idée ???
Cordialement
Johann

Bonjour et bienvenue,

Merci de prendre quelques minutes pour lire "Les bonnes pratiques du forum francophone" et les appliquer.


On va supposer que c'est un afficheur 128 x 64 (celui que l'on rencontre le plus souvent) les librairies Adafruit_SSD1306.h + Adafruit_GFX.h utilise déjà un peu plus de la moitié de la RAM de la UNO.
Donc, si on ajoute les variables que tu utilises dans ton code plus le buffer de réception de SoftwareSerial il est possible que tu sois à cours de mémoire.

merci pour l'info
le programme fonctionne effectivement sur une mega 2650..
Dommage, car cette carte est trop grosse pour mon projet.
encore merci
Johann

| fdufnews Leader
October 7 |

  • | - |

Bonjour et bienvenue,

Merci de prendre quelques minutes pour lire "Les bonnes pratiques du forum francophone" et les appliquer.

Il existe des 2560 mini
https://fr.aliexpress.com/w/wholesale-mega2560-pro-mini.html?spm=a2g0o.productlist.search.0

Tu as autrement la possibilité de passer sur un ESP32 ou une Raspberry Pi Pico. Ces 2 cartes plus puissantes mais pas plus chères proposant en plus 2 ports série matériels

bonjour et merci pour l'info.
une petite question
J'utilise Vs code pour programmer les cartes Arduino (ça me convient bien), et comme je sui un grand débutant, y a il des sites CLAIR ET COMPRÉHENSIBLES qui expliquent comment incorporer le compilateur pour les cartes ESP32. Je suis un peu perdu là
d'avance merci
Johann

Quand tu crées un nouveau projet dans platformIO, il te suffit de sélectionner la bonne carte. Il y a un sacré paquet de disponibles, mais si tapes ESP32-C3 par exemple, la liste est plus courte.
La chaine de compilation pour la carte sélectionnée sera automatiquement créée ainsi que le fichier platformio.ini.

C'est dans ce fichier qu'il faut préciser le débit pour le moniteur de platformio.
Tu ajoutes la ligne :
monitor_speed = 115200

Voila ce que j'ai avec un ESP32-C3, carte super-mini où seul l'USB natif est disponible.
Si tu as une carte avec un CH340 il n'y a que la ligne moniteur à ajouter.

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
;  
; Lignes à ajouter au fichier automatique
;
monitor_speed = 115200

build_flags = 
	-D ARDUINO_USB_MODE=1
	-D ARDUINO_USB_CDC_ON_BOOT=1
	;-v  ; mode verbose très bavard, trop bavard

Pour mettre un texte en remarque, il faut qu'il commence avec un point virgule.

Pour les bibliothèques, c'est aussi très simple.
Dans la fenêtre d'accueil PlatformIO, tu cliques sur "Library" et tu choisis une librairy non en français une bibliothèque.

Une fois une bibliothèque sélectionnée, il te sera demandé pour quel projet la bibliothèque est destinée.
Avec PIO les bibliothèques ne sont pas globales, mais liées à un projet bien précis.
C'est des soucis en moins par rapport à l'IDE arduino où elles sont globales.

Quand tu auras associé la bibliothèque à un projet, le fichier platformio.ini dudit projet sera automatiquement mis à jour.
Exemple :
Les lignes "lib_debs =" ont été automatiquement ajoutée.

[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
monitor_speed = 115200
build_flags = 
	-D ARDUINO_USB_MODE=1
	-D ARDUINO_USB_CDC_ON_BOOT=1
lib_deps = 
	adafruit/Adafruit SSD1306@^2.5.13
	adafruit/Adafruit GFX Library@^1.11.11
	bblanchon/ArduinoJson@^7.4.2
	diyables/DIYables TFT Round@^1.0.1

Mieux encore : si tu connais les bibliothèques et que tu veux les utiliser dans un autre projet, il est inutile de refaire la procédure de sélection et d'affectation.
Tu copies les lignes lib_deps qui t'intéressent et tu les colles dans le platformio.ini du nouveau projet.
L'IDE comprendra qu'elle doit installer les fichiers dans le projet.

super merci je vais essayer
mais c'est un nouveau langage que je dois apprendre : dur
amicalement
Johann

| 68tjs
October 9 |

  • | - |

Quand tu crées un nouveau projet dans platformIO, il te suffit de sélectionner la bonne carte. Il y a un sacré paquet de disponibles, mais si tapes ESP32-C3 par exemple, la liste est plus courte.
La chaine de compilation pour la carte sélectionnée sera automatiquement créée ainsi que le fichier platformio.ini.

C'est dans ce fichier qu'il faut préciser le débit pour le moniteur de platformio.
Tu ajoutes la ligne :
monitor_speed = 115200

Voila ce que j'ai avec un ESP32-C3, carte super-mini où seul l'USB natif est disponible.
Si tu as une carte avec un CH340 il n'y a que la ligne moniteur à ajouter.

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
;  
; Lignes à ajouter au fichier automatique
;
monitor_speed = 115200

build_flags = 
	-D ARDUINO_USB_MODE=1
	-D ARDUINO_USB_CDC_ON_BOOT=1
	;-v  ; mode verbose très bavard, trop bavard

Pour mettre un texte en remarque, il faut qu'il commence avec un point virgule.

Pour les bibliothèques, c'est aussi très simple.
Dans la fenêtre d'accueil PlatformIO, tu cliques sur "Library" et tu choisis une librairy non en français une bibliothèque.

Une fois une bibliothèque sélectionnée, il te sera demandé pour quel projet la bibliothèque est destinée.
Avec PIO les bibliothèques ne sont pas globales, mais liées à un projet bien précis.
C'est des soucis en moins par rapport à l'IDE arduino où elles sont globales.

Quand tu auras associé la bibliothèque à un projet, le fichier platformio.ini dudit projet sera automatiquement mis à jour.
Exemple :
Les lignes "lib_debs =" ont été automatiquement ajoutée.

[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
monitor_speed = 115200
build_flags = 
	-D ARDUINO_USB_MODE=1
	-D ARDUINO_USB_CDC_ON_BOOT=1
lib_deps = 
	adafruit/Adafruit SSD1306@^2.5.13
	adafruit/Adafruit GFX Library@^1.11.11
	bblanchon/ArduinoJson@^7.4.2
	diyables/DIYables TFT Round@^1.0.1

Mieux encore : si tu connais les bibliothèques et que tu veux les utiliser dans un autre projet, il est inutile de refaire la procédure de sélection et d'affectation.
Tu copies les lignes lib_deps qui t'intéressent et tu les colles dans le platformio.ini du nouveau projet.
L'IDE comprendra qu'elle doit installer les fichiers dans le projet.

Pas tout a fait un nouveau langage de programmation.
C’est des réglages a transmettre a l’IDE.
C’est le fonctionnement de cette IDE.

Pour configurer l’l’IDE Arduino tu cliques, tu cliques a chaque nouveau projet, tu n’as pas accès au fichier de configuration créé, ou du moins je n’ai pas connaissance qu’on puisse y avoir accès.

Avec PIO ce fichier un fichier texte peut etre crée dans un cliquodrone ou officiellement édité manuellement.