Есть распиновка дисплея. Есть код. http://gfile.ru/a4Y2l еще код. http://gfile.ru/a6e53 Не могу его подключить, не к ардуино и код не могу зделать, кинул в библиотеки он ругается, мне хотя бы програмную часть помочь. Ну и так же просто для обсуждения, поиском пользовался как подключить экран ну это все что накопал, буду рад вашей помощи.
Ссылки битые. VDD, VSS - должно быть питание. SDA, SCL - шина I2C. http://roboforum.ru/forum2/topic4745.html#p69038
с кодом буду ковырятся завтра, меня смущает vdd1 и vdd2,3 на них прям питание? почему их 2шт? или на vdd1 только питание? зы: мне очень повезло с дисплеем (думаю про себя)
http://roboforum.ru/forum2/topic4745.html#p69038 - тут есть схема подключения. Судя по ней, VSS на землю, VDD к питанию.
Код (Text): In file included from sketch_may14b.ino:10: D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:12: error: 'uint8' does not name a type D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:15: error: variable or field 'buffer_toI2C' declared void D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:15: error: 'uint8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:15: error: 'buffer' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:15: error: 'uint8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:18: error: variable or field 'T191_gotoxy' declared void D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:18: error: 'int8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:18: error: 'int8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:19: error: variable or field 'T191_erase_y' declared void D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:19: error: 'int8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:20: error: variable or field 'T191_erase_area' declared void D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:20: error: 'int8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:20: error: 'int8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:20: error: 'int8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:23: error: 'uint8' has not been declared D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: variable or field 'T191_Bitmap' declared void D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: 'uint8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: 'uint8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: expected primary-expression before 'const' D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: 'uint8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: 'uint8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: In function 'void T191_init()': D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:32: error: 'Rst_Write' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:33: error: 'CyDelay' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:35: error: 'i2cLCDInit' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:35: error: 'buffer_toI2C' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: At global scope: D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:40: error: variable or field 'buffer_toI2C' declared void D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:40: error: 'uint8' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:40: error: 'buffer' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:40: error: 'uint8' was not declared in this scope ну и сам файл lcd_t191.h Код (Text): ///////////////////////////////////////////////////////////////////////////////////////////////////////////// // //Graphic LCD Motorola t191 //With CP866 codepage (Russian) // Ideas: from Saymonnet (kazus.ru) http://kazus.ru/forums/showthread.php?p=195019 post #356 /////////////////////////////////////////////////////////////////////////////////////////////////////////// #include <device.h> #include "Fonts.h" #define I2C_SLAVE_ADDR (0x3Cu) // devise addr 78>>1 see datasheet PCF8548.pdf uint8 i2cLCDInit[14] = {0x00,0x31,0x14,0x06,0x30,0x11,0x05,0x31,0x98,0x0C,0x30,0x0C,0x40,0x80}; // for T191_init() see datasheet PCF8548.pdf void T191_init(void); void buffer_toI2C( uint8 *buffer, uint8 length); // Sends data in LCD void T191_write_byte(char bytefor_data); // Sends byte in LCD void ascii_to_LCD(char simbol); // extract ascii from tables & write to LCD void T191_gotoxy(int8 xlph, int8 ylph); // Position cursor void T191_erase_y(int8 ylph); // erase the entire line (98 bytes) void T191_erase_area(int8 x,int8 yb,int8 length); // erase area from x to x+length void T191_clear_screen(void); void T191_Text( char *str); void T191_array(const char *buffer, uint8 length); // send 0x40 then data void T191_Bitmap(uint8 x,uint8 y, const char *buffer, uint8 length,uint8 heigth); //############################################################################################## ////////////////////////////////////////////////////////////////////////////////// void T191_init(void) { Rst_Write(0); // reset chip during 50ms CyDelay(50); Rst_Write(1); buffer_toI2C( i2cLCDInit,14); T191_clear_screen(); } ///////////////////////////////////////////////////////////////////////////////// void buffer_toI2C( uint8 *buffer, uint8 length) { I2C_UDB_M_MasterClearStatus(); /* Clear any previous status */ I2C_UDB_M_MasterWriteBuf(I2C_SLAVE_ADDR, (uint8 *) buffer, length, I2C_UDB_M_MODE_COMPLETE_XFER); while((I2C_UDB_M_MasterStatus() & I2C_UDB_M_MSTAT_WR_CMPLT) == 0u) { /* Wait write to be completed */ } } ///////////////////////////////////////////////////////////////////////////////// void T191_write_byte(char bytefor_data) { uint8 i2cData[2] = {0x40,0x00}; i2cData[1] = bytefor_data; buffer_toI2C( i2cData,2); } ////////////////////////////////////////////////////////////////////////////////// void ascii_to_LCD(char simbol) // extract ascii from tables & write to LCD { uint16 charpos; if (simbol<0x20)return; //if ((simbol<0xc0)&(simbol>0x7f))return; charpos=(simbol-0x20)*5; // uint8 i2cData[7] = {0x40,0x00}; // Table - the container for the character first 0x40v end 0x00 1 byte (always blank) memcpy( &i2cData[1],&TABLE5[charpos],5); // fill the container codes buffer_toI2C( i2cData,7); } ////////////////////////////////////////////////////////////////////////////////// void T191_gotoxy(int8 xlph, int8 ylph) // Position cursor { uint8 i2cLCDCLR[4] = {0x00,0x30,0x40,0x80}; i2cLCDCLR[2] = 0x40|(ylph&0x07); i2cLCDCLR[3] = 0x80|(xlph&0x7f); buffer_toI2C( i2cLCDCLR,4); } ////////////////////////////////////////////////////////////////////////////////// void T191_erase_y(int8 ylph) { T191_gotoxy(0,ylph); uint8 i2cerase_y[100] = {0x40,0x00 }; buffer_toI2C( i2cerase_y,99); } ////////////////////////////////////////////////////////////////////////////////// void T191_erase_area(int8 x,int8 yb,int8 length) { T191_gotoxy(x,yb); uint8 i2Cerase[100] = {0x40,0x00 }; buffer_toI2C( i2Cerase,length+1); } ////////////////////////////////////////////////////////////////////////////////// void T191_clear_screen(void) { T191_erase_y(0); T191_erase_y(1); T191_erase_y(2); T191_erase_y(3); T191_erase_y(4); T191_erase_y(5); T191_erase_y(6); T191_erase_y(7); T191_gotoxy(0,0); } ////////////////////////////////////////////////////////////////////////////////// void T191_Text( char *str) { uint8 glyph; while(*str != 0x00) { glyph = (uint8)*str; ascii_to_LCD(glyph); str++; } } ////////////////////////////////////////////////////////////////////////////////// void T191_array(const char *buffer, uint8 length) { uint8 I2Cbuffer[100] = {0x40,0x00 }; memcpy( &I2Cbuffer[1],buffer,length); // fill the container codes заполняем контейнер кодами buffer_toI2C( I2Cbuffer,length+1); } ////////////////////////////////////////////////////////////////////////////////// void T191_Bitmap(uint8 x ,uint8 y, const char *buffer, uint8 length,uint8 heigth) { uint8 i; for(i=0;i<(heigth);i++) { T191_gotoxy(x,y+i); T191_array( &buffer[length*i],length); } } я С мало знаю но ПХП нормально, помогите чуть подшаманить.
Вчера перед сном скачивал эту либу.. сдается мне что она не для ардуино. Там какието странные директивы препроцессора.. вечером могу причесать чтобы скомпилировалось. Но не факт что заработает. Экрана нету
uint8 менял на unt8_t он скушал но еще там начал ругаться на int8. void T191_gotoxy(int8 xlph, int8 ylph); // Position cursor Код (Text): D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:13: error: 'byte' does not name a type D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:16: error: variable or field 'buffer_toI2C' declared void ну и т.д.
мне тоже кажется что она не заработает писать заново мне кажется нужно. сейчас еще сам попробую взять за основу либу какую нибудь для дисплея и по ней может получиться.
Тут ему не нравится int8 и он не воспринимает эту строку как определение функции. Все uint8 замени на unsigned char int8 на byte. Можно сделать дефайном в начале: #define uint8 unsigned char #define int8 char
Код (Text): In file included from sketch_may14b.ino:10: D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: In function 'void T191_init()': D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:36: error: 'Rst_Write' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:37: error: 'CyDelay' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: In function 'void buffer_toI2C(unsigned char*, unsigned char)': D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:46: error: 'I2C_UDB_M_MasterClearStatus' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:47: error: 'I2C_UDB_M_MODE_COMPLETE_XFER' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:47: error: 'I2C_UDB_M_MasterWriteBuf' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:48: error: 'I2C_UDB_M_MasterStatus' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:48: error: 'I2C_UDB_M_MSTAT_WR_CMPLT' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: In function 'void ascii_to_LCD(char)': D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:62: error: 'uint16' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:62: error: expected `;' before 'charpos' D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:66: error: 'charpos' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:69: error: 'memcpy' was not declared in this scope D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: In function 'void T191_array(const char*, unsigned char)': D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:125: error: 'memcpy' was not declared in this scope sketch_may14b.ino: At global scope: sketch_may14b:17: error: '::main' must return 'int' sketch_may14b:23: error: '::main' must return 'int' sketch_may14b.ino: In function 'int main()': sketch_may14b:25: error: 'I2C_UDB_M_Start' was not declared in this scope sketch_may14b:26: error: 'CyGlobalIntEnable' was not declared in this scope sketch_may14b:45: error: 'CyDelay' was not declared in this scope Ошибок меньше но все же не утешительно, у меня есть еще дисплей от Nokia 1200, есть библиотека но она не для ардуино. http://yadi.sk/d/7kL1X0NZQAk6i может его легче будет прицепить?
Ладно в принципе все есть для инициализации дисплея, помогите теперь просто его про инициализировать. С чего начинать инициализацию именно I2C если туда включены. Как начать setup?