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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.11.2012, 23:37   #11
polybas
Member
 
Регистрация: 09.10.2012
Сообщений: 32
Вес репутации: 0
polybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to behold
По умолчанию

Как вам главная?

Нажмите на изображение для увеличения
Название: 20121113_213224.jpg
Просмотров: 575
Размер:	223.1 Кб
ID:	618
polybas вне форума   Ответить с цитированием
Старый 13.11.2012, 23:59   #12
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Прикольно. На главный экран мобилы похож
Admin вне форума   Ответить с цитированием
Старый 14.11.2012, 03:33   #13
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1604
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от polybas Посмотреть сообщение
очень баняльно
По количеству загруженных символов переноса (10) отправленных через UART в отладке ....
Хотя ишю альтернативу.
А что оригинально , главное просто. Правда не понял как вы определили 100%, видимо подсчитали заранее эти переносы

Проект интересен особенно в аппаратном плане. Я никогда не подключал дисплеи к ардуино. Меня интересуют вопросы как на него выводить и рисовать свои символы? Опишите подробнее как вы это делали, если конечно это не тайна.

Я вижу только картинки, а как это реализовано не описано
andr128 вне форума   Ответить с цитированием
Старый 14.11.2012, 11:48   #14
polybas
Member
 
Регистрация: 09.10.2012
Сообщений: 32
Вес репутации: 0
polybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to behold
По умолчанию

Цитата:
Сообщение от andr128 Посмотреть сообщение
А что оригинально , главное просто. Правда не понял как вы определили 100%, видимо подсчитали заранее эти переносы

Проект интересен особенно в аппаратном плане. Я никогда не подключал дисплеи к ардуино. Меня интересуют вопросы как на него выводить и рисовать свои символы? Опишите подробнее как вы это делали, если конечно это не тайна.

Я вижу только картинки, а как это реализовано не описано
Конечно не секрет...
Я могу в данный момент нарисовать схему, показать код но это все в некрасивом виде ...
Код собирал по всему интернету мусора вагон + урна... Уже преступил к переписываю всего проекта в веде классов и библиотек, чтобы читателям этой стати было легче использовать мои наработки в дальнейшем.

Как подключить дисплей, какие библиотеки использовать и как рисовать свои картинки символы постараюсь описать в следующей теме.
polybas вне форума   Ответить с цитированием
Старый 14.11.2012, 12:18   #15
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Вот еще один вариант использования дисплея от мобильного телефона с Arduino
Admin вне форума   Ответить с цитированием
Старый 14.11.2012, 12:36   #16
meloman
Junior Member
 
Регистрация: 01.11.2012
Сообщений: 28
Вес репутации: 0
meloman is a splendid one to beholdmeloman is a splendid one to beholdmeloman is a splendid one to beholdmeloman is a splendid one to beholdmeloman is a splendid one to beholdmeloman is a splendid one to beholdmeloman is a splendid one to behold
По умолчанию

Цитата:
Сообщение от polybas Посмотреть сообщение
Как вам главная?

Вложение 618
Супер! напоминает старенький siemens )
meloman вне форума   Ответить с цитированием
Старый 15.11.2012, 00:14   #17
polybas
Member
 
Регистрация: 09.10.2012
Сообщений: 32
Вес репутации: 0
polybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to behold
По умолчанию

Товарищи помогите...
Взялся я переписывать весь код скетча подключение LCD в библиотеки и столкнулся вот с чем ....
Зашиваю контроллер без библиотек все гуд ... экран показывает то что мне надо ... Переписываю с библиотекой ... не хочет работает хоть убей ... Код тот же. Проверка кода ничего не дала.
В чем проблема?
Код подключения экрана без библиотек:
Код:
#include "font.h"

uint8_t spiMosi = 9;
uint8_t spiSclk = 10;
uint8_t SSlcd  = 8;


void LCD_init(void)
{
  
  
  LCD_write_byte(0xE2, 0); // Reset cmd, see datasheet
  delay(1);           // Wait 1 ms for reset
  LCD_write_byte(0xA4, 0); // Power saver off
  LCD_write_byte(0x2F, 0); // Power control set: Booster : ON Voltage regulator : ON Voltage follower : ON
  LCD_write_byte(0xAF, 0); // LCD display on
  LCD_write_byte(0xB0, 0); // Page address set
}

