Arduino Polska Forum

Pełna wersja: Problem z wyświetleniem danych
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Cześć.
Mam taki problem.

Potrzebuję  liczbę 1234 rozdzielić na 2 człony
1 człon(A) =(cyfta 3 oraz 4) = 34
2 człon(B) =(cyfta 1 oraz 2) = 12

dodatkowo każda cyfra musi być jako uint8_t

zmajstrowałem coś takiego
Kod:
long integer = 1234;
uint8_t digits[7]; //7 na wypadek większej liczby
for(int i = 0; i < 7; i++){
     digits[i] = integer % 10; 
     integer /= 10;    
Serial.print(digits[i]);

Na serialu otrzymuję liczbę 4321000

Teraz chciałbym wkleić  poszczególne cyfry do programu

Kod:
A = (digits[1], digits[0]);
B = (digits[3], digits[2]);

Serial.print("A-"); Serial.println(A);
Serial.print("B-"); Serial.Println(B);

Na wyjściu A otrzymuję  cyfrę  4 zamiast liczby 34
Na wyjściu B otrzymuję  cyfrę  2 zamiast liczby 12

Jak to rozwiązać ??
Ja napisałem to w ten sposób i działa bez problemu, ale zaznaczam że ta metoda nie jest najszybsza.
Edit: poprawiam kod bo przy liczbie większej niż 9999 liczba a będzie większa niż 99.
Kod:
void setup() {
  Serial.begin(9600);
  delay(100);
  long wej = 91234;

  byte a, b;
  a = long(wej%10000) / 100;
  b = long(wej) % 100; // reszta z dzielenia
  Serial.print("A-"); Serial.println(a);
  Serial.print("B-"); Serial.println(b);
}
Pozdrawiam.
Dzięki za odpowiedź kod działa ale problem jest z wyświetlaniem małych wartości do 10 pokazuje takie krzaki Sad
[attachment=1001][attachment=1002][attachment=1003]

Wygląda na to że nie mogę używać mnożenia, dzielenia i innych.
Muszę podstawić cyfry osobno

A = (3)(4) cyfra
B = (1)(2) cyfra
(29-04-2020, 20:01)Osiasty napisał(a): [ -> ]Dzięki za odpowiedź kod działa ale problem jest z wyświetlaniem małych wartości do 10 pokazuje takie krzaki Sad


Wygląda na to że nie mogę używać mnożenia, dzielenia i innych.
Muszę podstawić cyfry osobno

A = (3)(4) cyfra
B = (1)(2) cyfra
Wiesz co może zamień te liczby a i b z byte do unsigned int albo long bo może się zmienne przeładowują.