I have an ebook which is converted to a .txt file saved on an sd card which is connected to the arduino. I'm trying to display the words from the book on a 16x2 lcd display on word at a time. It works mostly except when it reads a word that has an apostrophe or a pipe symbol it does not display correctly to the lcd display or the serial output.
For example the word "author's" will be displayed as "authorâs" (edit: there is actually two boxes between the "â" and the s that is not displaying on this forum) on both the lcd display and serial output.
I've spent an entire day now with this one problem hopefully there is a mistake someone can pick up on :/
#include <LiquidCrystal.h> #include <SPI.h> #include <SD.h> const int chipSelect = 53; const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); char nextChar; String wordBuffer = ""; void setup() { lcd.begin(16, 2); Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } Serial.print("Initializing SD card..."); // see if the card is present and can be initialized: if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); // don't do anything more: while (1); } Serial.println("card initialized."); // open the file. note that only one file can be open at a time, // so you have to close this one before opening another. File dataFile = SD.open("datalog.txt"); if (dataFile) { while (dataFile.available()) { nextChar = dataFile.read(); if (isWhitespace(nextChar)){ lcd.print(wordBuffer); Serial.println(wordBuffer); lcd.display(); delay(500); wordBuffer = ""; lcd.clear(); } else{ wordBuffer = wordBuffer + nextChar; wordBuffer.trim(); } } dataFile.close(); } // if the file isn't open, pop up an error: else { Serial.println("error opening datalog.txt"); } } void loop() { }