Guten Tag,
Ich habe ein Problem die Einerstelle von einem Temperatursensor richtig auf den 7-Segment-Display anzeigen zu lassen, es erscheint immer um 3 bis 2 Zahlen falsch und die 9 erscheint überhaupt nicht. Die Zehner stelle funktioniert einwandfrei aber die Einerstelle nicht, obwohl ich genau das gleiche habe. PS Ich benutze 2 7-Segment-Displays eins für die Einer Stelle das andere für die Zehnerstelle außerdem sind beide Displays mit einer 7-Segment-Decoder verbunden.
Mein code sieht wie folgt aus :
int a1= 8;
int a2= 9;
int a3= 10;
int a4= 11;
int b1= 0;
int b2= 1;
int b3= 2;
int b4= 3;
int sequence[10][4]={
{0,0,0,0}, //0
{0,0,0,1}, //1
{0,0,1,0}, //2
{0,0,1,1}, //3
{0,1,0,0}, //4
{0,1,0,1}, //5
{0,1,1,0}, //6
{0,1,1,1}, //7
{1,0,0,0}, //8
{1,0,0,1} //9
};
int reverseSequence[10][4]={
{0,0,0,0}, //0
{1,0,0,0}, //1
{0,1,0,0}, //2
{1,1,0,0}, //3
{0,0,1,0}, //4
{1,0,1,0}, //5
{0,1,1,0}, //6
{1,1,1,0}, //7
{0,0,0,1}, //8
{1,0,0,1} //9
};
void setup() {
pinMode(a1, OUTPUT);
pinMode(a2, OUTPUT);
pinMode(a3, OUTPUT);
pinMode(a4, OUTPUT);
pinMode(b1, OUTPUT);
pinMode(b2, OUTPUT);
pinMode(b3, OUTPUT);
pinMode(b4, OUTPUT);
pinMode(A5, INPUT);
Serial.begin(9600);
}
void loop() {
int temOutput=analogRead( A5 );
int temperatur= map(temOutput, (1023.0/5000)*100,(1023.0/5000)*1750,-40,125);
Serial.println(temperatur);
int absTemberatur= abs(temperatur);
int einer = absTemberatur%10;
Serial.println(einer);
digitalWrite(b1, sequence[einer][3] == 1 ? HIGH : LOW);
digitalWrite(b2, sequence[einer][2] == 1 ? HIGH : LOW);
digitalWrite(b3, sequence[einer][1] == 1 ? HIGH : LOW);
digitalWrite(b4, sequence[einer][0] == 1 ? HIGH : LOW);
int zehner = (absTemberatur / 10) % 10;
Serial.println(zehner);
digitalWrite(a1, sequence[zehner][3] == 1 ? HIGH : LOW);
digitalWrite(a2, sequence[zehner][2] == 1 ? HIGH : LOW);
digitalWrite(a3, sequence[zehner][1] == 1 ? HIGH : LOW);
digitalWrite(a4, sequence[zehner][0] == 1 ? HIGH : LOW);
delay(2000);
}
Ich hoffe jemand kann mir hier helfen.


