hô hô không nói em, em đang có con V bit 60, với 90 luôn á :D chơi mica cho đẹp đại ca, mới nghiên cứu cách chạy và sơn cái chử đen đỏ như tụi nhật nè
Printable View
hô hô không nói em, em đang có con V bit 60, với 90 luôn á :D chơi mica cho đẹp đại ca, mới nghiên cứu cách chạy và sơn cái chử đen đỏ như tụi nhật nè
đề nghị cụ thay luôn 4 con ốc giữ LCD cho đẹp ạ
Do CT không tìm được ốc lục giác inox đẹp mà nhỏ cho nó, nên dùng tạm. Là phiên bản thử nghiệm nên tạm chấp nhận vậy.
Lên đèn ;)
Đính kèm 26465
Cho nó vào cái box cũng thấy gúm. Đẹp mỗi cái connector :D.
Đính kèm 26466
Lục giác 3 mm inox dài các cở (dân RC mừ) hum nào CKD về ngoại ghé đưa cho
Phay chữ xấu vãi http://www.pic4ever.com/images/onion048.gif
Lâu lắm, nay có việc với món này nên lôi nó lên, làm tươi nó lại xíu.
Sẽ có nhiều bạn thắc mắc, giờ Graphic LCD nó đâu có đắt mà là cái BIG font làm cho cho nó cực.
Đúng là G-LCD nó rẻ hơn sưa rất nhiều. Nhưng sao rẻ bằng text LCD :D, kế đó là hiển thị trên G-LCD mà muốn nó ngộ nghĩnh thì cũng tốn lắm công sức.
Vậy nên trong dự án này có thể nói, vì mấy lý do sau:
- Rẻ và nhất là đơn giản, dễ thay thế. Vì không dùng nhiều lắm, nhưng thấy hầu hết các text LCD nó giao tiếp giống nhau. G-LCD thì khác, mỗi chip điều khiển có thu viện riêng :)
- Cần hiển thị ký tự lớn, dễ nhìn từ xa. Nhưng mấy cái LCD thì ngoài loại đặc biệt ra, không có cái nào ký tự nó to cả. Còn nếu dùng LED 7 đoạn thì cũng phức tạp không kém.
- Quan trọng nhất là vì người làm thích làm vậy :D
Liên quan đến dự án này có mấy phần chính
- 1. Hiển thị LCD, gồm BIG font và các thông số khác.
- 2. Giao tiếp qua Key bad
- 3. Xuất xung cho step.
Tạm thời mình sẽ trao đổi trước vụ BIG font rồi tới key bad. Phần xuất xung thì có thể mình sẽ thử nghiệm 2 giải pháp. Và nếu có sẽ được tách ra thành chủ đề khác cho tiện.
- Xuất xung đơn giản made in "tự tui", ai ai cũng có thể thử và làm được.
- Xuất xung với gia tốc qua thư viện AccelStepper, nhược điểm là tần số bị giới hạn hơi thấp.
Phần xuất xung có gia tốc và tốc độ cao hơn được mình tự viết từ phương trình gia tốc, vẫn chưa được hoàn thiện lắm về tốc độ. Nhưng so với AccelStepper thì đã cải thiện nhiều. Tần số có thể đạt 7kHz (đã dùng thực tế) và 10kHz với bản Arduino MOD, và 12kHz max (chưa thử, lý thuyết là vậy).
Tất nhiên do xuất xung trên MCU 8bit tốc độ rùa bò nên phần jitter là khó mà tránh được. Jitter nặng đến mức nào thì mình chưa có đo.
Để hiển thị được ký tự lớn hơn bình thường trên text LCD, mình sẽ dùng 9 ô text để kết hợp lại thành một ký tự. Mỗi ô text mặc định như text LCD mình dùng là 5x8 pixel.
Hay nói cách khác, mình dùng 9 ô text (3x3 ô (5x8 pixel)) làm 1 ô ký tự.
Tuy nhiên, có một số ký tự sẽ có nét giữa, do đó, để cân đối hơn mình chỉ dùng 3x2.5 ô để dựng ký tự. Tất nhiên, cân đối thế nào là theo chủ quan của người thực hiện.
Nhìn hình bên dưới sẽ dể hình dung hơn.
Đính kèm 65788
Trong đó
- phần màu đen thể hiện mỗi ô ký tự trên text LCD, độ phân giải là 5x8 pixel cho mỗi ô.
- phần màu vàng thể hiện ký tự (BIG font). Trong hình là số 1.
Nếu như dùng text LCD 4x20 (4 dòng 20 cột) thì sẽ thế nào?
Mình bố trí được 5 ký tự và 1 dấu thập phân dạng BIG font. Ngoài ra còn trống 1 hàng để có thể hiển thị nội dung như bình thường. Xem hình dưới
Đính kèm 65789
Vì mục đích chỉ hiển thị các con số, nên mình tập trung vào các số 0-9, tất nhiên việc xây dựng các ký tự khác cũng dựa trên cùng phương pháp như thế.
Lập bảng ký số như hình, tất nhiên, phải có thêm C, K và D :D
Đính kèm 65790
Sau đó ta tìm điểm chung của các ô, từ bảng ký số như trên thì ta gom lại được mấy ô đặc trưng sau.
Đính kèm 65791
Tiến hành đánh số cho mấy ô đặc trưng, tạm gọi là ô ký tự BIG font :D
Đính kèm 65792
Ghép các ô đặc trưng vào ô ký tự BIG font
Đính kèm 65796
Đính kèm 65797
Các ký tự, ký số khác cũng làm tương tự.
Để định nghĩa lại các ô đặc trưng (ô ký tự BIG font), để có thể hiển thị trên text LCD thông thường. Quy ước là điểm đen là 1, điểm sáng là 0. Từ đó, như hình ta được
Đính kèm 65798
Có code thế này
* Phần code đã được hiệu chỉnh, cho đẹp hơn. Khác với mô tả hình ảnh bên trên.
Lặp lại quá trình trên cho các ô, ta có codeMã:// char 0
{ B00001,
B00011,
B00111,
B01111,
B11111,
B00000,
B00000,
B00000},
Mã:// Define new Char
byte BigFont[8][8] = {
// char 0
{ B00001,
B00011,
B00111,
B01111,
B11111,
B00000,
B00000,
B00000},
// char 1
{ B10000,
B11000,
B11100,
B11110,
B11111,
B00000,
B00000,
B00000},
// char 2
{ B11111,
B11111,
B11111,
B11111,
B11111,
B00000,
B00000,
B00000},
// char 3
{ B00100,
B01110,
B01110,
B01110,
B00100,
B00000,
B00000,
B00000},
// char 4
{ B11111,
B01111,
B00111,
B00011,
B00001,
B00000,
B00000,
B00000},
// char 5
{ B11111,
B11110,
B11100,
B11000,
B10000,
B00000,
B00000,
B00000},
// char 6
{ B10000,
B11000,
B11100,
B11110,
B11111,
B11111,
B11111,
B11111},
// char 7
{ B00001,
B00011,
B00111,
B01111,
B11111,
B11111,
B11111,
B11111},
};
Như thế vẫn chưa hiển thị được.
Như trên mới tạo được 10 ô ký tự BIG font. Để hiển thị được ta phải ghép các ô này lại, hiển thị trong 9 ô.
Như những hình minh họa phía trên các bạn để ý phần số màu vàng ở mỗi ô. Đó là thứ tự ô BIG font được sử dụng để hiển thị chữ lớn.
VD, với số 1, ta sẽ ghép các ô
0, 9, 8
8, 9, 8
2, 2, 2
Các ô khác cũng tương tự.
Từ đó lập được ma trân 13 dòng, 9 cột như sau
Lý do có 13 dòng vì có thêm 03 ký tự là C, K và D :DMã:byte BigChar[13][9] = {
// Num 0
{7, 2, 6, 9, 8, 9, 4, 2, 5},
// Num 1
{0, 9, 8, 8, 9, 8, 2, 2, 2},
// Num 2
{0, 2, 6, 7, 2, 5, 2, 2, 2},
// Num 3
{0, 2, 6, 8, 2, 9, 4, 2, 5},
// Num 4
{9, 8, 9, 4, 2, 9, 8, 8, 2},
// Num 5
{9, 2, 2, 4, 2, 6, 4, 2, 5},
// Num 6
{7, 2, 1, 9, 2, 6, 4, 2, 5},
// Num 7
{2, 2, 9, 8, 7, 5, 8, 2, 8},
// Num 8
{7, 2, 6, 9, 2, 9, 4, 2, 5},
// Num 9
{7, 2, 6, 4, 2, 9, 4, 2, 5},
// Char C
{7, 2, 1, 9, 8, 8, 4, 2, 5},
// Char D
{9, 2, 6, 9, 8, 9, 2, 2, 5},
// Char K
{9, 8, 7, 9, 9, 8, 2, 8, 1}
};
Tạm thế đã, để test lại code mẫu rồi úp lên.