const byte OnBoard_LED = 13; // onboard-LED uno, mega
const byte myOutputPin = 2;
unsigned long myTimer;
byte outputPinStateAssigned;
byte outputPinStateRead;
void setup() {
Serial.begin(115200);
Serial.println("Setup-Start");
PrintFileNameDateTime();
pinMode(myOutputPin, OUTPUT);
outputPinStateAssigned = HIGH;
}
void loop() {
BlinkHeartBeatLED(OnBoard_LED,250);
if (TimePeriodIsOver(myTimer, 1000) ) {
if (outputPinStateAssigned == HIGH) {
outputPinStateAssigned = LOW;
}
else {
outputPinStateAssigned = HIGH;
}
Serial.print("you YOURSELF set variable outputPinStateAssigned to value:");
Serial.println(outputPinStateAssigned);
digitalWrite(myOutputPin, outputPinStateAssigned);
outputPinStateRead = digitalRead(myOutputPin);
Serial.print("outputPinStateRead = digitalRead(");
Serial.print(myOutputPin);
Serial.print(")=");
Serial.println(outputPinStateRead);
}
}
// helper-functions
void PrintFileNameDateTime() {
Serial.println( F("Code running comes from file ") );
Serial.println( F(__FILE__) );
Serial.print( F(" compiled ") );
Serial.print( F(__DATE__) );
Serial.print( F(" ") );
Serial.println( F(__TIME__) );
}
// easy to use helper-function for non-blocking timing
// explanation see here
// https://forum.arduino.cc/t/example-code-for-timing-based-on-millis-easier-to-understand-through-the-use-of-example-numbers-avoiding-delay/974017
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
}
void BlinkHeartBeatLED(int IO_Pin, int BlinkPeriod) {
static unsigned long MyBlinkTimer;
pinMode(IO_Pin, OUTPUT);
if ( TimePeriodIsOver(MyBlinkTimer, BlinkPeriod) ) {
digitalWrite(IO_Pin, !digitalRead(IO_Pin) );
}
}