![]() |
![]() |
#6 |
Junior Member
Регистрация: 28.09.2014
Сообщений: 4
Вес репутации: 0 ![]() |
![]()
Победа!
Выкладываю работающий скетч для Arduino и скрипт на python По поводу скетча, для экрана 20х4, умеет работать с русским языком. Функцию перекодировки взял у DiHalt, LiquidCrystalRus как я понял не умеет работать с экранами 20х4 плюсом же идут мелкие не понятные баги. Скетч: Код:
#include <LiquidCrystal.h> /******/ //Таблица перекодировки в русские символы. static const unsigned char PROGMEM convert_HD44780[64] = { 0x41,0xA0,0x42,0xA1,0xE0,0x45,0xA3,0xA4, 0xA5,0xA6,0x4B,0xA7,0x4D,0x48,0x4F,0xA8, 0x50,0x43,0x54,0xA9,0xAA,0x58,0xE1,0xAB, 0xAC,0xE2,0xAD,0xAE,0xAD,0xAF,0xB0,0xB1, 0x61,0xB2,0xB3,0xB4,0xE3,0x65,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0x6F,0xBE, 0x70,0x63,0xBF,0x79,0xE4,0x78,0xE5,0xC0, 0xC1,0xE6,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7 }; static uint8_t lcd_rus(uint8_t c) { if (c > 191) { c -=192; c= pgm_read_byte(&convert_HD44780[c]); } return c; } /******/ char s[21]; int column = 0; int rows = 0; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup(){ lcd.begin(20, 4); lcd.cursor(); Serial.begin(115200); } void loop() { while(1) { while(Serial.available() == 0); s[column] = lcd_rus(Serial.read()); if(s[column] == '\n' || column > 19) { s[column] = '\0'; column = 0; lcd.print(s); if(rows >= 3) rows = 0; else rows++; lcd.setCursor(0, rows); Serial.println(s); break; } column++; } } Скрипт Python Код:
#!/usr/bin/python # -*- coding: utf-8 -*- import serial import time import os ser = serial.Serial('/dev/ttyUSB0', 115200) str = unicode("Привет cyber-place.ru\nМой ник: barmaley\n", "UTF-8") str = str.encode('CP1251') ser.write(str) time.sleep(2) ser.close() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|