#include <Arduino.h>
const int temperaturSensorPin = A0;
// Segment Pins (assuming common cathode display)
const int segmentPins[8] = {0, 1, 2, 3, 4, 5, 6, 7};
// Digit Pins (common cathode)
const int digitPins[4] = {8, 9, 10, 11};
// 7-segment display encoding (0-9)
const byte digitTo7Segment[10] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F // 9
};
void setup() {
// Set segment pins as output
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// Set digit pins as output
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
}
// Turn off all digits initially
for (int i = 0; i < 4; i++) {
digitalWrite(digitPins[i], LOW);
}
}
void displayDigit(int digit, int position) {
// Turn off all digits
for (int i = 0; i < 4; i++) {
digitalWrite(digitPins[i], LOW);
}
// Set segment pins according to the digit
for (int i = 0; i < 8; i++) {
digitalWrite(segmentPins[i], (digitTo7Segment[digit] >> i) & 0x01);
}
// Turn on the specified digit
digitalWrite(digitPins[position], HIGH);
}
void loop() {
int readTemperatur = analogRead(temperaturSensorPin);
int temperatur = readTemperatur / 10; // Skalieren für Anzeige
// Extract digits
int digits[4];
digits[0] = temperatur / 1000; // Tausender
digits[1] = (temperatur / 100) % 10; // Hunderter
digits[2] = (temperatur / 10) % 10; // Zehner
digits[3] = temperatur % 10; // Einer
// Display each digit with multiplexing
for (int i = 0; i < 4; i++) {
displayDigit(digits[i], i);
delay(5); // Small delay for multiplexing
}
}