gombeのブログ

マイコンの電子工作系PIC32/KiCad/C/C++/3D/

C言語

あけおめことよろ 新規プロジェクトの紹介

あけましておめでとう⛩ 今年もよろしくお願いします。 最近新しいプロジェクトを始めました。MachiKaniaのハードでCコンパイラやテキストエディタなどを乗せたネイティブコンパイラの開発をしています。 このシステムは編集、コンパイルや実行に必要な一通り…

マイコンで3D表示(図解)

3D表示に関してここにまとめておきます。 1、座標変換 3DのCGの世界ではカメラを回すのではなく、世界を回します。また、世界を歪めます(透視投影)。しかし線形変換では透視は与えられないので別の方法を使います。 透視はzで割ることで与えられます。しかし…

マイコンで3Dグラフィクス(2)

前の記事 ラインスキャン法による三角ポリゴン描画 うむ。こんにちは。ポリゴン描画にいよいよかかります。こいつがいちばんの難所で速度が出る出ないの境目がここにあります。今回はラインスキャンというCPUで描画するのに適した高速かつ穴のないレンダリン…

マイコンで3Dグラフィクス(1)

マイコンで3D計算というと重すぎるのかと思いましたが以外といけるようなのでそのメモメモ 昔のDSとかPS1とかはFPUが付いていないので固定小数点演算でグラフィクスの処理を行いました。現在ではFPUもあるしハードウェアアクセラレータがありますしこんなこ…

組み込みでのC++の勧め

PICならxc32++,armならarm-g++,など、さまざまなマイコンでc++を利用可能です。例えば32bitCPUならアドレスがリニアに取れることが多いため、オーバーヘッドが少なくてすみます。 そこでc++をつかったプログラミングのススメを書きます。ではなぜC++なのでし…

machiKaniaでマインスイーパー

再帰の展開をしてマインスイーパーを作りました。後の方に載せます。ソースコードはGithubにあげています。うまくカラー表示できてないけど。 以前C言語で作ったものの移植です。マインスイーパー自体は非常に簡潔なコードでかけますが、掘る作業で再帰を用…

MachiKaniatypeZのビデオ再生(完結

あけましておめでとう。(遅い MachiKaniatypeZでカラー動画再生をやったので技術的メモ カラー動画再生をするのですが、出せる色数は16色です。カラーパレットを高速に切り替えないといけません。しかもFPS30だとすると、表示タイミングは1/2となりますが、…

MachiKaniaで日本語表示

[caption id="attachment_4051" align="alignnone" width="800"] 日本語表示テスト[/caption] 日本語表示テストをしました。上の写真のソースコードはこちらから https://github.com/elect-gombe/fontx2machikania FONTX2の説明を書いたことがなかったので載…

MachiKaniaでPCMの再生

次期作で乗る予定だったらしいですがもう試しに乗せてみました。まあ、みればわかるとおもいます。解説はほとんど不要だと思います。 2016/12/11追記 YouTubeに変更しました で、PCMなんですが容量が一気に増えますんでFlashには入りません。(数秒まで) とい…

CubeMX コードジェネレータチュートリアルもどき

CubeMXはST社のコードジェネレータです。このジェネレータはライブラリとその設定(初期化)、クロックの設定、RTOSなどのミドルウェアを生成します。そのことについてメモメモ。

久しぶりのオルゴールについて

今回は減衰について説明しましょうかね。 オルゴールでは大抵音が鳴り始めたら減衰します。この音の減衰にあたる部分まで演算して求めようという考え方です。 人間の聴覚では音の大きさはdBで表されることが多いですね。音が相対的に大きさが触れられるのも…

時計の設計(7)(手の動きが。。)

最近寒くなってきました。風邪は要注意ですね。実際布団から出るのがとても大変です。実際に時計を作るようにして基板以外の部品は一式揃えました。部品点数はそんなに多くないのですがLEDの数は結構多いですね。ebayでは青色の0603(mil)サイズがかなり安い…

時計の設計(時刻カウントについて)

時刻のカウントは一般的な製品では多くがRTCを搭載しています。これはリアルタイムクロックと呼ばれていて中身はただのカウンタです。水晶発振子の発振回路が入っている場合が多いです。で、今回のマイコンは入ってません(爆

時計の設計(4)受信プログラムを考える

受信プログラム。。。うっ本プロジェクト最難関科目。。。では考えましょう。まずはCdSの特性とその利用です。CdSは反応時間が非常に長く(20-30ms)非常に扱いにくいです。それに加えてLCDは反応時間が同程度あります。なので立ち上がり立ち下がりが非常に遅…

時計の設計(3)

補正ページ 時計の部品を発注しました。あとで基板も発注します。 時刻調節方法について幾つかの案がありました。で、今回はCdS(光検知)を使ってiPhoneやPCなどから補正します。 具体的にはさっきのURLにアクセスし、スマホをかざすだけで補正できることを目…

時計の設計(1)(構想を練る)

[caption id="attachment_2171" align="alignnone" width="474"] 時計の3D表示[/caption] PCBのCADといえばKiCADですよね。うん。で、それ使って5x10(cm)以内で時計を設計したので記録。 KiCADって結構特別な操作感でレンダリングソフトでいうblenderみたい…

FM音源(もどき)dsPIC(続き)

オルゴールです。それっぽい音()が出ました。 いきなり解説ページということです。ハードはPCMPlayerとほぼ同じでモノラルである点だけ異なります。FM音源を2OPかつフィードバックなしで調節もなしというFM音源らしくない音源ですが、同時発音数は20オンを…

STM32 FLASHをEEPROM的に使う(2)

前回の続きです。STMのフラッシュを利用する時はロックを解除し一ページを消去、ブランクチェックの後に書き込みを実行、その後に照合をし、ロックをかけて完了でしたね。 今回はリンカスクリプトの解説をちょっとだけしたいと思います。リンカスクリプトと…

STM32 FLASHをEEPROM的に使う(1)

膨大なフラッシュを持つマイコンが今多くあります。そんなマイコンのフラッシュを使わないわけないですよね。 というわけでフラッシュの使い方を解説します。が、相変わらず雑ですので。まずマイコンはアドレス空間上にRAMやFlashがマッピングされています。…

uncrustifyを使ってコードを整形

はい。整形しました。ラフガキなのに綺麗です。 ・長いコメント強制改行 ・強制スペース挿入 ・長い関数(行数が40を超えるもの)の末尾に関数名を入れる ・コードスタイルはK&Rで ・適当に改行突っ込む。(w こんなかんじです。ではサンプルソースをどうぞ…

マップ生成

マップ生成させました。 見たとおりです。 http://lazylifeeasyexit.blog67.fc2.co... ここのやり方です。 後は何も説明いらない気がする。 ラフガキソースですが一応 [c] include <stdio.h> include <stdlib.h> include <assert.h> define DISPLAY_ALL typedef struct{ int *map; int wid</assert.h></stdlib.h></stdio.h>…

mine sweeper(マインスイーパー)作成

マインスイーパー作りました。課題です。めんどいなあ。。。再帰を使ってかけって言われて書いたけど、再帰は必須だね。使わない縛りPlayは誰もしないと思うよ。うん。

線形リスト(挿入)

線形リストの挿入の資料を軽く書きました。 https://box.yahoo.co.jp/guest/viewer?sid=box-l-2juptryugenshqqaowc26bjcfi-1001&uniqid=8f1992fd-1222-4e64-b761-4d4f3c33db6e&viewtype=detail とりあえずこんなかんじで。