ich lese mit einem Schieberegister (74HC165) 8 bit ein und gebe die Werte in Dezimal auf ein LC-Display aus.
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// Define Connections to 74HC165
// PL (74hc165)pin 1 assync parallel load in
int load = 9;
// CE (74hc165)pin 15 clock enable
int clockEnablePin = 10;
// Q7 (74hc165)pin 7 data in
int dataIn = 11;
// CP (74hc165)pin 2 clock in
int clockIn = 12;
int val = 0;
void setup()
{
// Setup 74HC165 connections
pinMode(load, OUTPUT);
pinMode(clockEnablePin, OUTPUT);
pinMode(clockIn, OUTPUT);
pinMode(dataIn, INPUT);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Pin Status:");
}
void loop()
{
// Write pulse to load pin
digitalWrite(load, LOW);
delayMicroseconds(5);
digitalWrite(load, HIGH);
delayMicroseconds(5);
// Get data from 74HC165
digitalWrite(clockIn, HIGH);
digitalWrite(clockEnablePin, LOW);
int incoming = shiftIn(dataIn, clockIn, LSBFIRST);
digitalWrite(clockEnablePin, HIGH);
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
val = incoming, DEC;
if (val<10000) lcd.print(' ');
if (val<1000) lcd.print(' ');
if (val<100) lcd.print(' ');
if (val<10) lcd.print(' ');
//lcd.setCursor(0, 2);
//lcd.print(" ");
//int ergebnis = (incoming, DEC);
lcd.print(incoming,DEC);
delay(200);
}
Mit lcd.print(incoming, DEC); kann ich mir die Werte auch in Dezimal anzeigen lassen, soweit funktioniert ja alles ganz gut.
Nur ich möchte die Dezimal-Werte berechnen, bzw mit einem Faktor versehen und dann mir anzeigen lassen.
Ist das mit einer Ergänzung des lcd.print Befehl möglich?
@ TO:
der Wert von incoming bleibt gleich, egal ob du ihn dir dezimal oder binär anzeigen lässt. Es ändert sich nur die Darstellungsform. Da für print die dezimale Anzeige Standard ist, muss du nicht zusätzlich das Attribut/Parameter DEC angeben. Wenn doch schadet es jedoch auch nicht.
Eine Variable namens DEC zu definieren ist jedoch wirklich an der Stelle falsch.
Deine beiden DEC's haben nichts miteinander zu tun!
(Hatte einen Datentypen gesehen der nicht vorhanden ist, dass führte zur falschen Behauptung.)
OMG : , ja es ist genau so wie ich es haben wollte.
Ich war immer davon ausgegangen das für die dezimale Darstellung immer DEC angegeben weden muss. Nur da konnte ich nicht mit rechnen... Nur (incoming * 10 ) z.B. und dann rechnen... ist doch so einfach...... DANKE
CPU und Controller rechnen intern mit Binärzahlen weil die ganze digitale Logik aus 2 Zuständen aufgebaut ist.
Zur Darstellung für den Menschen wird aus einer oder mehreren Binärzahlen eine Dezimalzahl, aber auch eine Oktal, oder Hexadezimalzahl, von Buchstaben, Zeichen, Farben, Formen, Tönen, Bildern und Videos ganz zu schweigen.
Grüße Uwe