esp32で出たエラーまとめ

  • POSTS
自分がArduino IDE 2.0に移行した際にESP32へ書き込むと色々とエラーが出てしまったので備忘録としてメモ 東京高専で使用しているESP32ボードを使っているので東京高専生以外はあまり参考にならないかもです ライブラリ多重化 「SD.h」に対して複数のライブラリが見つかりました 使用済:C:\Users\XXXXXX\AppData\Local\Arduino15\libraries\SD 未使用:C:\Users\XXXXXX\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SD IDEのバージョンを上げたところ発生しました この場合,C:\Users\XXXXXX\AppData\Local\Arduino15\librariesにあるSDフォルダを削除してください ちなみにこのエラーは通常開発時にも良く出るのですが,ほとんどの場合はこのエラーが原因ではないので注意です! その場合はこのエラーの少し上までスクロールすることで本来のエラーメッセージを見ることができます ライブラリ多重化2 #error Architecture or board not supported. SD.hエラーの後半部分が消えたエラーメッセージです C:\Users\XXXXXX\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SDを削除したところ発生しました 削除したSDフォルダを復元し,C:\Users\XXXXXX\AppData\Local\Arduino15\librariesにある別のSDフォルダを削除し直してください 書き込みエラー esp32: timed out waiting for packet header Failed to connect to ESP32: Invalid head of packet (0x2E) Connecting........_____....._____....._____....._____....._____..... という表示が出た後に上記エラーが吐かれて止まります 検証は通るが書き込みができなくなります ESP32が書き込みモードになっていないことが原因です Connectingが表示されてから,RESETボタンを押してからすぐにISPボタンを押すことで書き込みモードに移行できます Wifi接続エラー Wi-Fi Connection Failed! ※esp32-nittc201018.hを使っている人(東京高専生)限定 SSIDとパスワードが合っているはずなのにWifiが接続されないバグです これはライブラリ内の処理に問題があります esp32-nittc201018.hのWifi接続部分では一定時間Wifiにつながらなかった場合にWifi接続を初期化(再度WiFi.beginを行う)するようになっています しかし初期状態だと再接続までの時間が短すぎる為,接続を試みている最中なのに接続を切ってしまいます そのため,いつまでも接続が出来ずエラーが出ているようです 解決策としてはesp32-nittc201018.hの579行目にあるif(i%8==0)という部分の回数をもう少し増やしてみてください 私の環境では25回程度で接続できたので,50回程度が良いと思います もし50回にするならif(i%50==0)と変更してください

Minecraft ForgeのModを作る

  • POSTS
MinecraftのModdingを始めるにあたり色々と詰まった場所が多かったので忘備録です 環境構築については記事が溢れているのでコーディング関連のみメモっときます 1.8.9で作ったのでそれ以外だとちょっと違うかもです LOGの出力 public static final Logger logger = LogManager.getLogger(ExampleMod.MODID); ExampleMod.logger.info("HelloWorld"); infoの他にもdebug,warn,error,fatal等が使えるらしいです 出力されるLOGはマイクラのランチャーの設定から,出力ログを開くを有効にしておくと確認できます Event関連 チャットを受け取った時に実行する関数みたいなのを作る場合はSubScribeEventというものを使います まずinit関数の中にMinecraftForge.EVENT_BUS.register(this);と書いておきます そして例えばチャットを受け取った際に実行される関数の場合, @SubscribeEvent public void onChat(final ClientChatReceivedEvent event){ } のようにすることでイベントを登録することができます イベントは引数で決まっているので関数名は何でもOKです この際に引数になっているevent変数からイベントによって色々な引数を取ることができます onChat関数の場合,event.message.getUnformattedText()でチャットの内容が取れたりします イベントはnet.minecraftforge.eventパッケージに入っています 調べた感じイベントを纏めてるサイトは無かったのでその都度調べるほうがいいかもです 難読化 ゲームから情報を取りたい!みたいになった時に,ゲーム内のクラスが難読化されていてとてもわかりずらいです 例えばホットバーの上に出てくる文字列を取得する場合は (String) ReflectionHelper.findField(GuiIngame.class, "recordPlaying", "field_73838_g").get(Minecraft.getMinecraft().ingameGUI); みたいになります この中のfield_73838_gが難読化されたクラス名です ここに纏められています レンダリング 文字列のレンダリングは以下のようにするとできます public void renderOverlay(RenderGameOverlayEvent event) { FontRenderer fRender = Minecraft.getMinecraft().fontRendererObj; fRender.drawStringWithShadow("HelloWorld", 5, 10, 0); } drawStringWithShadowの引数は文字列,x,y,color(RGBを10進数に変換)です しかしこのままだとHPの部分とかが凄い色になったりしてヤバくなります 解決策は public void renderOverlay(RenderGameOverlayEvent.Post event) { if(event.type == RenderGameOverlayEvent.ElementType.ALL){ FontRenderer fRender = Minecraft.

Github pages+Hugoでブログ作ってみた

  • POSTS
前からGODofMEGANE.github.ioでブログっぽいことをしようと思ってましたが、最近godofmegane.comドメインを買ったのでブログ作ってみました Github pagesとGoogle Domainsの設定 まずはGithubで空リポジトリを作成し、pagesの設定を行います この画面でNoneと書かれている場面を設定したいブランチにしてディレクトリを選べば簡単にホームページが作れます 確認のために適当にhtmlファイルを作ってpushしてみるといいと思います リポジトリ名が ユーザー名.github.io なら ユーザー名.github.io それ以外なら ユーザー名.github.io/リポジトリ名 でアクセスできます 次にGoogle DomainsのリンクとGithub pagesを紐づけます DNSの設定からカスタムレコードを作成します タイプはCNAMEにしましょう CNAMEの場合ホスト名を決める必要があるので、wwwとかにすると良いと思います データにはgithub pagesのURLを入力しておきます ここまで設定したらまたgithub pagesの設定画面へ戻りましょう Custom domainの欄にGoogle Domainsで取得したドメインを入力し、Saveをクリックします 少し待てばGoogle Domainsで取得したドメインにアクセスするとgithub pagesが見られるようになるはずです! 次にHugoを用いてブログを作っていきます Hugoのインストール 今回はWindowsでインストールを行います まず本体をこちらからダウンロードします Windowsを使用していて64bit版なら hugo_0.96.0_Windows-64bit.zip をダウンロードして解凍しましょう 出てきた実行ファイルにはPATHを通しておきましょう envと検索し、環境変数を編集を開きます そうしたら上の通り ユーザー環境変数のPathを選択 編集(E)…をクリック 新規(N)…をクリック hugoの実行ファイルがあるフォルダを入力 を行いましょう 実行ファイル自体ではなくて、実行ファイルのあるフォルダなので注意してください 最後にOKを押して閉じましょう ここまで終わったらPowerShellを開き hugo と入力してみましょう 上記のような結果になればOKです 用語 ‘hugo’ は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。