...wenn man nicht so genau hinsieht und davon ausgeht, das im Moment KEINE Fehler geprüft werden und weiß, dass nach ein paar Datenreihen sowas wie 03.13° und 00% ankommt, klappt es:
'Here's da code':
#include <nokia_3310_lcd.h>
Nokia_3310_lcd lcd=Nokia_3310_lcd();
#define _Whole_Data_length 116
byte pin = 2;
byte whole_array[_Whole_Data_length];
byte value;
byte array_pos=0;
unsigned long duration;
char numStr[8];
void setup()
{
lcd.init();
lcd.clear();
lcd.writeString( 12, 1, "Waiting for", 0);
lcd.writeString( 24, 3, "Data...", 0);
pinMode(pin, INPUT);
}
void loop()
{
duration = pulseIn(pin, HIGH);
if ((duration>600)&&(duration<1000)) {
whole_array[array_pos] = 1;
array_pos++;
}
if ((duration>1200)&&(duration<4000)){
whole_array[array_pos] = 0;
array_pos++;
}
if (array_pos>=_Whole_Data_length) {
lcd.clear();
lcd.writeStringBig( 12, 0,itoa(createValue(30), numStr, 10 ),0);
lcd.writeStringBig( 24, 0,itoa(createValue(26), numStr, 10 ),0);
lcd.writeStringBig( 36, 0,".",0);
lcd.writeStringBig( 42, 0,itoa(createValue(22), numStr, 10 ),0);
lcd.writeString( 58, 0, "o", 0);
lcd.writeString( 58, 2, "Temp", 0);
lcd.writeStringBig( 30, 3,itoa(createValue(38), numStr, 10 ),0);
lcd.writeStringBig( 42, 3,itoa(createValue(34), numStr, 10 ),0);
lcd.writeString( 58, 4, "%", 0 );
lcd.writeString( 58, 5, "Humi", 0 );
array_pos=0;
}
}
byte createValue(byte start)
{
byte bitpos=0;
for (byte valuepos=start;valuepos<=start+3;valuepos++) {
bitWrite(value, bitpos, whole_array[valuepos]);
bitpos++;
}
return ((value>>4)*10)+value%16;
}
Hey volvodani, habe Deinen BCD2DEC Tipp mit eingebaut...