// MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START *
// a detailed explanation how these macros work is given in this tutorial
// https://forum.arduino.cc/t/comfortable-serial-debug-output-short-to-write-fixed-text-name-and-content-of-any-variable-code-example/888298
#define dbg(myFixedText, variableName) \
Serial.print( F(#myFixedText " " #variableName"=") ); \
Serial.println(variableName);
#define dbgi(myFixedText, variableName,timeInterval) \
{ \
static unsigned long intervalStartTime; \
if ( millis() - intervalStartTime >= timeInterval ){ \
intervalStartTime = millis(); \
Serial.print( F(#myFixedText " " #variableName"=") ); \
Serial.println(variableName); \
} \
}
#define dbgc(myFixedText, variableName) \
{ \
static long lastState; \
if ( lastState != variableName ){ \
Serial.print( F(#myFixedText " " #variableName" changed from ") ); \
Serial.print(lastState); \
Serial.print( F(" to ") ); \
Serial.println(variableName); \
lastState = variableName; \
} \
}
#define dbgcf(myFixedText, variableName) \
{ \
static float lastState; \
if ( lastState != variableName ){ \
Serial.print( F(#myFixedText " " #variableName" changed from ") ); \
Serial.print(lastState); \
Serial.print( F(" to ") ); \
Serial.println(variableName); \
lastState = variableName; \
} \
}
// MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END *
float Quellspannung = 5.0;
int AnalogPin = 5;
float R1 = 1500.0; //Wert des bekannten Widerstands (der mitgelieferte 1,5k-Widerstand)
long Messwert;
float SpannungR2; //Spannung über dem zu messenden Widerstand
float Widerstand;
void setup() {
Serial.begin(9600);
Serial.println("Widerstand ausmessen");
Serial.println();
}
void loop() {
//5 Messungen machen und Mittelwert bilden
Messwert = 0;
for(int i = 0; i < 5; i++){
Messwert += analogRead(AnalogPin);
dbg("01",Messwert);
}
Messwert = Messwert / 5;
dbg("02",Messwert);
//Spannung berechnen
dbg("03",Quellspannung);
dbg("04",Quellspannung / 1023.0);
dbg("05",(Quellspannung / 1023.0) * Messwert);
dbg("06",SpannungR2);
SpannungR2 = (Quellspannung / 1023.0) * Messwert;
Serial.print("Spannung ueber R2 betraegt ");
Serial.print(SpannungR2,2);
Serial.println(" Volt!");
//Berechnung: (R2 = R1 * (U2/U1))
dbg("07",R1);
dbg("08",SpannungR2);
dbg("09",(Quellspannung - SpannungR2));
dbg("10",(SpannungR2 / (Quellspannung - SpannungR2)));
dbg("11",R1 * (SpannungR2 / (Quellspannung - SpannungR2)));
Widerstand = R1 * (SpannungR2 / (Quellspannung - SpannungR2));
dbg("12",Widerstand);
Serial.print("Der Widerstand hat ");
Serial.print(Widerstand,2);
Serial.println(" Ohm.");
Serial.println();
delay(1000);
}