2022年9月14日水曜日
2022年4月2日土曜日
2022年3月19日土曜日
2021年5月16日日曜日
2020年8月10日月曜日
micro:bitと電動消しゴムでバランスロボ
ハードウェアは こちらをご覧ください。
PWM周波数の変更のため、wiring_analog_nRF51.c 内の関数 void analogWrite( uint32_t ulPin, uint32_t ulValue ) の
NRF_TIMER1->PRESCALER = (NRF_TIMER1->PRESCALER & ~TIMER_PRESCALER_PRESCALER_Msk) | ((7 << TIMER_PRESCALER_PRESCALER_Pos) & TIMER_PRESCALER_PRESCALER_Msk);
を
NRF_TIMER1->PRESCALER = (NRF_TIMER1->PRESCALER & ~TIMER_PRESCALER_PRESCALER_Msk) | ((3 << TIMER_PRESCALER_PRESCALER_Pos) & TIMER_PRESCALER_PRESCALER_Msk);
に変更しました。
また、i2cのタイムアウトのために、Wire_nRF51.cpp 内の関数 uint8_t TwoWire::endTransmission(bool stopBit) の
_p_twi->TXD = txBuffer.read_char();
while(!_p_twi->EVENTS_TXDSENT && !_p_twi->EVENTS_ERROR) ;
を
_p_twi->TXD = txBuffer.read_char();
uint32_t usecTimeOut=micros();
while(!_p_twi->EVENTS_TXDSENT && !_p_twi->EVENTS_ERROR) {
if (micros()-usecTimeOut>3000) return 4;
}
に変更しました。
以下ソースコードです。
2020年6月10日水曜日
BalaC Balancing Robot - One-wheel Drive Versiion
2020年6月9日火曜日
2020年5月16日土曜日
ESP32で古時計の精度改善
ソースコードは、重力振り子用の構成になっています。
//*** WIFI SETTING の下2行がWiFiのSSIDとパスコードの設定部分です。
EPS32がインストールされているArduino IDEで、ボードとして「WEMOS LOLIN32」を選択してコンパイルします。
起動後、OLEDに表示されるIPアドレスに、ブラウザ(ChromeとFireFox以外は試してないです)からアクセスし、「Config」メニューの「Pendulum XX cycles = YY sec」で時計のギヤ比(YY秒間で振り子がXX回往復)を、「Pend Cycle between Tune: ZZ」で修正間隔(振り子ZZ回往復ごとにコイル電流を更新、1分に1回程度で良いと思います)を設定して「Apply」し、再度「Config」から「Reboot」すれば、とりあえずは動くはずです。
回転振り子については、#define GRAVITYをコメントアウトし、#define TORSIONを生かしてコンパイルします。センサーの設置位置などが微妙で、条件が変わるとソースコード中の定数の調整も必要と思われます。