update: der Code jetzt hier scheint besser zu laufen:
code:Code:> counter_loop: 0 > blinker_loop (HIGH) counter: 0 > main loop: 1 > blinker_loop (LOW) counter: 0 > counter_loop: 1 > counter_loop: 2 > blinker_loop (HIGH) counter: 1 > blinker_loop (LOW) counter: 1 > counter_loop: 3 > counter_loop: 4 > blinker_loop (HIGH) counter: 2 > blinker_loop (LOW) counter: 2 > counter_loop: 5 > counter_loop: 6 > blinker_loop (HIGH) counter: 3 > blinker_loop (LOW) counter: 3 > counter_loop: 7 > counter_loop: 8 > blinker_loop (HIGH) counter: 4 > blinker_loop (LOW) counter: 4 > counter_loop: 9 > counter_loop: 10 > blinker_loop (HIGH) counter: 5 > main loop: 2 > blinker_loop (LOW) counter: 5 > counter_loop: 11 > counter_loop: 12 > blinker_loop (HIGH) counter: 6 > blinker_loop (LOW) counter: 6 > counter_loop: 13 > counter_loop: 14 > blinker_loop (HIGH) counter: 7 > blinker_loop (LOW) counter: 7 > counter_loop: 15 > counter_loop: 16 > blinker_loop (HIGH) counter: 8 > blinker_loop (LOW) counter: 8 > counter_loop: 17 > counter_loop: 18 > blinker_loop (HIGH) counter: 9 > blinker_loop (LOW) counter: 9 > counter_loop: 19 > counter_loop: 20 > blinker_loop (HIGH) counter: 10 > main loop: 3 > blinker_loop (LOW) counter: 10
```
```Code:// std::thread for ESP32, Arduino IDE #include <Arduino.h> #include <thread> #include <chrono> #ifndef LED_BUILTIN #define LED_BUILTIN 13 #endif const auto one_sec = std::chrono::seconds { 1 }; void counter_loop() { thread_local uint32_t counter = 0; while(true) { Serial.print("counter_loop: "); Serial.println(counter); std::this_thread::sleep_for(one_sec); counter++; } } void blinker_loop() { thread_local uint32_t counter = 0; while(true) { digitalWrite(LED_BUILTIN, HIGH); Serial.print("blinker_loop (HIGH) counter: "); Serial.println(counter); std::this_thread::sleep_for(one_sec); digitalWrite(LED_BUILTIN, LOW); Serial.print("blinker_loop (LOW) counter: "); Serial.println(counter); std::this_thread::sleep_for(one_sec); counter++; } } std::unique_ptr<std::thread> counter_loop_thread; std::unique_ptr<std::thread> blinker_loop_thread; void setup() { Serial.begin(115200); //debug delay(2000); counter_loop_thread.reset(new std::thread(counter_loop)); blinker_loop_thread.reset(new std::thread(blinker_loop)); } uint32_t main_loop_counter = 0; void loop() { main_loop_counter++; Serial.print("main loop: "); Serial.println(main_loop_counter); delay(10000); }
- - - Aktualisiert - - -
update2:
gleich gutes Ergebnis bei dieser Code-Implementierung:
Code:std::thread *counter_loop_thread; std::thread *blinker_loop_thread; void setup() { Serial.begin(115200); //debug delay(2000); counter_loop_thread = new std::thread(counter_loop); blinker_loop_thread = new std::thread(blinker_loop); }







Zitieren

Lesezeichen