Для университета нам нужно сделать игру в Unity, которая будет управляться с помощью Arduino. Моя идея была хакерской игрой, в которой Arduino выступает в роли «хакерского устройства» при взломе чего-либо в игре. У arduino будет экран, и на этом экране будет интерфейс командной строки c, который позволяет мне вводить простые команды для «взлома», но у меня были проблемы с текстом и его очисткой.
Я был в состоянии использовать единицу для отправки печатных символов на дисплей, а также функцию возврата на одну позицию (нажатие клавиши «backspace» удалит последний символ в строке)
Сначала у меня возникла проблема с очисткой всего текста при записи (вызов tft.print не удаляет предыдущий текст). Я использовал fillScreen, который был медленным. Я обнаружил, что setTextColor имеет второй аргумент, который позволяет мне просто установить весь определенный цветной текст в другой цвет. Если установить черный цвет, это, по сути, очистит его.
Это привело к его немедленному обновлению при записи на экран, но теперь у меня возникла новая проблема, при этом backspace больше не будет.
Насколько я понимаю, что при удалении символа его цвет не будет обновляться при вызове setTextColor, оставляя его на экране до тех пор, пока не будет вызван рестарт / fillScreen.
Я не совсем уверен, как решить эту проблему, и все поисковые запросы Google превращаются немного, чтобы помочь.
Вот мой код для обновления текста:
void updateString(char c){
tft.setTextColor(WHITE,BLACK);
if(c!='<'){
//Add new character to end of string
str.concat(String(c));
}
else if(c=='<' && str.length()>2){
//Remove last character in string
str.remove(str.length()-1);
}
//Set cursor back to 0,0
tft.setCursor(0,0);
//Display text
tft.print(str);
}
Буду признателен за любую помощь.