Zitat:Original geschrieben von Bembel
Unkommentierten C Code nachvollziehen = ;kotz ;wall
Und zwar in der Reihenfolge
Naja... ob das nun so richtiger C-Code ist, da gehen die Meinungen durcheinander. Ich erkenne sogar Fragmente von C++. Zusätzlich gibt es im Hintergrund einige unsichtbare Dinge. Denn in dem Programm seh ich erstmal nur zwei Prozeduren, die niemand jemals aufzurufen scheint. Da die aber doch aufgerufen werden, scheint es im Hintergrund einen Big brother zu geben.
Gleichwohl kann man sich leicht reindenken:
Zitat:#define BLINKPIN 13
#define DCF77PIN 2
int prevSensorValue=0;
void setup() {
Serial.begin(9600);
pinMode(DCF77PIN, INPUT);
pinMode(13, OUTPUT);
Serial.println("0ms 100ms 200ms 300ms 400ms 500ms 600ms 700ms 800ms 900ms 1000ms 1100ms 1200ms");
}
In dieser Prozedur wird eine serielle Schnittstelle auf 9600 Baud konfiguriert.
Dann werden zwei Pins konfiguriert, einer als In- und einer als Output.
Und dann wird der angegegeben Text über die serielle Schnittstelle ausgegeben.
Zitat:void loop() {
int sensorValue = digitalRead(DCF77PIN);
if (sensorValue==1 && prevSensorValue==0) { Serial.println(""); }
digitalWrite(BLINKPIN, sensorValue);
Serial.print(sensorValue);
prevSensorValue = sensorValue;
delay(10);
}
Genaugenommen handelt es sich bei dieser Prozedur nicht um eine "loop" bzw. Schleife. Man muss aber vermuten, dass loop() aus einer Schleife heraus aufgerufen wird.
Zuerst liest loop ein Bit von dem in Setup() konfigurierten Input-Pin und speichert das Bit in einer lokalen Variable Namens "sensorValue"
Falls dieser Wert eine "1" UND der alte Wert (in prevSensorValue) eine "0" war, so gibt er mit Serial.println("") einen Zeilenvorschub aus.
Dann reflektiert er das gelesene Bit auf dem BLINKPIN
Dann gibt er das Bit auf der seriellen Schnittstelle aus.
Und speichert das gelesene Bit in der globalen Variable prevSensorValue ab. Im Gegensatz zur lokalen Variable bleibt der Inhalt der globalen Variable auch bestehen, wenn der Big brother nach einer Wartezeit von 10ms wieder die Kontrolle zurückbekommt und vermutlich als nächstes die Prozedur "loop" erneut aufruft.