void LCD_home(void)
{
  LCD_write_byte(0xB0, 0); // Page address set
  LCD_write_byte(0x10, 0); // Sets the DDRAM column address - upper 3-bit
  LCD_write_byte(0x00, 0); // lower 4-bit
}
void LCD_clear(void)
{
  LCD_home();
  for(int i=0;i<16*6*9;i++) LCD_write_byte(0,1);
}
void LCD_write_byte(byte data, byte cmd){
  digitalWrite(SSlcd, LOW);
  SPI_SendBit(cmd);
  for(int i=0;i<8;i++){
    SPI_SendBit(data&0x80);
    data<<=1;
  }
  digitalWrite(SSlcd, HIGH);
}

void LCD_write(unsigned char c)
{
  unsigned char line;
  unsigned char ch;
  if((c>=32)&&(c<=126))  c -= 32;
  else if((c>=192)&&(c<=255))  c -= 97;
  else  return;
 
  unsigned char *f = (unsigned char*)&(font66_8[c]);
  
  for(line=0;line<6;line++){
    ch = *f++;
    //if (LCD_inverse) ch ^=0xFF;
    LCD_write_byte(ch, 1);
  }
}

void LCD_write(String s)
{
  for (byte i=0; i<s.length(); i++) LCD_write(s[i]);
}

void LCD_write(char *buf, byte len)
{
  for (byte i=0; i<len; i++) LCD_write(buf[i]);
}


void LCD_setRow(uint8_t row)
{
  LCD_write_byte(0xB0 | (row & 0x0F), 0); // Page address set
}

void LCD_setCol(uint8_t col)
{
  LCD_write_byte(0x10 | (col>>4), 0); // Sets the DDRAM column address - upper 3-bit
  LCD_write_byte(0x00 | (col & 0x0F), 0); // lower 4-bit
}

void LCD_setPos(uint8_t row, uint8_t col)
{
  LCD_setRow(row);
  LCD_setCol(col*6);
}


void SPI_SendBit(byte Bit)
{
  digitalWrite(spiMosi, Bit);
  delayMicroseconds(1);
  digitalWrite(spiSclk, HIGH);
  delayMicroseconds(1);
  digitalWrite(spiSclk, LOW);
}

///////////////////////////////////////////// Main Code /////////////////////////////////////////


void setup()
{  
  pinMode(spiMosi,OUTPUT);
  pinMode(spiSclk,OUTPUT);
  pinMode(SSlcd,OUTPUT);
  //Serial.begin(115200);  
  LCD_init();
  LCD_clear();
  LCD_home();
  LCD_setPos(0,0);
  LCD_write("WILLI");
}

void loop()
{
  
  
}
Код библиотеки файл h
Код:
#ifndef LCD1280_h
#define LCD1280_h

#include "Arduino.h"
#include <inttypes.h>


class LCD1280
{

public:
	LCD1280(uint8_t cspin, uint8_t mosipin, uint8_t sclkpin, uint8_t ledpin); // init
	void init();
	void clear();
	void home();
	void setRow(uint8_t row);
	void setCol(uint8_t col);
	void setPos(uint8_t row, uint8_t col);
	void reverse(unsigned char inv);
	void display(unsigned char c);
	void display(char *buf, byte len);
	void display(String s);
	
	bool inverse;
	int font_size;
	
private:
	void writeByte(byte low_data, byte high_data);
	void spiBit(byte Bit);
	
	uint8_t m_cspin;
	uint8_t m_ledpin;
	uint8_t m_mosipin;
	uint8_t m_sclkpin;
	
};

#endif
Код библиотеки файл cpp
Код:
#include "LCD1280.h"

#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include "Arduino.h"

#include "font.h"


LCD1280::LCD1280(uint8_t cspin, uint8_t mosipin, uint8_t sclkpin, uint8_t ledpin)
{
	m_cspin=cspin;
	m_mosipin=mosipin;
	m_sclkpin=sclkpin;
	m_ledpin=ledpin;
	
	inverse=false;
	font_size=6; //default
	
	pinMode(m_cspin, OUTPUT);
	pinMode(m_mosipin, OUTPUT);
	pinMode(m_sclkpin, OUTPUT);
	

	
	
	//digitalWrite(m_cspin, HIGH);
	
	//pinMode(m_ledpin, OUTPUT);
	//digitalWrite(m_ledpin, HIGH); 
}

