projets:lcd_status:start

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
projets:lcd_status:start [2025/11/21 07:00]
enseignant Créé depuis le formulaire creerunprojet
projets:lcd_status:start [2025/11/21 07:24] (Version actuelle)
enseignant
Ligne 12: Ligne 12:
  
 {{projets:lcd_status:start:comfyui_00131_.png?800|LCD status}} {{projets:lcd_status:start:comfyui_00131_.png?800|LCD status}}
-==== Références et liens ==== +
-  * Notez ici les références artistiques et techniques, ou autres influences +
-  *  +
-  * +
  
 ===== Notes techniques et matériaux ===== ===== Notes techniques et matériaux =====
-Liste de matériel et composants nécessaires (documents avec photo si possible...)+Code pour l'esp : 
 + 
 +<code c+> 
 +#include <WiFi.h> 
 +#include <HTTPClient.h> 
 +#include <Wire.h> 
 + 
 +// ------------------------------------------------------- 
 +// WiFi credentials 
 +// ------------------------------------------------------- 
 +const char* ssid = "ESDAMM-Pedagogie"; 
 +const char* password = "P3daGog!e"; 
 + 
 +// ------------------------------------------------------- 
 +// Grove RGB LCD I2C addresses 
 +// ------------------------------------------------------- 
 +#define LCD_TEXT_ADDR 0x3E 
 +#define LCD_RGB_ADDR  0x62 
 + 
 +// ESP32 I2C pins 
 +#define SDA_PIN 21 
 +#define SCL_PIN 22 
 + 
 +// ------------------------------------------------------- 
 +// LCD low-level functions 
 +// ------------------------------------------------------- 
 +void lcdSendCommand(uint8_t cmd) { 
 +  Wire.beginTransmission(LCD_TEXT_ADDR); 
 +  Wire.write(0x80); 
 +  Wire.write(cmd); 
 +  Wire.endTransmission(); 
 +
 + 
 +void lcdSendData(uint8_t data) { 
 +  Wire.beginTransmission(LCD_TEXT_ADDR); 
 +  Wire.write(0x40); 
 +  Wire.write(data); 
 +  Wire.endTransmission(); 
 +
 + 
 +void i2cWriteRegister(uint8_t addr, uint8_t reg, uint8_t val) { 
 +  Wire.beginTransmission(addr); 
 +  Wire.write(reg); 
 +  Wire.write(val); 
 +  Wire.endTransmission(); 
 +
 + 
 +void setRGB(uint8_t r, uint8_t g, uint8_t b) { 
 +  i2cWriteRegister(LCD_RGB_ADDR, 0x04, r); 
 +  i2cWriteRegister(LCD_RGB_ADDR, 0x03, g); 
 +  i2cWriteRegister(LCD_RGB_ADDR, 0x02, b); 
 +
 + 
 +void lcdSetCursor(uint8_t col, uint8_t row) { 
 +  uint8_t pos = (row == 0) ? 0x00 : 0x40; 
 +  lcdSendCommand(0x80 | (pos + col)); 
 +
 + 
 +void lcdInit() { 
 +  lcdSendCommand(0x38); 
 +  lcdSendCommand(0x39); 
 +  lcdSendCommand(0x14); 
 +  lcdSendCommand(0x70); 
 +  lcdSendCommand(0x56); 
 +  lcdSendCommand(0x6C); 
 +  delay(200); 
 +  lcdSendCommand(0x38); 
 +  lcdSendCommand(0x0C); 
 +  lcdSendCommand(0x01); 
 +  lcdSendCommand(0x06); 
 + 
 +  // Init RGB 
 +  i2cWriteRegister(LCD_RGB_ADDR, 0x00, 0x00); 
 +  i2cWriteRegister(LCD_RGB_ADDR, 0x01, 0x00); 
 +  i2cWriteRegister(LCD_RGB_ADDR, 0x08, 0xAA); 
 + 
 +  setRGB(255, 255, 255); 
 +
 + 
 +void lcdPrint(const String &msg) { 
 +  lcdSendCommand(0x01);  // clear 
 +  delay(2); 
 + 
 +  uint8_t col = 0, row = 0; 
 +  lcdSetCursor(0, 0); 
 + 
 +  for (int i = 0; i < msg.length(); i++) { 
 +    if (msg[i] == '\n') { 
 +      row = 1; 
 +      col = 0; 
 +      lcdSetCursor(col, row); 
 +      continue; 
 +    } 
 +    lcdSendData(msg[i]); 
 +    col++; 
 +    if (col >= 16) { 
 +      if (row == 0) { 
 +        row = 1; 
 +        col = 0; 
 +        lcdSetCursor(col, row); 
 +      } else { 
 +        break; 
 +      } 
 +    } 
 +  } 
 +
 + 
 +// ------------------------------------------------------- 
 +// WiFi + HTTP 
 +// ------------------------------------------------------- 
 +String downloadText() { 
 +  HTTPClient http; 
 +  http.begin("https://wikibam.com/XP/fichier.txt"); 
 + 
 +  int code = http.GET(); 
 +  if (code != 200) { 
 +    Serial.println("Erreur HTTP : " + String(code)); 
 +    http.end(); 
 +    return "HTTP error"; 
 +  } 
 + 
 +  String payload = http.getString(); 
 +  http.end(); 
 +  return payload; 
 +
 + 
 +// ------------------------------------------------------- 
 +void setup() { 
 +  Serial.begin(115200); 
 +  delay(200); 
 + 
 +  Wire.begin(SDA_PIN, SCL_PIN); 
 +  lcdInit(); 
 +  setRGB(0, 150, 255); 
 + 
 +  lcdPrint("Connexion\nWiFi..."); 
 +  Serial.println("Connexion WiFi..."); 
 + 
 +  WiFi.begin(ssid, password); 
 +  while (WiFi.status() != WL_CONNECTED) { 
 +    delay(300); 
 +    Serial.print("."); 
 +  } 
 +  Serial.println("\nWiFi OK !"); 
 +  lcdPrint("WiFi OK!\nLecture..."); 
 +
 + 
 +// ------------------------------------------------------- 
 +void loop() { 
 +  if (WiFi.status() == WL_CONNECTED) { 
 +    String txt = downloadText(); 
 +    Serial.println("Mis à jour:"); 
 +    Serial.println(txt); 
 + 
 +    lcdPrint(txt); 
 +  } else { 
 +    lcdPrint("WiFi perdu!\nReconnexion"); 
 +    WiFi.begin(ssid, password); 
 +  } 
 + 
 +  delay(5000); // <<< mise à jour toutes les 5 secondes 
 +
 + 
 + 
 + 
 +</code> 
 + 
 +===== Coté FTP-php ===== 
 +<code html> 
 +<!DOCTYPE html> 
 +<html lang="fr"> 
 +<head> 
 +    <meta charset="UTF-8"> 
 +    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 +    <title>Formulaire de mise à jour</title> 
 +    <style> 
 +        body { 
 +            background-color: black; 
 +            color: white; 
 +            font-family: Arial, sans-serif; 
 +            font-size: 18px; 
 +            margin: 0; 
 +            padding: 20px; 
 +        } 
 +        h1 { 
 +            color: lightgray; 
 +        } 
 +  
 + h5 { 
 +            color: #666; 
 + font-size: 11px; 
 +        } 
 +        form { 
 +            background-color: #222; 
 +            padding: 20px; 
 + width: 60%; 
 +            border-radius: 5px; 
 +            margin-top: 20px; 
 +        } 
 +        label { 
 +            display: block; 
 +            margin-bottom: 10px; 
 +        } 
 +        input[type="text"] { 
 +            width: 80%; 
 +            padding: 10px; 
 +            font-size: 16px; 
 +            margin-bottom: 20px; 
 +            border: 1px solid gray; 
 +            border-radius: 4px; 
 +            background-color: #333; 
 +            color: white; 
 +        } 
 +        input[type="submit"] { 
 +            background-color: gray; 
 +            color: white; 
 + font-size: 20px; 
 +            padding: 10px 15px; 
 +            border: none; 
 +            border-radius: 4px; 
 +            cursor: pointer; 
 +        } 
 +        input[type="submit"]:hover { 
 +            background-color: tomato; 
 + color:black; 
 +        } 
 +    </style> 
 +</head> 
 +<body> 
 +    <h1>&#9851; Status </h1> 
 +    <form action="" method="post"> 
 +        <label for="texte">Entrez votre texte (max 60 caractères) :</label> 
 +        <input type="text" id="texte" name="texte" maxlength="60" required> 
 +        <input type="submit" value="Envoyer"> 
 +    </form> 
 + 
 +    <?php 
 +    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
 +        $texte = htmlspecialchars($_POST['texte']); 
 + 
 +        // Effacer le contenu du fichier et y écrire le nouveau texte 
 +        file_put_contents('fichier.txt', $texte);
  
 +        echo "<h5> :) Le fichier a été mis à jour avec succès.</h5>";
 +    }
 +    ?>
 +</body>
 +</html>
 +</code>
 ===== Photos et médias===== ===== Photos et médias=====
 Code pour afficher les images du projet : Code pour afficher les images du projet :
  • projets/lcd_status/start.1763704833.txt.gz
  • Dernière modification: 2025/11/21 07:00
  • de enseignant