![]() |
|
|
#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) | |
|
|