avatar_kotan04

arduino seri monitör desimal sayı girme

Başlatan kotan04, 13 Mart 2022, 01:07:40

mehmet

Seyrek olarak yolladığınız bilgilerde
sorun olmayacaktır. Ancak iş hızlandığında
gönderinizin bir başının olduğunu
belirmelisiniz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

Hattuşa

Alıntı yapılan: mehmet - 15 Mart 2022, 23:05:16Seyrek olarak yolladığınız bilgilerde
sorun olmayacaktır. Ancak iş hızlandığında
gönderinizin bir başının olduğunu
belirmelisiniz.

arduino da bu problem hep oluyor, Basicte işler daha kolay (yada elimiz alıştığı için kolay geliyor). arduinocuların bazıları string,integer,float gibi byte den büyük değerleri gönderdiklerinde gidenin de aynı değerde olduğunu sanıyor, oysa data-alışverişi hep byte olarak geçekleşiyor.

mehmet

#17
"gelen" değişkenini genelde tanımlayın. "loop()"
fonksiyonu her defasında tanımlamayı yeniden
oluşturduğu için değer "0" görünüyor.

Ya da "static" olarak da tanımlama yapabilirsiniz.
Fonksiyona girildiğinde eski içeriğini korur.

Alttaki kodda; "mb1234" formatında seri porta
gönderilen "1234" değerini, SSD1306 display
üzerinde gösterir.

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R2, /* reset=*/ U8X8_PIN_NONE);

/*
*/
void setup(void)
{
  u8g2.begin();
  Serial.begin(9600);
  Serial.setTimeout(10);
}

/*
*/
void loop(void)
{
  char m_str[5];
  uint8_t deger[5] = {'\0'};
  static uint16_t k = 0;

  if (Serial.available())
  {
    if (Serial.find('m') && (Serial.find('b')))
    {
      k = Serial.parseInt();
      Serial.print("k degeri:");
      Serial.println(k);
    }
  }

  deger[0] = k % 10000 / 1000;
  deger[1] = k % 1000 / 100;
  deger[2] = k % 100 / 10;
  deger[3] = k % 10 / 1;

  strcpy(m_str, u8x8_u8toa(deger[0], 1));
  strcat(m_str, u8x8_u8toa(deger[1], 1));
  strcat(m_str, u8x8_u8toa(deger[2], 1));
  strcat(m_str, u8x8_u8toa(deger[3], 1));

  u8g2.firstPage();
  do
  {
    u8g2.setFont(u8g2_font_7Segments_26x42_mn);
    u8g2.drawStr(0, 63, m_str);
  } while ( u8g2.nextPage());
}
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

Powered by EzPortal