Max7219 arduino

erkan340

Üye
Katılım
7 Şub 2022
Mesajlar
8
Puanları
1
Yaş
39
sensor verisinı displaye yazmaya calısıyroum bu sekılde bır kod buldum calısıyor fakat veri 0 iken ekranda sadece 00 yazıyor
sensorden okunan veri bır float verisi yanı 0.00 geliyor ama displayde sadece 00 görunuyor bu konuda yardımcı olabılırmısınız.

long integer = (long) i;
long decimalpart = (long)(100 * (i - integer));
int integerDigits = 0;
long tmp_integer = integer;
long tmp2_integer = integer;
while (tmp_integer)
{
tmp_integer = tmp_integer / 10;
integerDigits++;
}
int digitsPosition = integerDigits + 2;
long digits[digitsPosition];
int decimalDigits = 2;
long tmp_decimalpart = decimalpart;
digits[integerDigits + 1] = tmp_decimalpart % 10;
tmp_decimalpart /= 10;
digits[integerDigits ] = tmp_decimalpart % 10;
while (integerDigits--)
{
digits[integerDigits] = tmp2_integer % 10;
tmp2_integer /= 10;

}

lc.clearDisplay(0);

for (int j = 0; j < digitsPosition; j++)
{
if (j == 2)
{
lc.setDigit(0, j, digits[digitsPosition - j - 1], true);
}
else

{
lc.setDigit(0, j, digits[digitsPosition - j - 1], false);

}
 
Siz ekrana yazılacak değişkene elle
float bir değer yazıp gözlemlediniz mi?
Evet bu kod ile veriyi sürekli displayde görüyorum veri 0,99 a kadar ekranda 99 görüyorum 1.00 olduğunda doğru görünüyor 1.00 olarak boşta da 00 görünüyor 0.00 görmek istiyorum
 
Max7219 kitaplığında float tipi için bir özellik var zaten neden onu kullanmıyorsun.

C++:
#include <max7219.h>

MAX7219 max7219;

void setup() {
  Serial.begin(115200);
  max7219.Begin();
}
void loop() {
  String temp;
  char temp2[8];

  for (float x = 0; x < 2; x = x + 0.01) {
    temp = String(x);
    temp.toCharArray(temp2, temp.length()+1);
    max7219.DisplayText(temp2, 1);
    Serial.println(x);
    delay(500);
  }
}
 
bu kod ile yazdıgımda da -(eksi) bir değer geldiğinde (mesela -0.00 ) o deger artıya da gecsede - nin bulundugu digit e deger gelene kadar - kalıyor (-0.01 iken deger 0.99 da olsa -0.99 ,5.99 da olsa -5.99). durum 10.00 olunca duzelıyor . takı deger tekrar eksiye dusene kadar.

String temp;
char temp2[8];
temp = String(x);
temp.toCharArray(temp2, temp.length()+1);
max7219.DisplayText(temp2, 1);
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…