Mam plik tekstowy na karcie SD i próbuję wydrukować wiersze na monitorze szeregowym.
Ten kod działa:
#include <SPI .h> # zawiera <SD.h>File myFile; void setup () {Serial.begin (9600); Serial.print ("Inicjalizacja karty SD ..."); pinMode (10, WYJŚCIE); if (! SD.begin (4)) {Serial.println ("inicjalizacja nie powiodła się!"); powrót; } Serial.println ("inicjalizacja zakończona."); myFile = SD.open ("c.txt"); if (myFile) {Serial.println ("c.txt:"); while (myFile.available ()) {Serial.write (myFile.read ()); // TUTAJ PRAWO TEN WIERSZ} myFile.close (); } else {// jeśli plik nie został otwarty, wyświetla błąd: Serial.println ("błąd podczas otwierania c.txt"); }} void loop () {}
Jednak jeśli zamienię wiersz Serial.write (myFile.read ());
na Serial. println (myFile.read ());
, to kod nie zwraca prawidłowych wierszy.
Powinien zwrócić liczby podobne do tej (aczkolwiek 3000):
564564564564564564564464564664564
Jeśli używam Serial.println
, zwraca takie liczby (i nie zatrzymuje się na 3000 liniach):
13105454521310535452
A jeśli spróbuję wykonać int (myFile.read ())
, to liczba całkowita stanie się błędną liczbą (zwrócona przez println
), a nie te właściwe (zwrócone przez write
).\
Jak uzyskać numer zwracany przez Serial.write (myFile.read ());
ma być liczbą całkowitą?