Даташит (datasheet) - это документ, обычно в формате pdf, который полностью описывает какой-то компонент. Например, вот даташит на контроллер, который стоит в Arduino UNO. Ищите маркировку на камне и пишите запрос в гугл "маркировка datasheet". Например, "ATmega328p datasheet".
с дата щитом проблема написал такой код. Не удобно, но что-нибудь придумаю. #include <LiquidCrystal.h> /* Константа: высота символа в точках */ enum { SYMBOL_HEIGHT = 8 }; /* Описываем наши собственные символы в виде массивов битовых масок. * Каждый символ - это восемь масок по пять бит. */ byte arnie[SYMBOL_HEIGHT] = { B10101, B11111, B10111, B11111, B11111, B11111, B11110, B00000, }; byte skull_and_bones[SYMBOL_HEIGHT] = { B01110, B11111, B10001, B10001, B10001, B10001, B10001, B11111, }; byte e[SYMBOL_HEIGHT] = { B01110, B11111, B10001, B10001, B10001, B10001, B11111, B11111, }; byte w[SYMBOL_HEIGHT] = { B01110, B11111, B10001, B10001, B10001, B11111, B11111, B11111, }; byte q[SYMBOL_HEIGHT] = { B01110, B11111, B10001, B10001, B11111, B11111, B11111, B11111, }; byte r[SYMBOL_HEIGHT] = { B01110, B11111, B10001, B11111, B11111, B11111, B11111, B11111, }; byte lightning[SYMBOL_HEIGHT] = { B01110, B11111, B11111, B11111, B11111, B11111, B11111, B11111, }; byte s[SYMBOL_HEIGHT] = { B01110, B10101, B11001, B11111, B10011, B10101, B11001, B11111, }; /* Константы размеров экрана. Нужны для того, чтобы размер экрана * менять только в одном месте, а не по всему коду. Везде, где * результат вывода на дисплей должен зависеть от размера экрана, * следует использовать эти константы. */ enum { LCD_WIDTH = 16, LCD_HEIGHT = 2 }; /* Объявляем объект нашего дисплея */ LiquidCrystal lcd(13, 11, 7, 6, 5, 4); void setup() { { /* Регистрируем собственные символы с кодами 0, 1 и 2 */ lcd.createChar(0, arnie); lcd.createChar(1, skull_and_bones); lcd.createChar(2, e); lcd.createChar(3, w); lcd.createChar(4, q); lcd.createChar(5, r); lcd.createChar(6, lightning); lcd.createChar(7, s); /* Начинаем работу с дисплееем */ lcd.begin(LCD_WIDTH, LCD_HEIGHT); } } void loop() { lcd.setCursor(0, 1); lcd.print(" \7\1"); // угадай, кто на экране delay(3600000); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \7\2"); // угадай, кто на экране delay(3600000); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \7\3"); // угадай, кто на экране delay(3600000); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \7\4"); // угадай, кто на экране delay(3600000); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \7\5"); // угадай, кто на экране delay(3600000); lcd.setCursor(0, 1); lcd.print(" "); // угадай, кто на экране lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \7\6"); // угадай, кто на экране delay(3600000); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \6"); // угадай, кто на экране delay(17280000); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \5"); // угадай, кто на экране delay(17280000); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \4"); // угадай, кто на экране delay(17280000); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \3"); delay(17280000); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \2"); delay(17280000); lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" \1"); delay(17280000); lcd.print(" "); }
Тему не перепутали? Вроде речь шла о контроллере аккумулятора А что касается Вашего кода - пора изучать структуры данных и циклы, тогда код сократится в размерах в разы, а читать его будет легче и понятней.