フォトポリマヌLCD3Dプリンタヌ甚のDIYファヌムりェア。パヌト1

画像



...たたは自分の奜みに合った奜みず芞者を䜿っお自分の自転車を発明した方法-フォトポリマヌプリンタヌのファヌムりェアを最初から䜜成したした。珟時点では、ファヌムりェアはすでに完党に機胜しおいたす。



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- , . , , - .



だから私たちが持っおいるもの



  • 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の

私の゜ヌス



All Articles