Arduino Polska Forum

Pełna wersja: Rozłożenie liczby 8 cyfrowej na tablicę
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam 
Mam mały problem z napisaniem kodu, który liczbę zapisaną jako np. 00010001 rozłożyłby mi na tablicę która wyglądałaby tak: {0, 0, 0, 1, 0, 0, 0, 1}.
Mój kod wygląda w tej chwili tak:
Kod:
void rozdz(int lic){
 int el[8];
 for(int a=7;a>=0;a--){
   el[a]=lic%10;
   lic /= 10;
 }
 for(int a=0;a<8;a++){
   Serial.print(el[a]);
   delay(500);
 }
}

void setup() {
 Serial.begin(9600);
 rozdz(00010001);
}

void loop() {

}

Nie wiem z jakiego powodu, monitor wypluwa mi 00004097. Próbowałem wstawić jedynkę na początek przypuszczając że może to być wina liczby zaczynającej się od zera (100010001), wynik to 00002065, gdy wstawiłem 2 (200010001) dostałem 0 0 0 0 -5 -8  -7 -1... Mógłby mi ktoś wytłumaczyć skąd to się bierze i jak to naprawić? Z góry dziękuję za pomoc
Zrób stringa z liczby. Jestem programistą PHP, a w arduino dopiero zaczynam, ale na bank jest możliwość przekształcenia typu zmiennej i następnie podzielenie jej na części. Z tego co wyczytałem to przyda ci się funkcja trim(). A wychodzą ci jakieś egzotyczne wyniki bo ty dzielisz tą liczbę: el[a]=lic%10;
Już wiem co było przyczyną. Nie zwróciłem zupełnie uwagi na typ zmiennej którą wprowadzam do funkcji - próbowałem wprowadzić liczbę 9-cyfrową do zmiennej typu integer... Po zmienieniu tego na unsigned long wszystko działa.

(05-03-2016, 20:35)Magikkomputerowy napisał(a): [ -> ]A wychodzą ci jakieś egzotyczne wyniki bo ty dzielisz tą liczbę: el[a]=lic%10;

To nie dzielenie, to funkcja modulo (reszta z dzielenia liczby przez daną)