секундомер с большими цифрами
- Войдите на сайт для отправки комментариев
Вс, 28/07/2019 - 12:55
arduino uno и дисплей LCD2004A , по идее должны бежать большие секунд, вместо секунд на экране квадратики из точек меняются, подскажите где ошибка.
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F, 20, 4); void setup() { lcd.begin(); } void loop(){ printSEC(millis()/1000); // вывод числа секунд после сброса } void printSEC(int rpm) { int m , c, d, u, number; number = rpm; if (number > 999) { m = (number - (number % 1000)) / 1000; number = number % 1000; } else { m = 0; } if (number > 99) { c = (number - (number % 100)) / 100; number = number % 100; } else { c = 0; } if (number > 9) { d = (number - (number % 10)) / 10; number = number % 10; } else { d = 0; } u = number; lcd.setCursor(0, 0); lcd.print("SEC:"); printNumber(m, 4); printNumber(c, 7); printNumber(d, 10); printNumber(u, 13); } void printNumber(int value, int col) { if (value == 0) { custom0(col); } if (value == 1) { custom1(col); } if (value == 2) { custom2(col); } if (value == 3) { custom3(col); } if (value == 4) { custom4(col); } if (value == 5) { custom5(col); } if (value == 6) { custom6(col); } if (value == 7) { custom7(col); } if (value == 8) { custom8(col); } if (value == 9) { custom9(col); } } void custom0(int col) { lcd.setCursor(col, 0); lcd.write(2); lcd.write(8); lcd.write(1); lcd.setCursor(col, 1); lcd.write(2); lcd.write(6); lcd.write(1); } void custom1(int col) { lcd.setCursor(col,0); lcd.write(32); lcd.write(32); lcd.write(1); lcd.setCursor(col,1); lcd.write(32); lcd.write(32); lcd.write(1); } void custom2(int col) { lcd.setCursor(col,0); lcd.write(5); lcd.write(3); lcd.write(1); lcd.setCursor(col, 1); lcd.write(2); lcd.write(6); lcd.write(6); } void custom3(int col) { lcd.setCursor(col,0); lcd.write(5); lcd.write(3); lcd.write(1); lcd.setCursor(col, 1); lcd.write(7); lcd.write(6); lcd.write(1); } void custom4(int col) { lcd.setCursor(col,0); lcd.write(2); lcd.write(6); lcd.write(1); lcd.setCursor(col, 1); lcd.write(32); lcd.write(32); lcd.write(1); } void custom5(int col) { lcd.setCursor(col,0); lcd.write(2); lcd.write(3); lcd.write(4); lcd.setCursor(col, 1); lcd.write(7); lcd.write(6); lcd.write(1); } void custom6(int col) { lcd.setCursor(col,0); lcd.write(2); lcd.write(3); lcd.write(4); lcd.setCursor(col, 1); lcd.write(2); lcd.write(6); lcd.write(1); } void custom7(int col) { lcd.setCursor(col,0); lcd.write(2); lcd.write(8); lcd.write(1); lcd.setCursor(col, 1); lcd.write(32); lcd.write(32); lcd.write(1); } void custom8(int col) { lcd.setCursor(col, 0); lcd.write(2); lcd.write(3); lcd.write(1); lcd.setCursor(col, 1); lcd.write(2); lcd.write(6); lcd.write(1); } void custom9(int col) { lcd.setCursor(col, 0); lcd.write(2); lcd.write(3); lcd.write(1); lcd.setCursor(col, 1); lcd.write(7); lcd.write(6); lcd.write(1); }
Сделайте сначала вывод одной цифры безо всякого бегания - статично. Потом вывод одного числа. Тоже статично. А там уж и бегать начнёте.
это я уже пробовал
результат тот же 8 рядов по 3 полосы длинной в символ
Так вот, сначала это отладьте. А пока не отладите, дальше не лезьте. Так всегда делается, никто не наваливает всё в одну кучу.
Не вижу где в скетче происходит определение символов, которые потом выводятся через write(...)
уже исправился))) Работает все)))) Вот код если кому интересно