#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// ======================
// Paramètrages encodeur
// =====================
#define ENCODER_CLK 2
#define ENCODER_DT 3
#define ENCODER_SW 4
int page = 0;
// ====================
// Polices d'écritures
// ====================
#include "FreeSansBold5pt7b.h"
#include "FreeSansBold8pt7b.h"
#include "FreeSansBold6pt7b.h"
#include <Fonts/Picopixel.h>
#include <Fonts/FreeSansBold9pt7b.h> // Gras (en 9, 12, 18, et 24 pts)
#include <Fonts/FreeSansBold12pt7b.h>
#include <Fonts/FreeSansBold18pt7b.h>
#include <Fonts/FreeSansBold24pt7b.h>
#include <Fonts/FreeSans9pt7b.h> // Normal (en 9, 12, 18, et 24 pts)
#include <Fonts/FreeSans12pt7b.h>
#include <Fonts/FreeSans18pt7b.h>
#include <Fonts/FreeSans24pt7b.h>
// Battery images
static const unsigned char PROGMEM image_battery_full_2_bits[] = {0x0f,0xff,0xfe,0x10,0x00,0x01,0x15,0x55,0x55,0x71,0x55,0x55,0x85,0x55,0x55,0x81,0x55,0x55,0x85,0x55,0x55,0x81,0x55,0x55,0x85,0x55,0x55,0x71,0x55,0x55,0x15,0x55,0x55,0x10,0x00,0x01,0x0f,0xff,0xfe};
String VarDatas = ""; // Variable qui contiendra la saisie après .....
String VarStock = "";
String VarIp = "";
String VarScom = "fournisseur"; // fournisseur dispo
String VarDate = "18/10" ; // date
String VarTime = "10:12" ; // heure
String Vinout = "STOCK"; // stock in
const int VarDatasLenght = 30;
void freeMemory() {
extern int __heap_start, *__brkval;
int v;
Serial.print("Memory:"); Serial.println((int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval));
}
void setup() {
// Initialize serial communication
{
Serial.begin(115200);
delay(200);
send_datas_boot();
// Initialize the display
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
Serial.println("Ready!");
}
// initialize the encoder
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
pinMode(ENCODER_SW, INPUT_PULLUP);
// Affichage d'une image au centre de l'écran
display.clearDisplay(); // Effaçage de la mémoire tampon de l'écran OLED
display.setTextSize(1); // Taille du texte
display.setTextColor(WHITE); // Couleur du texte
display.setCursor(2, 6); // Position du texte
display.setFont(&FreeSansBold6pt7b);
display.print("GESTION STOCK");
display.setCursor(37, 34); // Position du texte
display.setFont(&FreeSansBold6pt7b);
display.print("Initialisation ...");
display.setCursor(40, 54); // Position du texte
display.setFont(&FreeSansBold5pt7b);
display.print("F.Dimitri");
display.setCursor(92, 63); // Position du texte
display.setFont(&FreeSansBold5pt7b);
display.print("2024");
display.display();
delay(2000);
freeMemory();
}
void loop() {
if(page == 0) {
boot_read();
} else {
if(page == 1) {
show_page1();
read_datas();
}
}
}
void serial_wait() {
String VarDatas = Serial.readStringUntil('\n');
VarDatas.trim();
}
void read_datas() {
if (Serial.available()) {
freeMemory();
VarDatas = Serial.readStringUntil('\n');
Serial.println(VarDatas);
//VarDatas.trim();
if (VarDatas.startsWith("VarStock=")) {
VarDatas.replace("VarStock=", ""); // Supprimer "Varstock="
Serial.println(F("Commande 'VarStock' détectée. Donnée extraite :")); //
Serial.println(VarDatas);
VarStock = VarDatas ;
Serial.println(F("VarStock est :")); //
Serial.println(VarStock);
Serial.println(F("le script continue !!!!"));
} else if (VarDatas.startsWith("VarDate=")) {
VarDatas.replace("VarDate=", ""); //
Serial.println(F("Commande 'VarDate' détectée. Donnée extraite :")); //
Serial.println(VarDatas);
VarDate = VarDatas ;
Serial.println(F("VarDate est :")); //
Serial.println(VarDate);
Serial.println(F("le script continue !!!!"));
} else {
// Si la saisie n'est pas "VarIp=", afficher un message et recommencer
Serial.println(F("Ce n'est pas une commande valide. Essayez encore..."));
VarDatas = ""; // Réinitialiser la chaîne pour recommencer
}
}
}
void boot_read()
{
if (Serial.available()) {
VarDatas = Serial.readStringUntil('\n');
VarDatas.trim();
if (VarDatas.startsWith("VarIp=")) {
VarDatas.replace("VarIp=", ""); // Supprimer "VarIp="
Serial.println(F("Commande 'VarIp' détectée. Donnée extraite :"));
VarIp = VarDatas ;
page = 1 ;
Serial.println(F("page 1"));
VarDatas == "";
delay(2000);
}
}
}
void send_datas_boot() {
Serial.println("ComVIp");
delay(1000);
Serial.println("ComLStock");
delay(1000);
Serial.println("ComVScom");
delay(1000);
Serial.println("ComVDate");
delay(1000);
Serial.println("ComVTime");
}
void show_page1() {
//Serial.println("Show page 1");
}