Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Software/MC_Code/Main-Code _WemosD1mini/include/learn.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@
#define LEARN_H
#include <Arduino.h>

void startLearningSession(const String &name, int duration, int breaktime);
void runNewLearntime(const String &name, int duration, int breaktime);
const bool isLearning;
#endif
63 changes: 58 additions & 5 deletions Software/MC_Code/Main-Code _WemosD1mini/src/learn.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,62 @@
// Make functions to learn. E.g. the LED management during learning times, starting, pausing, stopping, etc.
#include <Arduino.h>
#include <vector>

void startLearningSession(const String &name, int duration, int breaktime) {
Serial.println("Lernsession gestartet für: " + name);
Serial.println("Dauer: " + String(duration) + " Minuten");
Serial.println("Pausenzeit: " + String(breaktime) + " Minuten");
// Hier können weitere Aktionen hinzugefügt werden, z.B. LED steuerung oder timer keine Ahnung wie ihr das machen wollt
bool isLearning = false;

class Learntime {
public:
Learntime(const String &name, const std::vector<int> &durations)
: name(name), durations(durations) {}

String getName() const { return name; }
const std::vector<int>& getDurations() const { return durations; }

private:
String name;
std::vector<int> durations;
};


void runLearntime(const Learntime &lt) {
Serial.println("Starte Lernprogramm: " + lt.getName());

const std::vector<int> &durs = lt.getDurations();

for (size_t i = 0; i < durs.size(); i++) {
int mins = durs[i];
bool isBreak = (i % 2 == 1);

if (isBreak) {
Serial.println("Pause: " + String(mins) + " Minuten");
} else {
Serial.println("Lernen: " + String(mins) + " Minuten");
}

unsigned long interval = mins * 60000UL;
unsigned long start = millis();

while (millis() - start < interval) {
// Hier kommt LED-Steuerung, Button-Check, Webserver-Refresh, was auch immer
// Aber bitte *keine* busy-waits .
}
}

Serial.println("Learntime beendet.");
}

Learntime createLearntime(const String &name, int duration, int breaktime) {
std::vector<int> durations;
for (int i = 0; i < 4; i++) { // 4 Lernphasen
durations.push_back(duration);
if (i < 3) { // Pause nach jeder Lernphase außer der letzten
durations.push_back(breaktime);
}
}
return Learntime(name, durations);
}

void runNewLearntime(const String &name, int duration, int breaktime) {
Learntime lt = createLearntime(name, duration, breaktime);
runLearntime(lt);
}
11 changes: 8 additions & 3 deletions Software/MC_Code/Main-Code _WemosD1mini/src/network.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ extern void writeWiFiCredentials(const String &ssid, const String &password);
extern String readSSID();
extern String readPassword();
extern void saveLearntime(String name, String duration, String breaktime);
extern void startLearningSession(const String &name, int duration, int breaktime);
extern void runNewLearntime(const String &name, int duration, int breaktime);

//* WLAN Verbindung
bool tryConnectToWiFi(String ssid, String password) {
Expand Down Expand Up @@ -197,15 +197,20 @@ void setupInterfaceServer(ESP8266WebServer &server) {
});
server.on("/start_learntime", HTTP_GET, [&server]() {
// Read parameters from URL query string
if (isLearning) {
server.send(200, "text/html", "<h2>Ein Lernprogramm läuft bereits. Bitte abbrechen.</h2>");
return;
}
String name = server.arg("name");
String duration = server.arg("duration");
String breaktime = server.arg("breaktime");

Serial.println("Start Learntime requested");

startLearningSession(name, duration.toInt(), breaktime.toInt());
runNewLearntime(name, duration.toInt(), breaktime.toInt());
server.sendHeader("Location", "/");
server.send(303);

});
}
}
// divide this file into more1S