...ãŸãã¯èªåã®å¥œã¿ã«åã£ã奜ã¿ãšèžè ã䜿ã£ãŠèªåã®èªè»¢è»ãçºæããæ¹æ³-ãã©ãããªããŒããªã³ã¿ãŒã®ãã¡ãŒã ãŠã§ã¢ãæåããäœæããŸãããçŸæç¹ã§ã¯ããã¡ãŒã ãŠã§ã¢ã¯ãã§ã«å®å šã«æ©èœããŠããŸãã
Agilentã§è²©å£²ãããŠããMKSDLPããŒããåºæºãšããŠãã¡ãŒã«ãŒãåè·¯ãšãã¡ãŒã ãŠã§ã¢ã®ãœãŒã¹ã³ãŒããæäŸããŸãããããã¹ãŠãæåããäœæããããšãæ¯æããŠæåŠããŸããã
èšäºãéåžžã«é·ãããšãå€æããã®ã§ã2ã€ã®éšåã«åå²ããããšã«ããŸããããã®ããŒãã§ã¯ãã¿ããã¹ã¯ãªãŒã³çšã®èªå®¶è£œGUIã®èæ¯ãšèª¬æããããŸããæåŸã«ããããèªäœã®äž»é¡ãšGitHubãªããžããªãžã®ãªã³ã¯ããããŸãã
-ããŒã1ïŒ 1ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã
-ããŒã2ïŒ 2.USBãã©ãã·ã¥ãã©ã€ãäžã®ãã¡ã€ã«ã·ã¹ãã ã®æäœã3.ãã©ãããã©ãŒã 移åçšã®ã¹ããããŒã¢ãŒã¿ãŒå¶åŸ¡ã
-ããŒã3ïŒ 4ãããã¯ã©ã€ããã£ã¹ãã¬ã€ã«ã¬ã€ã€ãŒã®ç»åã衚瀺ããã5.ç §æãšãã¡ã³ã®å¶åŸ¡ãèšå®ã®èªã¿èŸŒã¿ãšä¿åãªã©ãããããå°ããªããšã6.å¿«é©ããšäŸ¿å©ãã®ããã®è¿œå æ©èœã
ç解ãæ·±ããããã«ããã©ãããªããŒLCD 3Dããªã³ã¿ãŒã®äœæ¥ã«ã€ããŠãæ £ããŠããªã人ã®ããã«ç°¡åã«èª¬æããŸãã
ã»ãšãã©ã®ãæ¶è²»è
åãããã©ãããªããŒããªã³ã¿ãŒã®ä»çµã¿ã®ç°¡åãªèª¬æ
â LCD- ( , 5.5" 25601440 ( â 47.25 ). 405 . , FEP-. , «» . , -. , «» , . . , , . , . , .
ããã¯ã°ã©ãŠã³ã
ã©ããã£ãŠããã«ãã©ãçããã¡ãŒã«ãŒã®ãœãŒã¹ã³ãŒããèªåã§åŸ®èª¿æŽããã®ã§ã¯ãªãããªãèªåã®ãã¡ãŒã ãŠã§ã¢ãæžãå§ããã®ãã
è£è©±ãé·ãã£ãã®ã§ã¹ãã€ã©ãŒã®äžããå€ããŸãã
5 3D-. , , . FDM-, â Anet A8. - , , . - â - , , . , . - â Anycubic Photon S. , .
, , «» â , . , .., FDM-. , , â 11565 , :) «» , , , . . «» â . , , 20-30 . , â , . .
. , , .. , , , , , . . , (), . , , . - . , 3D- â MKS DLP. : , (5.5", 25601440) (3.5", 480320). â ! , , .
, , . , - , , . . , . ⊠-, CMSIS HAL ST ( STM32F407). -, Marlin 3D. â Marlin 3D â FDM 3D-. 6 , , , G- - . 3 . . â G- . , . , FDM- .
, GUI- , . , , - .
, , «» â , . , .., FDM-. , , â 11565 , :) «» , , , . . «» â . , , 20-30 . , â , . .
. , , .. , , , , , . . , (), . , , . - . , 3D- â MKS DLP. : , (5.5", 25601440) (3.5", 480320). â ! , , .
, , . , - , , . . , . ⊠-, CMSIS HAL ST ( STM32F407). -, Marlin 3D. â Marlin 3D â FDM 3D-. 6 , , , G- - . 3 . . â G- . , . , FDM- .
, GUI- , . , , - .
ã ããç§ãã¡ãæã£ãŠãããã®ïŒ
- MKS DLPãããã«ã¯ããã¶ãŒããŒãã3.5 "480x320ã€ã³ã¿ãŒãã§ã€ã¹ãã£ã¹ãã¬ã€ããã³5.5" 2560x1440ããã¯ã©ã€ããã£ã¹ãã¬ã€ãå«ãŸããŸãã
- ã¡ãŒã«ãŒããã®ãã€ãã£ããœãŒã¹
- ãã¶ãŒããŒãå³ïŒããã·ãã³ã³ããŒãã³ãã®ã¢ã¯ãã£ãå€ãšå ¬ç§°å€ã®ååãªãïŒ
ãã¶ãŒããŒãã¯STM32F407ãã€ã¯ãããã»ããµã«åºã¥ããŠããŸããããã¯ã©ã€ããã£ã¹ãã¬ã€ãå¶åŸ¡ããããã«ãããŒãã«ã¯äžåœã®ã¡ãŒã«ãŒGW1N-LV4LQ144ESã®FPGAãSDRAMãããã³2ã€ã®SSD2828MIPIã€ã³ã¿ãŒãã§ã€ã¹ããããå«ãŸããŠããŸãããã€ã¯ãããã»ããµã¯ã¬ã€ã€ã®ã€ã¡ãŒãžãFPGAã«é§åããFPGAã¯ãããSDRAMã«ä¿åããããããSSD2828ãä»ããŠè¡šç€ºãæŽæ°ããŸããã¡ãªã¿ã«ãã¡ãŒã«ãŒã¯ãœãŒã¹ã³ãŒãã§FPGAæ§æïŒãã¡ãŒã ãŠã§ã¢ïŒãæäŸããŠããŸãã:(ããã«ããã¶ãŒããŒãã«ã¯æ¬¡ã®ãã®ããããŸãïŒ
- é»æºå ¥å12ã24ãã«ã
- USB A /
- A4988
- Z â
- WiFi
- FLASH- W25Q64
- EEPROM- AT24C16
æµææ§ã¿ããããã«ä»ãã®ã€ã³ã¿ãŒãã§ãŒã¹ãã£ã¹ãã¬ã€ã¯ããã©ãããª40ãã³ã±ãŒãã«ã§æ¥ç¶ãããŠããŸãããã£ã¹ãã¬ã€ã³ã³ãããŒã©ãŒ-ILI9488ãã¿ããããã«ã³ã³ãããŒã©ãŒ-HR2046ïŒTSC2046ãšåæ§ïŒã
åšèŸºæ©åšãåæåããããã«ãSTM32CUBEMXããã°ã©ã ã䜿çšããŸãããããããç§ã¯ããããåŸãããçµæãçŽæ¥äœ¿çšãããå¿ èŠãªéšåãç§ã®ãœãŒã¹ã«æ¿å ¥ããŸãããåšèŸºæ©åšãæäœãããšãã¯ãSTã®HALã©ã€ãã©ãªã䜿çšããæé«é床ãåŸãå¿ èŠãããå Žåã¯ãã¬ãžã¹ã¿ãçŽæ¥æäœããŸããã
ãããã£ãŠãã¿ã¹ã¯ããããŸãããã®ãããã¯ããŠãŒã¶ãŒãç°¡åã«ãã©ãã·ã¥ãã©ã€ããããã¡ã€ã«ãå°å·ã§ããå¿ èŠããããŸããç§ã¯ãã®åé¡å šäœã倧ãŸãã«äž»èŠãªéšåã«åãã3ã€ã®åºçç©ãäœæããŸããã
ç§ã®ã³ãŒããã¢ãããŒãããçæ³çã§ãããšããåã«è¯ããšã¯èšããªããšããããšããããã«èŠåããããšæããŸããç§ã¯ã§ããéããã¬ã€ããŸããç§ã«ãšã£ãŠã®ããã°ã©ãã³ã°ã¯ãè·æ¥ãšããããã趣å³ã§ããã§ããããå³ããããåºæºã§å€æããªãã§ãã ããã
1.ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹
æåã¯è¡šç€ºã®åæåã§ãããããã§èå³æ·±ãããšã¯äœããããŸãããILI9488ã³ã³ãããŒã©ãŒã®æšæºã·ãŒã±ã³ã¹ã§ããç§ã¯ããããã€ãã£ããœãŒã¹ããåãé€ããŠãä»ã®ã¿ã€ãã®ãã£ã¹ãã¬ã€ã®åæåã³ãŒããåãåããŸããïŒããããããããã®ãœãŒã¹ã®FDMã©ã€ãããããã«æ®ã£ãŠããŸããïŒãããããç§ã¯ãã©ã³ããåãäžããŸããã
1.1ãã©ã³ã
ãããäžã«ã¯ãã€ã¯ãããã»ããµçšã®ãã©ã³ãã©ã€ãã©ãªããããããããŸããããããã®å€§éšåã¯ã¢ãã¹ããŒã¹ã®ãã©ã³ãã§åäœããç§ã¯ãããããŸã奜ãã§ã¯ãããŸãããããã¯ãæåãzãã®ããã«ããã¹ãŠã®æåã®å¹ ãæåãiããšåãã§ããå Žåã§ããç§ã¯ãã€ãŠç§ã®ããããããžã§ã¯ãã®1ã€ã«æ¯äŸãã©ã³ãã©ã€ãã©ãªãäœæããŸããããã©ã³ãããšã«2ã€ã®é åã䜿çšããŸããæåèªäœã®ãããããŒã¿ãå«ãé åãšãåæåã®å¹ ãå«ãé åã§ãããããŠããã©ã³ããã©ã¡ãŒã¿ãæã€å°ããªæ§é -é åãžã®ãã€ã³ã¿ããã©ã³ãã®é«ãããã©ã³ãã®æåæ°ïŒ
typedef struct
{
uint16_t *width;
uint8_t *data;
uint8_t height;
uint16_t symcount;
} LCDUI_FONT;
ãã®ãããªãã©ã³ãæ§æã¯ãã¢ãã¹ããŒã¹ã®ãããããããããå€ãã®ã¡ã¢ãªã¹ããŒã¹ã䜿çšããå¿ èŠãããããã«æãããŸãããããã¯å®å šã«æ£ããããã§ã¯ãããŸããããŸããã¢ãã¹ããŒã¹èªäœãä¿åããŒã¿ã®äœå°ãåŒãèµ·ãããŸããããšãã°ãé«ã8ãã¯ã»ã«ãšå¹ 5ãã¯ã»ã«ã®ãã©ã³ãã§ãæåãiãã«1ãã€ãïŒå¹ 1ããããšé«ã8ãããïŒã§ååãªå Žåã§ãã5ãã€ãã®ããŒã¿ïŒå¹ 5ããããšé«ã8ãããïŒãå¿ èŠã§ãã以æ¥å¹ ã¯åºå®ãããŠããŸãã次ã«ãååãšããŠããã®ãããªãã©ã³ãã§ã¯ãããŒã¿ã®ç·šææ¹æ³ã«å¿ããŠãåè¡ãŸãã¯ååã®ãã€ãå¢çã§äœçœ®åãããè¡ãããŸãã
ããšãã°ãåã5x8ãã©ã³ãã䜿çšããŸãããããããŒã¿ã1è¡ãã€ä¿åãããŠããå Žåãåè¡ã«3ããããè¶ éããŠããŸãããŸãã¯1æåããã3ãã€ãïŒ
ãŸãã¯ãåã«ããŒã¿ãæ ŒçŽãã7x12ãã©ã³ãã®å Žåãåããã4ããããŸãã¯æåããã3.5ãã€ãã®éå°ãªããŒã¿ããããŸã
ãç§ã®ã©ã€ãã©ãªã§ã¯ããããããŒã¿ã¯æåã«å¯ŸããŠé£ç¶ããŠããããã€ãå¢çã§ã®é 眮ã¯æåã®æ«å°Ÿã®ã¿ã§ãã
ããã«ãä¿åãããŠãããã©ã³ããµã€ãºããããã«å°ããããããšãã§ãããã1ã€ã®å°ããªããªãã¯ããããŸããæåã«ã¯ãããããŒã¿ããªãå ŽåããããŸãããåãã¹ã¿ã€ã«ã®å¥ã®æåãåç §ããŸããããšãã°ãããªã«æåãAãããBãããEãããKããªã©ã§ããåãã¹ã¿ã€ã«ã®ã©ãã³æåãžã®åç §ãæã€ããšãã§ããŸããããã¯ãæåå¹ ã®é åå ã®å¯Ÿå¿ããæåã®å¹ ã«è² ã®å€ãæå®ããããšã«ãã£ãŠè¡ãããŸããããã«è² ã®å€ãããå Žåããã®æåã®ç»åã¯äœçœ®ïŒå¹ * -1ïŒã®æåããååŸãããŸãã
é åå ã®æåãèŠã€ããæé ã¯æ¬¡ã®ãšããã§ãã
uint8_t* _lcdui_GetCharData(char c)
{
if (c < 32)
return 0;
if (c > 126)
c -= 65;
c -= 32;
if (c >= lcdui_current_font->symcount)
return 0;
uint16_t c1 = lcdui_current_font->width[c];
if (c1 & 0x8000)
c = (c1 & 0x7FFF);
uint16_t ch = lcdui_current_font->height;
int32_t i = 0, ptr = 0, bits = 0, line_bits = ch;
for (i = 0; i < c; i++)
{
if (lcdui_current_font->width[i] & 0x8000)
continue;
bits = lcdui_current_font->width[i] * line_bits;
ptr += bits >> 3;
if (bits & 0x07)
ptr++;
}
return &(lcdui_current_font->data[ptr]);
}
ããããã¹ãŠã«ããããã©ã³ãã®ããŒã¿éãå¢ããããšãããããŸããèšããŸã§ããªããããããŒã·ã§ãã«ã¿ã€ãã¯ããèªç¶ã«èŠããŸãã
ãã®ãããªãã©ã³ãã®ã¬ã³ããªã³ã°é床ã¯ããŠã£ã³ããŠåºåã®ããã«ããªããŸãšãã§ãããã£ã¹ãã¬ã€ã«ã¯ãæåã«åºåãŠã£ã³ããŠãç®çã®äœçœ®ã«ããæåã®ãµã€ãºã«å¶éããã³ãã³ããäžãããã次ã«æåå šäœã®ããŒã¿ã1ã€ã®ã¹ããªãŒã ã«æ³šã蟌ãŸããŸãããã¯ã»ã«ããšã«åå¥ã«åº§æšãèšå®ããå¿ èŠã¯ãããŸããã
ããšãã°ãäžã®åçã§ã¯ãéãããã¹ããšäžã®çœãç·ã¯ç§ã®ã©ã€ãã©ãªã«ãã£ãŠã¬ã³ããªã³ã°ãããçœãäžã®ç·ã¯ãã€ãã£ããœãŒã¹ã®æšæºã®arduinoã®ãããªã©ã€ãã©ãª
ã«ãã£ãŠã¬ã³ããªã³ã°ãããŸãããéãããã¹ãã¯äžã®çœãç·ãããæ°åéãã¬ã³ããªã³ã°ãããŸããã
åæã«ãç»åããããã°ã©ã ã§ããã«äœ¿çšã§ãããã©ã³ãé åãäœæããããã®ãŠãŒãã£ãªãã£ãçºæããå¿ èŠããããŸããã Photoshopã§ã¯ããã©ã³ãã®ãã¹ãŠã®æåã䜿çšããŠç®çã®é«ãã®ç»åãäœæããåæåã®æåŸã®åã®X座æšãæåã§ããã¹ããã¡ã€ã«ã«å ¥åããŠãããç»åãšãã®ããã¹ããã¡ã€ã«ã«ãŠãŒãã£ãªãã£ãèšå®ããŸããããã«ãããå¿ èŠãªé åãå«ã.cãã¡ã€ã«ãäœæãããŸãããã¡ãããå°ãé¢åã§ãããåçŽã§ãã
ããã¹ãã衚瀺ããæé ã¯ãç»é¢ã®æåŸã«ããæ°ããè¡ã«ããã¹ããæãè¿ããããŸãã¯ééããæ¹è¡æåã«ãã£ãŠããã¹ããæãè¿ãããšãã§ããå·Šãå³ãäžå€®ã«æããŠãããã¹ãã移åããªãé åãå¶éããããšãã§ããŸãïŒåãåãããŸãïŒããŸããèæ¯å¡è£ ãèæ¯ä¿åã§ã·ã³ãã«ã衚瀺ããããšãã§ããŸãã2çªç®ã®ãªãã·ã§ã³ã¯ã1ã€ã®ã¹ããªãŒã ã§æåããŒã¿ããã£ã¹ãã¬ã€ã«å ¥åããããšãã§ããªããªã£ããããåäœãé ããªããŸããã3ã4è¡ã®åºåãç®ã«èŠããªãã»ã©é«éã§ãã
1.2ã€ã³ã¿ãŒãã§ãŒã¹ç»åã®è¡šç€º
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§ã¯ãèæ¯ãã¢ã€ã³ã³ããã¿ã³ãªã©ã®ç»åã衚瀺ããå¿ èŠããããŸããæåã¯ãããŸãæ°ã«ããããã¹ãŠã®ç»åã.bmp圢åŒã§ããŒãäžã®8MBã®ãã©ãã·ã¥ã¡ã¢ãªã«ä¿åããããšã«ããŸããããããŠãç§ããã®ããã®æé ãæžããŸããããã¡ã€ã«ã¯16ããã圢åŒïŒR5 G6 B5ïŒã§ãšã³ãããŒãšã³ããŸãã¯ãšã³ãããŒãšã³ãã®è¡é ã§ä¿åããããã§ã«ã¬ã³ããªã³ã°ã«ãŒãã³ã«çŽæ¥äŸçµŠãããŠããå ŽåããããŸãããã ãã480x320ã®èæ¯ç»åã®ãµã€ãºã¯300KBãè¶ ããŠããŸãããã®ãã©ãã·ã¥ã¡ã¢ãªã®äžéšããã¡ãŒã ãŠã§ã¢ã¢ããããŒãå°çšã«ãªãããšãèæ ®ãããšã30åã®èæ¯ç»åããã¹ãŠã®ã¡ã¢ãªãå æããŸããããããããããã«èŠããŸããã念ã®ãããç§ãæãã§ããããããŸã å°ãªãã§ãããã ãããã¿ã³ãã¢ã€ã³ã³ãªã©ãå¿ èŠã§ãããã®ãããç»åãäœããã®å§çž®åœ¢åŒã«å€æããããšã«ããŸããã
å§çž®ã«ã¯å€ãã®ãªãã·ã§ã³ã¯ãããŸãããç»åãå€ããå°ãªããããŸãå§çž®ãããã¹ãŠã®ã¢ã«ãŽãªãºã ã¯ãé©åãªRAMïŒãã€ã¯ãã·ã¹ãã ã®æšæºã«ããïŒãŸãã¯é©åãªè§£åæéã®ãããããå¿ èŠãšããŸããäžæ¹ãç»åã¯ãã®å Žã§ã¯ã©ã³ãã解é€ããŠè¡šç€ºããå¿ èŠãããã衚瀺ãããšãã®ç»åã¯ã¯ããŒã«ã®é²è¡ç¶æ³ããŒã«äŒŒãŠããªãããšãæãŸããã§ãããããã£ãŠãç§ã¯RLEå§çž®ã«æ±ºããŸãã-1ãã€ãã¯ç¹°ãè¿ãã®æ°ããšã³ã³ãŒãããããã«ç¶ã2ã€ã¯è²ããšã³ã³ãŒãããŸãããã®ããã«ã.bmpãã¡ã€ã«ããã®æ¹æ³ã§å§çž®ãããç»åã«å€æãããŠãŒãã£ãªãã£ãäœæãããŸãããããããŒã¯4ãã€ãã®ã¿ã§æ§æãããŸã-ç»åã®å¹ ãšé«ãã¯2ãã€ãã§ããå¹³åããŠãèæ¯ç»åã¯ãã®æ¹æ³ã§5ã7åå§çž®ãããã¢ãã¯ãé åã®ãµã€ãºã«åŒ·ãäŸåããŸãïŒããã¯äºæ³ãããããšã§ãïŒãããšãã°ããã®ãããªç»åã¯å ã®307KBãã74KBã«çž®å°ãããŸããã
ããããããã¯-åã307ããæ倧23 KBïŒ
ã¡ãªã¿ã«ãç§ã®ãã¶ã€ããŒã¯ããã°ã©ããŒãããããã«ãã ããªãã§ã...
ç§ã¯ãã®çµæã«æºè¶³ããŸãããç»åã®ãã³ãŒããšè¡šç€ºã¯éåžžã«é«éã§ãããã«ããã¯ã°ã©ãŠã³ãç»åãããçŽ40ããªç§ã§ããããã§ç§ã¯ãã®ãªãã·ã§ã³ã«æ±ºããŸããã
ã¡ãªã¿ã«ããã£ã¹ãã¬ã€ã«ããŒã¿ãåºåããããã«DMAã¢ãŒãã«åãæ¿ããŠããåºåã®å éã¯ã»ãšãã©ãããŸããã§ããããã£ã¹ãã¬ã€ã¯å€éšã¡ã¢ãªãšããŠå€éš16ãããããŒã¿ãã¹ãä»ããŠæ¥ç¶ãããŠããŸããããã®ã¿ã€ãã³ã°ã¯ããªãæ²ãããããæåãã¯ã»ã«åºåã«å¯ŸããDMAåºåã®å©ç¹ã¯ã»ãšãã©ç¡å¹ã«ãªã£ãŠããŸãã
1.3GUIãã¬ãŒã ã¯ãŒã¯
ããã¹ãã衚瀺ãããçµµãæãããŸãã次ã«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®åºç€ãã©ã®ããã«ç·šæãããããèããŸãã
ã¿ããããã«ã䜿çšãããšããã¹ãŠãç°¡åã«ãªããŸãããã€ã¯ãã³ã³ãã¥ãŒã¿ã¯åžžã«ã¿ããããã«ã³ã³ãããŒã©ã«å²ã蟌ã¿ãããŒãªã³ã°ããæåŸã«ååŸãã4ã€ã®çµæãå¹³åããŠã衚瀺座æšã«å€æããŸãããããã£ãŠãã»ã³ãµãŒã®ç¶æ ã¯ãæŒãããŠãããã©ãããæŒãããŠããå Žåã¯ã©ãã«ããããªã©ããã€ã§ãããããŸããã¿ããããã«ãšããã°ã©ã ã®äž»èŠéšåã®éã®ãã1ã€ã®å±€ã¯ããã¿ã³ã®ã¯ãªãã¯ãåŠçããããã®æé ã§ããããã¯ãããªãé·ãéãç¹å®ã®æ¡ä»¶ã«å°ãé©å¿ããŠãããžã§ã¯ããããããžã§ã¯ããžãšããŸãã£ãŠããŸãã
ãããã©ã®ããã«æ©èœãããã®ç°¡åãªèŠçŽã§ã
«». (100-150 ). , «». , . , , «», . , «», «». «», «». - «» «», . ( «»), - . , , .
ã¿ããããã«ã¯å¯äžã®ã€ã³ã¿ãŒãã§ãŒã¹ãã¿ã³ãšããŠæ©èœãããããæŒããšããäºå®ã«å ããŠãã¯ãªãã¯ã®åº§æšãåæãããŸãã
ããã§ãããŸããŸãªã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãç»é¢ã«è¡šç€ºã§ããããã«ããããã«ãã¹ãŠãè¡ãå¿ èŠããããŸããããã¯ãã¯ãªãã¯ã«åå¿ããå Žåãšåå¿ããªãå Žåãã€ãã³ãã«ãã£ãŠæŽæ°ãããå Žåããµã€ãºãç»åãç°ãªãå Žåãªã©ã§ãã
æçµçã«ãç§ã¯ãã®ã¹ããŒã ã«ãã©ãçããŸãããã€ã³ã¿ãŒãã§ã€ã¹ã¯ãç»é¢ãšãã¿ã³ã®2ã€ã®äž»èŠãªã¿ã€ãã®èŠçŽ ã§æ§æãããŠããŸãã
ç»é¢ã¯ããã¿ã³ã®ãã«ã¹ã¯ãªãŒã³ã³ã³ããã®äžçš®ã§ããç»é¢ã«ã¯æ¬¡ã®ããããã£ããããŸãã
- èæ¯ç»å
- èæ¯è²
- èæ¯ãæãæ¹æ³-èæ¯è²ã§å¡ãã€ã¶ãããç»åã衚瀺ãã
- ããããŒããã¹ã
- ã¿ã€ãã«ããã¹ãã®è²
- ããããŒããã¹ããã©ã³ã
- 芪ç»é¢ãžã®ãã€ã³ã¿ïŒãããéãããšãã«æ»ãïŒ
- ãã¿ã³ãžã®ãã€ã³ã¿ã®é å
- ã€ãã³ãããã·ãŒãžã£ãžã®ãã€ã³ã¿ïŒã¡ã€ã³ããã°ã©ã ã«ãŒãã§å®æçã«åŒã³åºãããŸãïŒ
- ç»é¢æç»ã«ãŒãã³ãžã®ãã€ã³ã¿
ç»é¢æ§é
typedef struct
{
void *addparameter;
char *bgimagename;
void *prevscreen;
LNG_STRING_ID name;
TG_RECT nameposition;
TG_TEXTOPTIONS nameoptions;
uint8_t btns_count;
TG_BUTTON *buttons;
LCDUI_FONT_TYPE font;
LCDUI_FONT_TYPE namefont;
uint16_t textcolor;
uint16_t nametextcolor;
uint16_t backcolor;
struct {
paintfunc _callpaint; // repaint screen
processfunc _process; // screen process handling (check for changes, touch pressed, etc)
} funcs;
} TG_SCREEN;
å®éããã¿ã³ã¯ãã¿ã³ã ãã§ãªããããã¹ããã¢ã€ã³ã³ãã«ãŠã³ã¿ãŒãæèšãªã©ã®ããçš®ã®å€åããèŠçŽ ã§ãããŸããŸããããã¹ãŠã1ã€ã®ã¿ã€ãã«çµã¿åããããã®ããããã£ã䜿çšããŠç¹å®ã®åãã¿ã³ã®åäœãèšå®ãããšäŸ¿å©ã§ããããšãããããŸããã
ãã¿ã³ã®ããããã£ïŒ
- ç»é¢äžã®åº§æš
- èæ¯è²
- èªç±ç¶æ ã®èæ¯ç»å
- æŒãããç¶æ ã®èæ¯ç»å
- ç¡å¹ç¶æ ã®èæ¯ç»å
- ã¢ã¯ãã£ãç¶æ ã®èæ¯ç»åïŒããšãã°ãã©ãžãªãã¿ã³ã°ã«ãŒãã®ã¢ã¯ãã£ããªèŠçŽ ã®å ŽåïŒ
- ã¬ã³ããªã³ã°æ¹æ³-ç»åãŸãã¯èæ¯è²
- æŒãããé¢ããããããšãã«ãã¿ã³ãåæç»ãããã©ãã
- ãã¿ã³ã®ããã¹ã
- ( )
- (, )
- ( )
- ,
- ,
typedef struct
{
void *addparameter;
uint8_t button_id;
int8_t group_id; // for swithed options buttons, >0 - single selection from group (select), <0 - multiple selection (switch)
TG_RECT position;
void *parentscreen;
void *childscreen;
char *bgimagename_en;
char *bgimagename_press;
char *bgimagename_dis;
char *bgimagename_act; // for swithed options buttons
LNG_STRING_ID text;
TG_RECT textposition;
LCDUI_FONT_TYPE font;
uint16_t textcolor_en;
uint16_t textcolor_press;
uint16_t textcolor_dis;
uint16_t textcolor_act; // for swithed options buttons
uint16_t backcolor_en;
uint16_t backcolor_press;
uint16_t backcolor_dis;
uint16_t backcolor_act; // for swithed options buttons
struct {
uint8_t active:1; // for swithed options buttons
uint8_t needrepaint:1;
uint8_t pressed:1;
uint8_t disabled:1;
uint8_t repaintonpress:1; // repaint or not when pressed - for indicate pressed state
BGPAINT_TYPE bgpaint:2;
} options;
TG_TEXTOPTIONS textoptions;
struct {
paintfunc _call_paint; // repaint button
pressfunc _call_press; // touch events handling
pressfunc _call_longpress; // touch events handling
processfunc _call_process; // periodical processing (for example text value refresh)
} funcs;
} TG_BUTTON;
ãã®äžé£ã®ããããã£ã®å©ããåããŠããã®ãããªèŠçŽ ã«åºã¥ããŠã€ã³ã¿ãŒãã§ã€ã¹ã«ã»ãšãã©ãã¹ãŠã®ãã®ãäœæããããšãå¯èœã«ãªããŸãããç»é¢ãŸãã¯ãã¿ã³ã«ããããã®ããã·ãŒãžã£nullãžã®ãã€ã³ã¿ãããå Žåã察å¿ããæšæºããã·ãŒãžã£ãåŒã³åºãããŸããããšãã°ããã¿ã³ãæŒãããšãã®ããã·ãŒãžã£ãã€ã³ã¿ã®ä»£ããã«ãåç»é¢ãŸãã¯åã®ç»é¢ã«ç§»åããå¿ èŠãããããšã瀺ãç¹å¥ãªèå¥åããããæšæºã®ããã·ãŒãžã£ããããå®è¡ããŸããäžè¬ã«ãæšæºã®æé ã¯éåžžã®ãã¿ã³ã䜿çšããã»ãšãã©ãã¹ãŠã®ã±ãŒã¹ãã«ããŒãããã¿ã³ãæèšã®ããã«æ©èœããå Žåããã¡ã€ã«ãªã¹ãã®èŠçŽ ãšããŠæ©èœããå Žåãªã©ãéæšæºã®å Žåã«ã®ã¿ãã¿ã³ã®ç¬èªã®æé ãäœæããå¿ èŠããããŸãã
ãããããã®ã¹ããŒã ã®æ©èœã«æ¬ ããŠããã®ã¯ãã¡ãã»ãŒãžã質åã®ããã¢ãŒãã«ãŠã£ã³ããŠïŒWindows APIã®MessageBoxãªã©ïŒã§ãã£ããããå¥ã®ã¿ã€ãã®ç»é¢ãäœæããŸãããèæ¯ç»åã¯ãªããã¿ã€ãã«ãŸãã¯ã¡ãã»ãŒãžèªäœã«ãã£ãŠãµã€ãºã決ãŸããŸãããããã®ã¡ãã»ãŒãžã¯ããã¯ã/ãããããã¿ã³ããOK /ãã£ã³ã»ã«ããã¿ã³ã1ã€ã®ãOKããã¿ã³ããŸãã¯ãã¿ã³ãªãïŒãåŸ æ©ãããŒã¿ãããŒããããŠããŸã...ããªã©ïŒã®4ã€ã®ããŒãžã§ã³ã§äœæã§ããŸãã
ã¡ãã»ãŒãžããã¯ã¹ã®æ§é
typedef struct
{
MSGBOXTYPE type;
void *prevscreen;
char caption[128];
char text[512];
TG_RECT boxpos;
uint8_t btns_count;
TG_BUTTON buttons[TG_BTN_CNT_MSGBOX];
uint16_t caption_height;
LCDUI_FONT_TYPE font_caption;
LCDUI_FONT_TYPE font_text;
uint16_t text_color;
uint16_t box_backcolor;
uint16_t capt_textcolor;
uint16_t capt_backcolor;
} TG_MSGBOX;
ã€ã³ã¿ãŒãã§ã€ã¹å šäœãæ§ç¯ãããã®ã¯ãããã3ã€ã®ã¿ã€ãã«åºã¥ããŠãããéåžžã«æè»ã§ããããšãããããŸãããçŸåšããã¹ãŠã®èŠçŽ ã®åæåã¯ãã¡ãŒã ãŠã§ã¢ã§å³å¯ã«å®è¡ãããŸãããæ§æãã¡ã€ã«å ã®ãã¹ãŠã®èŠçŽ ã®ããããã£ãèšè¿°ããå¿ èŠãªç»åãããã€ãè¿œå ããããšã§ããŠãŒã¶ãŒãç¬èªã®ã€ã³ã¿ãŒãã§ã€ã¹ãäœæã§ããããã«ãããšããã¢ã€ãã¢ããããŸããçè«çã«ã¯ãã¡ã€ã³ç»é¢ã«é 眮ãããã¿ã³ããµãŒãã¹ç»é¢ã«é 眮ãããã¿ã³ãªã©ãããŸããŸãªç»é¢ã®å 容ã«åãããŠå€æŽããããšãå¯èœã§ãã
1.4å€èšèª
å€èšèªäž»çŸ©ã¯åœåã®èª²é¡ã§ãããããããæåã¯ã°ãããéããã©ããŸããããã¹ãŠã®èŠçŽ ãåæåãããšãã«ãçŸåšã®èšèªããŒãã«ããããã¹ããå²ãåœãŠãŸãããèšèªãåãæ¿ãããšããããšã¯ããã¹ãŠã®ããã¹ãèŠçŽ ãååæåããããšãæå³ããã€ã³ã¿ãŒãã§ã€ã¹ã«2ã€ä»¥äžã®ç»é¢ãããã20ãè¶ ãããã¿ã³ãšã©ãã«ããããšãç§ã¯ãã¯ããã®ããã«çããããšãã§ããªãããšã«æ°ä»ããŸããããããã圌ã¯æé ãéããŠããã¹ããžã®ãã¹ãŠã®åç §ãããŸãããããã·ãŒãžã£ã«ã¯ãã©ã¡ãŒã¿ãšããŠããã¹ãèå¥åãäžããããçŸåšã®èšèªã®ããã¹ããžã®ãã€ã³ã¿ãè¿ããŸãã
char *mshortname = LANG_GetString(LSTR_SHORT_JANUARY);
èšèªãå€æŽãããšããã€ã³ã¿ã¯åã«å€ãèšèªã®ããã¹ãã®é åããæ°ããèšèªã®ããã¹ãã®é åã«å€ãããŸãã
void LANG_SetLanguage(uint8_t lang)
{
lngCurrent = lngLanguages[lang].strings;
return;
}
ãã¹ãŠã®ãœãŒã¹ããã¹ãã¯UTF-8ãšã³ã³ãŒãã£ã³ã°ã§ãããŸãããããã®ãšã³ã³ãŒãã£ã³ã°ãããããåããªããã°ãªããŸããã§ãããããã¹ã-UTF-8ãããªã«ãã¡ã€ã«-Unicode-16ãäžéšã®æåå-éåžžã®ANSIããã«ããã€ããšã³ã³ãŒãã£ã³ã°ããµããŒãããããã«ã©ã€ãã©ãªã®ã»ããå šäœããã¡ãŒã ãŠã§ã¢ã«ãã«ããããªãã£ãã®ã§ããšã³ã³ãŒãã£ã³ã°ãããšã³ã³ãŒãã£ã³ã°ãžã®å€æããUnicode16æååã®æ«å°Ÿã«UTF-8æååãè¿œå ãããªã©ãç°ãªããšã³ã³ãŒãã£ã³ã°ã®ããã¹ããæäœããããã®ããã€ãã®é¢æ°ãäœæãããŸããã
æ°ããèšèªã®è¿œå ã¯ããã®äžã«ããã¹ãã®ããŒãã«ãäœæããå®æ°LNG_LANGS_COUNTã®å€ãå€æŽããããšã«ãªããŸããã確ãã«ãæ°ããèšèªã§CyrillicãšLatin以å€ã®èšå·ã䜿çšãããŠããå Žåããã©ã³ãã«ã¯çåãæ®ããŸããçŸåšããœãŒã¹ã³ãŒãã§ãã·ã¢èªãšGoogleã§ç¿»èš³ãããè±èªããµããŒãããŠããŸãã
1.5ç»åããã®ä»ã®ãªãœãŒã¹ã®ä¿å
倧ããªãªãœãŒã¹ãæ ŒçŽããããã«ãããŒãã«ã¯8ã¡ã¬ãã€ãã®SPIãã©ãã·ã¥W25Q64ããããŸããæåã¯ããã€ãã®ããã«ããããã£ãã®ã§ãããã©ãã·ã¥å ã®åãªãœãŒã¹ã«ãªãã»ãããèšå®ãããã€ããªããŒã¿ãšããŠä¿åããŸããããããä¿åããããªãœãŒã¹ã®æ°ãæ°åãè¶ ãããšããã«ããã®æ¹æ³ã®åé¡ãä¿èšŒãããããšã«æ°ä»ããŸãããããšãã°ã6çªç®ã«ä¿åãããç»åãé çªã«å€æŽããããšæããŸãããµã€ãºã倧ãããªããšã以äžã®ãã¹ãŠã®ãªãœãŒã¹ã®ã¢ãã¬ã¹ãã·ããããŠæžãçŽãå¿ èŠããããŸãããŸãã¯ãåãªãœãŒã¹ã®åŸã«ãµã€ãºãäžæãªã¹ãã¢ã¹ããŒã¹ãæ®ããŸãããªãœãŒã¹ãã©ã®ããã«å€æŽãããããç¥ã£ãŠãã人ã§ããã¯ãã棺桶ã®äžã§ç§ã¯ãã®éšããèŠãŸãã:)ããã§ãç§ã¯ãã®ãã©ãã·ã¥ã§ãã¡ã€ã«ã·ã¹ãã ãåãåºããŠæŽçããŸããããã®æãŸã§ã«ãç§ã¯ãã§ã«FatFSã©ã€ãã©ãªã«åºã¥ãUSBãã¡ã€ã«ã·ã¹ãã ãæã£ãŠããã®ã§ãã»ã¯ã¿ãŒããšã«å¥ã ã®äœã¬ãã«ã®èªã¿åã/æžã蟌ã¿é¢æ°ãæžãã ãã§ååã§ãããç§ãå°ãåæºãããã®ã¯1ã€ã ãã§ãããã®ãã€ã¯ãåè·¯ã®æ¶å»ãããã»ã¯ã¿ãŒã®ãµã€ãºã¯ããã§ã«4KBã«ããªã£ãŠããŸããããã¯ãæåã«ãã¡ã€ã«ã4 KBã®éšåã§ã¹ããŒã¹ãå ãããšããäºå®ã«ã€ãªãããŸãïŒãã¡ã€ã«ã¯200ãã€ããæžã蟌ã¿ãŸãã-ããã¯4 KBã®ãã©ãã·ã¥ãèŠããŸããïŒããããŠæ¬¡ã«ãåãã¡ã€ã«ãã€ã³ã¿ãŒã®æ§é ã®ãããã¡ãŒã¯åã4KBã®RAMãæ¶è²»ããŸããã€ã¯ãããã»ããµã¯ããã»ã©å€ããããŸãã-192KBããã¡ãããå€è³ªããŠäœã¬ãã«ã®é¢æ°ãæžã蟌ãã§ãããšãã°512ãã€ããªã©ã®ã»ã¯ã¿ãŒãµã€ãºãå ±åããŠãããå°ããªéšåã§èªã¿æžãã§ããããã«ããããšãã§ããŸãããã ããFlashã®é床ãäœäžãããããã»ã¯ã¿ãŒãµã€ãºã¯4KBã®ãŸãŸã«ãªããŸãããã®ããããã¡ã€ã«åã ãã§ã©ã®ãªãœãŒã¹ã«ãã¢ã¯ã»ã¹ã§ããéåžžã«äŸ¿å©ã§ããããšãããããŸãããããšãã°ãçŸæç¹ã§ã¯ãä¿åãããŠãããªãœãŒã¹ã®æ°ã¯ãã§ã«90ãè¶ ããŠããŸãããããŠãæŽæ°ãã§ããã ãç°¡åã«ããŸãããæŽæ°ãããïŒãŸãã¯æ°ããïŒãªãœãŒã¹ãç¹å®ã®ãã£ã¬ã¯ããªã®USBãã©ãã·ã¥ãã©ã€ãã«æžã蟌ãŸãããã©ãã·ã¥ãã©ã€ããããŒãã«æ¿å ¥ãããããŒãããµãŒãã¹ã¢ãŒãã§åèµ·åãããŸãïŒé»æºãå ¥ãããåèµ·åãããã£ã¹ãã¬ã€ã®å³äžé ãæŒãç¶ããŸãïŒããã®ãã£ã¬ã¯ããªã«ãããã¹ãŠã®ãã¡ã€ã«ãUSBãã©ãã·ã¥ãã©ã€ãããSPIãã©ãã·ã¥ã«èªåçã«ã³ããŒããŸããããŒãã¯ãµãŒãã¹ã¢ãŒãã§åèµ·åãïŒé»æºæå ¥æãŸãã¯åèµ·åæã«ããã£ã¹ãã¬ã€ã®å³äžé ãæŒãç¶ããŸãïŒããã®ãã£ã¬ã¯ããªã«ãããã¹ãŠã®ãã¡ã€ã«ãUSBãã©ãã·ã¥ãã©ã€ãããSPIãã©ãã·ã¥ã«èªåçã«ã³ããŒããŸããããŒãã¯ãµãŒãã¹ã¢ãŒãã§åèµ·åãïŒé»æºæå ¥æãŸãã¯åèµ·åæã«ããã£ã¹ãã¬ã€ã®å³äžé ãæŒãç¶ããŸãïŒããã®ãã£ã¬ã¯ããªã«ãããã¹ãŠã®ãã¡ã€ã«ãUSBãã©ãã·ã¥ãã©ã€ãããSPIãã©ãã·ã¥ã«èªåçã«ã³ããŒããŸãã
ã€ã¥ã...
ãããããæãããªã¥ãŒã ã®ããéšåãã€ã³ã¿ãŒãã§ã€ã¹ã«åºãŠããŸããããã®èšäºãã³ãã¥ããã£ã«ãšã£ãŠèå³æ·±ããã®ã§ããããšãå€æããå Žåã¯ã第2éšã§ãä»ã®ãã¹ãŠã«å¯Ÿå¿ããããšããŸãã
ããŠã質åãã³ã¡ã³ããããã ããã°å¹žãã§ãã
-ããŒã1ïŒ 1ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã
-ããŒã2ïŒ 2.USBãã©ãã·ã¥ãã©ã€ãäžã®ãã¡ã€ã«ã·ã¹ãã ã®æäœã3.ãã©ãããã©ãŒã 移åçšã®ã¹ããããŒã¢ãŒã¿ãŒå¶åŸ¡ã
-ããŒã3ïŒ 4ãããã¯ã©ã€ããã£ã¹ãã¬ã€ã«ã¬ã€ã€ãŒã®ç»åã衚瀺ããã5.ç §æãšãã¡ã³ã®å¶åŸ¡ãèšå®ã®èªã¿èŸŒã¿ãšä¿åãªã©ãããããå°ããªããšã6.å¿«é©ããšäŸ¿å©ãã®ããã®è¿œå æ©èœã
ãªã³ã¯
MKSDLPãããã®AliexpressGitHub
ã®ã¡ãŒã«ãŒããã®å ã®ãã¡ãŒã ãŠã§ã¢ãœãŒã¹GitHub
ã®ããŒãã®2ã€ã®ããŒãžã§ã³ã®ã¡ãŒã«ãŒããã®ã¹ããŒã GitHubã®
ç§ã®ãœãŒã¹