const byte myLED_pin = 2;
unsigned long myBlinkTimer;
byte myCounter = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, I am the ESP32!");
pinMode(myLED_pin, OUTPUT);
digitalWrite(myLED_pin, LOW);
myBlinkTimer = millis();
}
// ! ist der Not-Operator
// ! LOW = HIGH
// ! HIGH = LOW => dreht den Schaltzustand um
// ! digitalRead(myLED_pin) = NOT Schaltzustand von myLED_pin
// aus myLED_pin = LOW wird HIGH
// aus myLED_pin = HIGH wird LOW ==> blinken
void loop() {
if ( TimePeriodIsOver(myBlinkTimer,250) ) {
digitalWrite( myLED_pin, ! digitalRead(myLED_pin) );
Serial.print(digitalRead(myLED_pin));
myCounter++;
if(myCounter > 10) {
myCounter = 0;
Serial.println();
}
}
}
// nicht blockierendes Timing ist 1000 mal besser als delay()
boolean TimePeriodIsOver (unsigned long &startOfPeriod, unsigned long TimePeriod) {
unsigned long currentMillis = millis();
if ( currentMillis - startOfPeriod >= TimePeriod ) {
// more time than TimePeriod has elapsed since last time if-condition was true
startOfPeriod = currentMillis; // a new period starts right here so set new starttime
return true;
}
else return false; // actual TimePeriod is NOT yet over
}