void LCD1280::init()
{
	
	
	//digitalWrite(m_cspin, HIGH);
	
	writeByte(0xE2, 0); // Reset
	delay(1);
	writeByte(0xA4, 0); // Power saver off
	writeByte(0x2F, 0); // Power control set
	writeByte(0xAF, 0); // LCD display on
	writeByte(0xB0, 0); // Page address set

	//clear();
	//setPos(0,0);
}


void LCD1280::clear()
{
	home();
	for(int i=0; i<16*6*9; i++) writeByte(0, 1);
}

void LCD1280::home()
{
	writeByte(0xB0, 0); // Page address set
	writeByte(0x10, 0); // Sets the DDRAM column address - upper 3-bit
	writeByte(0x00, 0); // lower 4-bit
}

void LCD1280::setRow(uint8_t row)
{
	writeByte(0xB0 | (row & 0x0F), 0); // Page address set
}

void LCD1280::setCol(uint8_t col)
{
	writeByte(0x10 | (col>>4), 0); // Sets the DDRAM column address - upper 3-bit
	writeByte(0x00 | (col & 0x0F), 0); // lower 4-bit
}

void LCD1280::setPos(uint8_t row, uint8_t col)
{
	setRow(row);
	setCol(col);
}

void LCD1280::display(unsigned char c)
{
  unsigned char line;
  unsigned char ch;
  if((c>=32)&&(c<=126)){
      c -= 32;
    }else if((c>=192)&&(c<=255)){
      c -= 97;
    }
  unsigned char *f = (unsigned char*)&(font6_8[c]);
  
  for(line=0;line<6;line++)
  {
    ch = *f++;
	if (inverse)
		ch ^=0xFF;
    writeByte(ch, 1);
  }
}

void LCD1280::display(String s)
{
  for (byte i=0; i<s.length(); i++)
  {
      display(s[i]);
  }
}

void LCD1280::display(char *buf, byte len)
{
  for (byte i=0; i<len; i++)
  {
      display(buf[i]);
  }
}

void LCD1280::reverse(unsigned char inv)
{
  if(inv)
    writeByte(0xA7, 0); // reverse display
  else
    writeByte(0xA6, 0); // normal display
}

void LCD1280::writeByte(byte low_data, byte high_data)
{
	digitalWrite(m_cspin, LOW);
	spiBit(low_data);
	for(int i=0;i<8;i++){
		spiBit(high_data&0x80);
		high_data<<=1;
	}
	

	
	digitalWrite(m_cspin, HIGH);  
}

void LCD1280::spiBit(byte Bit)
{
  digitalWrite(m_mosipin, Bit);
  delayMicroseconds(1);
  digitalWrite(m_sclkpin, HIGH);
  delayMicroseconds(1);
  digitalWrite(m_sclkpin, LOW);
}
код подключение с библиотекой:
Код:
#include <LCD1280.h>

LCD1280 WILLI_LCD(8, 9, 10, 9);


void setup()
{
  //Serial.begin(57600);
  WILLI_LCD.init();
  
  WILLI_LCD.clear();
  WILLI_LCD.home();
  WILLI_LCD.setPos(0,0);
  WILLI_LCD.display("WILLI");
    
}

void loop()
{
  
  delay(2000);
}
Все файлы в архиве
willi.zip
polybas вне форума   Ответить с цитированием
Старый 15.11.2012, 00:51   #18
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Какая ошибка выскакивает?
Admin вне форума   Ответить с цитированием
Старый 15.11.2012, 12:23   #19
polybas
Member
 
Регистрация: 09.10.2012
Сообщений: 32
Вес репутации: 0
polybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to beholdpolybas is a splendid one to behold
По умолчанию

Нет ошибки.
Компилируется и зашивается без проблем.
Вот только скетч с библиотеками не хочет работать с экраном... правильнее экран не хочет работать с командами что отправил контроллер.

Пробовал эмуляцию в Proteus. Кажется скетч с библиотеками имеет задержки по отправки команд больше. Хотя код команд инсталляции экрана тот же...

Неужели подводит среда разработки Arduino. Не хорошо....
polybas вне форума   Ответить с цитированием
Старый 15.11.2012, 12:33   #20
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Попробуй ArduinoIDE 0023
Admin вне форума   Ответить с цитированием
Ответ


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

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

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

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

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


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


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