ATtiny13AでHC-SR04を使った距離計測
Arduino IDE 1.8.5の環境で、ATtiny13Aの開発が出来るようになったので、
試しに、HC-SR04を使った距離計測を実装してみました。
スケッチは、アルゴリズム雑記さんの下記の記事を参考にさせていただきました。
・【Arduino】超音波距離センサ(HC-SR04)の測定精度を向上(気温考慮)
https://algorithm.joho.info/arduino/ultrasonic-distance-sensor-hcsr04-temp/
実装

実行結果

測定結果は、シリアルコンソールに出力します。
とりあえず、それらしく動いています。
スケッチサイズは、ジャスト1024バイト、ぎりぎり書き込めました。

スケッチ
(修正) 2018/04/14 ライブラリBasicSerial3をlibraliesに配置するように修正しました。
// // 超音波距離センサHC-SR04を使った距離計測 // // ATMEL ATTINY13 / ARDUINO // 利用パッケージ:https://github.com/MCUdude/MicroCore // // +-V-+ // Reset PB5 1| |8 Vcc // Tx PB3 2| |7 PB2 // Rx PB4 3| |6 PB1 ECHO // GND 4| |5 PB0 TRIG // +----+ // // シリアル通信ライブラリ // AVR half-duplex software UART supporting single pin operation // http://nerdralph.blogspot.jp/2014/01/avr-half-duplex-software-uart.html // #define BAUD_RATE 38400 #include "BasicSerial3.h" #define Tx PB3 // (変更する場合、BasicSerial3.S修正が必要) #define Rx PB4 // (変更する場合、BasicSerial3.S修正が必要) // HC-SR04 #define TRIG PB0 // 出力ピン #define ECHO PB1 // 入力ピン #define TEMP 180 // 温度補正 気温(℃)*10 // 整数を10進数で出力 void OutDEC(uint16_t d) { int8_t n =-1; uint16_t v = 10000; for (uint8_t i=0; i<5; i++) { if (d >= v) { TxByte(d/v + '0'); d %= v; n=i; } else { if (n!=-1||i==4) TxByte ('0'); } v/=10; } } void setup() { pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT); } void loop() { // 超音波の出力終了 digitalWrite(TRIG,LOW); delayMicroseconds(1); // 超音波を出力 digitalWrite(TRIG,HIGH); delayMicroseconds(11); // 超音波を出力終了 digitalWrite(TRIG, LOW); // 出力した超音波が返って来る時間を計測 uint16_t d = (uint16_t)pulseIn(ECHO, HIGH, 200000); // 計測した時間と音速(気温を考慮)から反射物までの距離を計算 uint16_t k=(3315+TEMP*6)/20; // 係数 uint16_t v=d/100*k; uint16_t h=v/100; uint16_t l=v%100; // 計算結果をシリアル通信で出力 OutDEC(h); TxByte('.'); OutDEC(l); TxByte('\n'); delay(250); }
シリアル出力はNerd Ralphさんが公開しているライブラリ、BasicSerial3 を利用しています。
・Nerd Ralph - AVR half-duplex software UART supporting single pin operation
http://nerdralph.blogspot.jp/2014/01/avr-half-duplex-software-uart.html
ライブラリをダウンロードし、BasicSerial3を\librariesに配置する必要があります。
さらに、BasicSerial3.Sのピン指定を修正しています。
#define UART_Tx 3
#define UART_Rx 4
スケッチの全ソースは、下記のサイトに置いています。
https://github.com/Tamakichi/Arduino_ATtiny13_HC_SR04
50円マイコン、容量の制約が厳しいですが、それなりに実装でき、十分楽しめますね。
« Arduino 1.8.5環境でATtiny13Aを利用する | トップページ | ATtiny13Aで赤外線リモコン受信センサーを使う(2) »
「arduino」カテゴリの記事
- Freenove Mecanum ホイール カー キットを購入しました(2025.05.28)
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
「AVR」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用SJIS漢字フォントライブラリ SDカード版を作成しました(2018.10.30)
- ATtiny13AでI2C接続キャラクタLCDを利用する(4)(2018.04.16)
- ATtiny13Aで赤外線リモコン受信センサーを使う(2)(2018.04.15)
- ATtiny13AでHC-SR04を使った距離計測(2018.04.14)
「ATtiny13A」カテゴリの記事
- ATtiny13AでI2C接続キャラクタLCDを利用する(4)(2018.04.16)
- ATtiny13Aで赤外線リモコン受信センサーを使う(2)(2018.04.15)
- ATtiny13AでHC-SR04を使った距離計測(2018.04.14)
- Arduino 1.8.5環境でATtiny13Aを利用する(2018.04.14)
- Arduino IDEを使ったATtiny13用スケッチの開発について(2016.08.30)
« Arduino 1.8.5環境でATtiny13Aを利用する | トップページ | ATtiny13Aで赤外線リモコン受信センサーを使う(2) »

コメント