Hallo ich habe folgendes Problem
Ich versuche eine über Schalter gestzte Bit-Kombination als Dezimalzahl auf auf einem LCD auszugeben.
Also wenn Schalter 1 HIGH ist dann soll das 2^0 sein wenn Schalter 2 HIGH ist dann soll 2^1 usw.
das berechnete Ergebnis soll dann als Dezimalzahl auf dem LCD erscheinen.
Nun mein Problem wenn ich das Array h[] und die Variable t als Integer deklariere dann bekomme ich falsche Ergebnise
mit float funktioniert ist. Kann mir bitte einer sagen warum das so ist??? Ich habe schon Stunden nach ähnlichen Problemen im Netz gesucht
Hier der Sketch:
#include <LiquidCrystal.h> //Aufruf der Bibliothek LCD
LiquidCrystal lcd(24,25,26,27,28,29); //Initialisierung der Anschlusspins
void setup()
{
lcd.begin(16, 2); //Definition der Spalten und Reihen des LCD's
lcd.clear(); //Display löschen
pinMode(38, INPUT); //Deklarierung der Pins als Eingänge
pinMode(39, INPUT);
pinMode(40, INPUT);
pinMode(41, INPUT);
pinMode(42, INPUT);
pinMode(43, INPUT);
pinMode(44, INPUT);
pinMode(45, INPUT);
}
void loop()
{
boolean z[8]; //eindimensionale Array-Variable z wird dem Datentyp boolean zugewiesen
float h[8]={0,0,0,0,0,0,0,0}; //eindimensionale Array-Variable h wird dem Datentyp float zugewiesen und erhält den Wert 0
float t=0; //Variable t wird dem Datentyp float zugewiesen und erhält den Wert 0
for (int j=0;j<=7;j++)
{
z[j] = digitalRead (45-j); //Einlesen der digitalen Eingänge in die eindimensionale Array-Variable z
}
for(int i=0;i<=7;i++) //for-Schleife für 8 Durchläufe
{
if (z[i]==HIGH) //if-Abfrage des Arrays z[] nach ihren Zuständen
{
h[i]=pow(2,i); //Array h[] erhält die zugehörigen Binärwerte
}
else
{
h[i]=0; //Array h[] erhält den Wert 0
}
t=t+h[i]; //Addition der eingestellten Binärwerte
}
lcd.setCursor(0,0); //Position des Cursors in der Anzeige; Zeile 1 und Spalte 0
lcd.print("Dezimalwert:"); //Ausgabe des Wortes "Dezimalwert:"
lcd.setCursor(0,1); //Position des Cursors in der Anzeige; Zeile 2 und Spalte 0
lcd.print(t); //Ausgabe der Variable t
}