Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.10.2014, 20:48   #6
barmaley
Junior Member
 
Регистрация: 28.09.2014
Сообщений: 4
Вес репутации: 0
barmaley is an unknown quantity at this point
По умолчанию Re: hd44780 + Arduino + Openwrt

Победа!

Нажмите на изображение для увеличения
Название: 20141003_204305.jpg
Просмотров: 342
Размер:	297.1 Кб
ID:	1935

Выкладываю работающий скетч для 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()
barmaley вне форума   Ответить с цитированием
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:22. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика