Scherm wissen

hoi

Ik vond een projectje waarbij ik via een secret gist een bericht kan versturen en dit laten weergeven op het scherm. Het scherm zit in een doosje Wanneer er een nieuw bericht is ontvangen beweegt een servo motor een armpje op en neer (het zwaait). Dit stopt als je het dekseltje van het doosje haalt en er licht op een lichtsensor valt. Dit werkt prima. Nu zou ik graag hebben dat het bericht na het openen van het doosje slechts 20 (ofzo) seconden zichtbaar zou zijn. Hierna wordt het bericht gewist(self destruct) en verschijnt gewoon het start scherm weer.
Wat ik ook doe ik verpruts iedere keer mijn servo functie die blijft niet wiebelen en de boodschap verdwijnt na 20 seconden ongeacht of de waarde van de licht sensor veranderd of niet.
Heeft er iemand een idee wat ik fout doe

delay(50);
oled.clear();
oled.drawString(30, 30, “<3 LOVEBOX <3”);
oled.display();

Dit is de originele code

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <EEPROM.h>
#include <Servo.h>
#include “SSD1306Wire.h”

#include “credentials.h”
const char* ssid = _ssid;
const char* password = _password;
const String url = _url;

SSD1306Wire oled(0x3C, D2, D1);
Servo myservo;
int pos = 90;
int increment = -1;
int lightValue;
String line;
String modus;
char idSaved;
bool wasRead;

void drawMessage(const String& message) {
oled.clear();

// Unterscheide zwischen Text und Bild
if(modus[0] == ‘t’){
oled.drawStringMaxWidth(0, 0, 128, message);
}
else {
for(int i = 0; i <= message.length(); i++){
int x = i % 129;
int y = i / 129;

if(message == ‘1’){

  • oled.setPixel(x, y);*

  • }*

  • }*

  • } *

  • oled.display();*
    }
    void wifiConnect() {

  • if (WiFi.status() != WL_CONNECTED) {*

  • WiFi.begin(ssid, password);*

  • // Warte auf Verbindung*

  • while (WiFi.status() != WL_CONNECTED) {*

  • delay(500);*

  • }*

  • }*
    }
    void getGistMessage() {

  • const int httpsPort = 443;*
    _ const char* host = “gist.githubusercontent.com”;_

  • const char fingerprint = “70 94 DE DD E6 C4 69 48 3A 92 70 A1 48 56 78 2D 18 64 E0 B7”;*

  • WiFiClientSecure client;*

  • client.setFingerprint(fingerprint);*

  • if (!client.connect(host, httpsPort)) {*

  • return; // Verbindung fehlgeschlagen*

  • }*

  • client.print(String("GET “) + url + " HTTP/1.1\r\n” +*

  • "Host: " + host + “\r\n” +*

  • “User-Agent: ESP8266\r\n” +*

  • “Connection: close\r\n\r\n”);*

  • while (client.connected()) {*

  • String temp = client.readStringUntil(’\n’);*

  • if (temp == “\r”) {*

  • break;*

  • }*

  • }*

  • String id = client.readStringUntil(’\n’);*

  • if(id[0] != idSaved){ // Neue Nachricht*

  • wasRead = 0;*

  • idSaved = id[0];*

  • EEPROM.write(142, idSaved);*

  • EEPROM.write(144, wasRead);*

  • EEPROM.commit();*

  • modus = client.readStringUntil(’\n’);*

  • line = client.readStringUntil(0);*

  • drawMessage(line);*

  • }*
    }
    void spinServo(){

  • myservo.write(pos); *

  • delay(50); // Warte 50ms um den Servo zu drehen*

  • if(pos == 75 || pos == 105){ // Drehbereich zwischen 75°-105°*
    _ increment *= -1;_

  • }*

  • pos += increment;*
    }
    void setup() {

  • myservo.attach(16); // Servo an D0*

  • oled.init();*

  • oled.flipScreenVertically();*

  • oled.setColor(WHITE);*

  • oled.setTextAlignment(TEXT_ALIGN_LEFT);*

  • oled.setFont(ArialMT_Plain_10);*

  • oled.clear();*

  • oled.drawString(30, 30, “<3 LOVEBOX <3”);*

  • oled.display();*

  • wifiConnect();*

  • EEPROM.begin(512);*

  • idSaved = EEPROM.get(142, idSaved);*

  • wasRead = EEPROM.get(144, wasRead);*
    }
    void loop() {

  • if (WiFi.status() != WL_CONNECTED) {*

  • wifiConnect();*

  • }*

  • if(wasRead){*

  • getGistMessage(); *

  • }*

  • while(!wasRead){ *

  • spinServo(); // Drehe Herz*

  • lightValue = analogRead(0); // Lese Helligkeitswert*

  • if(lightValue > 300) {*

  • wasRead = 1;*

  • EEPROM.write(144, wasRead);*

  • EEPROM.commit();*

  • }*

  • }*
    }

kijk eens naar if pos == 75 dan increment maar verder staat geen pos verandering en ik mis ook iets met tijd de servo start op 90, en je grenzen staan op 105, maar hoe komt hij daar?