Arduino Polska Forum
Pętla w pętli EEPROM - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Pętla w pętli EEPROM (/watek-p%C4%99tla-w-p%C4%99tli-eeprom)

Strony: 1 2


Pętla w pętli EEPROM - xaitras - 15-03-2023

Witam wszystkich!

Niechętnie korzystam z forum bo jestem zdania, że wszystkiego o nauczę się sam to zostanie mi na zawsze.. ale mnie przycisło  Big Grin

Ponieważ mam ciągły problem z pętlami muszę poprosić was o pomoc.
Mam taki kod:

Kod:
void read_rfid(){
int i=0;

for (i=0; i<8; i++){
     odczyt[i] = EEPROM.read(i); 
                   }     

}

I teraz chciałbym odczytać następne 8 miejsc w pamięci i następne 8 i następne aż i osiągnie 255.
Jak to zrobić? Wiem, że muszę mieć pętlę nadrzędną ale po 1000 kombinacji powoli się poddaję..  Sad


RE: Pętla w pętli EEPROM - kaczakat - 16-03-2023

Robisz dokładnie to co napisałeś w temacie, wstawiasz pętlę jedną w drugą, tą którą pokazałeś chcesz wykonać 32 razy:
Kod:
void read_rfid()
{

   for (int j=0;j<32;j++)
   {
    
     for (int i=0; i<8; i++)
     {
    //tylko tu uwzglednij przesuniecie o  j x 8
     odczyt[(j*8)+ i] = EEPROM.read((j*8)+ i);
     }   

   }
}



RE: Pętla w pętli EEPROM - xaitras - 16-03-2023

Dzięki bardzo! Zadziałało  Big Grin

Nie mogłem załapać jak mam wstawić to przesunięcie. Masz u mnie piwo

Mam jeszcze jeden problem. Odczytuję kody rfid (string) z pamięci eeprom jeden po drugim ale w jednym ciągu bez spacji i znaku końca linii. Gdzie wstawić /n żeby każdy kod pojawił się w osobnym wierszu na stronie?

Obstawiam, że gdzieś w okolicach:



Kod:
odczyt[(j*8)+ i]


Ale coś mi nie idzie..  Huh


RE: Pętla w pętli EEPROM - MadMrQ - 16-03-2023

Jeżeli potraktować pojedynczy bit jako literę, a 8 bitów jako słowo, to pętla:
Kod:
for (int i=0; i<8; i++)
składa z liter poszczególne słowa, a pętla:
Kod:
for (int j=0;j<32;j++)
składa z 32 słów tablicę.

Można z tego wywnioskować, że znak końca linii lub jakikolwiek inny wybrany, dzielący poszczególne odczyty, należy w programie umieścić wewnątrz drugiej pętli, po wykonaniu się pierwszej.


RE: Pętla w pętli EEPROM - xaitras - 16-03-2023

No właśnie próbuję i coś nie trybi..
\n nie działa, client.print("<br>"); nie działa..
Nie wiem co zastosować żeby podzielić te ciągi i ułożyć w wiersze.



RE: Pętla w pętli EEPROM - kaczakat - 16-03-2023

No jak drukujesz z tej pętli na serial to na końcu pętli z for j wstawiasz println, a jak sobie to zapisujesz do tablicy char to na indeksie 8 tablicy 9-elementowej.


RE: Pętla w pętli EEPROM - xaitras - 17-03-2023

Czyli tak?


Kod:
odczyt[(j*8)'\n'+ i]

odczyt[(j*8)+ i'\n']
Próbowałem na różne sposoby ale nie działa.


RE: Pętla w pętli EEPROM - kaczakat - 17-03-2023

Masz blok, który wykonuje się osiem razy, program leci linia po linii, czyli po tym bloku wstawiasz, wewątrz iteracji od j, a poza iteracją i:
Kod:
void read_rfid()
{

   for (int j=0;j<32;j++)
   {
   
     for (int i=0; i<8; i++)
     {
    //tylko tu uwzglednij przesuniecie o  j x 8
     odczyt[(j*8)+ i] = EEPROM.read((j*8)+ i);
     }   
    //!!!TUTAJ!!!
   }
}



RE: Pętla w pętli EEPROM - xaitras - 17-03-2023

Problem w tym że obojętnie w którym miejscu wstawię jakikolwiek znak końca linii, niestety nie dzieli ciągu na wiersze.


RE: Pętla w pętli EEPROM - MadMrQ - 17-03-2023

Jakim poleceniem wysyłasz dane i co je odbiera?