Skip to content

Instantly share code, notes, and snippets.

@ksasao
ksasao / M5BME688.ino
Last active February 7, 2025 13:33
M5Atom で BME688 のガスセンサ・ヒーターを操作するサンプル
// M5Atom で BME688 のガスセンサ・ヒーターを操作するサンプル
// 2022/1/6 @ksasao
//
// 利用デバイス:
// デバイスは、下記などで入手してください
// BME688搭載 4種空気質センサモジュール(ガス/温度/気圧/湿度)
// https://www.switch-science.com/catalog/7383/
//
// ライブラリの追加:
// https://github.com/BoschSensortec/Bosch-BME68x-Library
@ksasao
ksasao / detect_zozo2.py
Created December 12, 2021 04:32
ZOZOSUIT2のマーカーを読み取るやつ
import numpy as np
import random
import math
import cv2
from PIL import Image
import sys
def detect_markers(im):
markers = []
height, width = im.shape[:2]
@ksasao
ksasao / estimateRtcMillsec.c
Last active September 18, 2021 07:06
RTC時刻(秒)とシステム時刻(ミリ秒)からミリ秒単位のRTC補正時刻を求めるアルゴリズム。offset はより広いスコープで定義しておく。https://twitter.com/ksasao/status/1439058457856937985
// RTC時刻(秒)とシステム時刻(ミリ秒)を読み込み
long rtcSec = GetRtcSec();
long systemMillsec = GetSystemMillisec();
// delta ができるだけ 0~999 に収まるようにする
long delta = (systemMillsec + offset) - rtcSec * 1000;
// 100ms 以上のずれがある場合は offset を再計算
int d = 100;
if(delta > 1000 + d || delta < -d)
@ksasao
ksasao / PhotoData.cs
Last active September 14, 2021 01:56
HEIF (.heic), JPEG などに含まれる EXIF 情報などから緯度経度・時刻・姿勢(Unity準拠)を読み込む C# サンプル。 https://twitter.com/ksasao/status/1426522324623265800
using MetadataExtractor;
using MetadataExtractor.Formats.Exif;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@ksasao
ksasao / crossed.cs
Created August 2, 2021 12:58
非凸多角形に対して、a番目, b番目(a<b)の頂点を結んだときに他の辺と交差するかどうかを判定する
/// <summary>
/// 非凸多角形に対して、a番目, b番目(a<b)の頂点を結んだときに他の辺と交差するかどうかを判定する
/// </summary>
/// <param name="pts">多角形の点列。点の並びが反時計回りになっていることを期待している。</param>
/// <param name="a">a番目の点</param>
/// <param name="b">b番目の点</param>
/// <returns>交差すれば true</returns>
private bool Crossed(PointF[] pts, int a, int b)
{
float abX = pts[b].X - pts[a].X;
@ksasao
ksasao / M5Atom_SCD40.ino
Last active February 27, 2023 23:13
Sensirion SCD40を M5Atom で動かすためのサンプルコード。SensirionI2CScd4x の 0.3.0 以降ではreadMeasurementの仕様が変わっているので temperature, humidity をfloatにして、数値変換式を削除するなどの修正が必要です。 https://github.com/Sensirion/arduino-i2c-scd4x/commit/741b9a443b1f5e66b12c4f3075b232667b4811f0
// Sensirion SCD40を M5Atom で動かすためのサンプルコード
// 2021/7/20 @ksasao
// * 公式のサンプルコードを一部改変
// Arduino の [ツール]>[ライブラリを管理]で、SDC40で検索し、
// Sensirion I2C SCD4x を追加してビルドしてください
// https://twitter.com/ksasao/status/1417455450929262598
/*
* Copyright (c) 2021, Sensirion AG
* All rights reserved.
*
@ksasao
ksasao / acc.ino
Created May 14, 2021 12:29
M5StickCで重力の向きを計測。単位はG。シリアル出力は115200bps/パリティなし/8データビット/1ストップビット(デフォルト値)。
#include <M5StickC.h>
float accX = 0;
float accY = 0;
float accZ = 0;
void setup() {
M5.begin();
M5.IMU.Init();
M5.Lcd.setRotation(3);
@ksasao
ksasao / list.md
Created February 13, 2021 06:56
XYZprint の調子が悪い時に削除するフォルダ

XYZprint をアンインストールした後に、下記の3フォルダを削除して、XYZprintを再インストールする。

%USERPROFILE%\AppData\Roaming\XYZprint
%USERPROFILE%\Documents\XYZprintInfo
%ALLUSERSPROFILE%\XYZprintingInc\XYZprint
@ksasao
ksasao / M5PaperFM24C02.ino
Last active December 1, 2020 10:31
FM24C02 read/write test for M5Paper
#include <M5EPD.h>
#define ADDR 0x50
void writeByte(uint8_t address, uint8_t data){
Wire.beginTransmission(ADDR);
Wire.write(address);
Wire.write(data);
Wire.endTransmission();
delay(5);
@ksasao
ksasao / Program.cs
Last active October 31, 2020 05:33
CeVIO CS6/CS7 の DLL を動的に呼び出すサンプル。32bitビルドでも64bitの CeVIO CS7 を呼び出せます。
// CeVIO の DLL を動的に呼び出すサンプル
// CeVIO 試用版は下記
// https://sites.google.com/site/ceviouserguides/archive/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;