Mini Tank Robot
2026.04.08
各種センサーのおさらい用メモ書きです

keyestudio Mini Tank Robot V2
●Specification
・Working voltage: 5v
・Input voltage: 7-12V
・Maximum output current: 2A
・Maximum power dissipation: 25W (T=75℃)
・Motor speed: 5V 200 rpm/min
・Motor drive mode: dual H bridge drive (L298P)
・Ultrasonic induction angle: <15 degrees
・Ultrasonic detection distance: 2cm-400cm
・Infrared remote control distance: 10 meters (measured)
・Bluetooth remote control distance: 50 meters (measured)
Mini Tank Robot used pin
| UNO | | L298P Shield | | Sensor Shield |
| 3: | ── | RIGHT MOTOR PWM | | |
| 4: | ───────────────── | HC-SR04 ECHO |
| 5: | ───────────────── | HC-SR04 TRIGGER
| | 9: | ───────────────── | SERVO
| | 11: | ── | LEFT MOTOR PWM | | |
| 12: | ── | RIGHT MOTOR DIRECTION | | |
| 13: | ── | LEFT MOTOR DIRECTION | | |
| A0: | ───────────────── | IR RECEIVER
| | A1: | ───────────────── | LEFT CDS
| | A2: | ───────────────── | RIGHT CDS
| | VIN | ←─ | 5V | ←─ | DC7-12V |
| GND | ── | GND | ── | GND |
●Keyestudio V4.0 Development Board




●LED Blink

The LED will be on if S end is high level; nevertheless, it will go off.
・Control interface: digital port
・Working voltage: DC 3.3-5V
・Pin spacing: 2.54mm
・LED display color: red
test code 1
void setup()
{
pinMode(2, OUTPUT);
}
void loop()
{
digitalWrite(2, HIGH); // turn the LED on
delay(1000);
digitalWrite(2, LOW); // turn the LED off
delay(1000);
}
test code 2
int ledPin = 10;
int value;
void setup ()
{
pinMode (ledPin, OUTPUT);
}
void loop ()
{
for (value = 0; value <255; value = value + 1) {
// LED lights gradually light up
analogWrite (ledPin, value);
// delay 5MS
delay (5);
}
for (value = 255; value> 0; value = value-1) {
// LED gradually goes out
analogWrite (ledPin, value);
// delay 5MS
delay (5);
}
}
●Photoresistor Sensor
フォトセルモジュールの信号ピンをアナログポートに接続すると、光強度が強いほどアナログポートの電圧が高くなり、アナログ値も大きくなります。
逆に、光強度が弱いほどアナログポートの電圧が低くなり、アナログ値は小さくなります。
これに基づいて、フォトセルモジュールを使用してアナログ値を読み取ることで、周囲の光強度を取得できます。

Resistance:5K ohm-0.5Mohm
Interface Type: analog
Working Voltage: 3.3V-5V
Easy installation: with screw fixing holes
Pin spacing: 2.54mm
int sensorPin = A1;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(500);
}
●V5 Sensor Shield
●フォトセル - アナログ出力
フォトレジスタとLEDを組み合わせて、LEDの状態を確認してみましょう。

int analogInPin = A1;
int analogOutPin = 10;
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
void setup() {
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
analogWrite(analogOutPin, outputValue);
Serial.println(sensorValue);
// wait 2 milliseconds before the next loop for the analog-to-digital
// converter to settle after the last reading:
delay(2);
}
●Servo Control
サーボモーターは位置制御回転アクチュエータです。主にハウジング、回路基板、コアレスモーター、ギア、位置センサーで構成されています。動作原理は、サーボがMCUまたは受信機から送信された信号を受信し、周期20ms、幅1.5msの基準信号を生成し、取得したDCバイアス電圧とポテンショメータの電圧を比較して電圧差出力を得るというものです。
モータ速度が一定の場合、ポテンショメータはカスケード減速ギアを介して回転駆動され、電圧差が0となり、モータの回転が停止します。一般的に、サーボの回転角度範囲は0°~180°です。
サーボモーターの回転角度は、PWM(パルス幅変調)信号のデューティサイクルを調整することで制御されます。PWM信号の標準周期は20ms(50Hz)です。理論上は1ms~2msの範囲で動作しますが、実際には0.5ms~2.5msの範囲です。このデューティサイクルは、0°~180°の回転角度に対応します。ただし、異なるブランドのモーターでは、同じ信号でも回転角度が異なる場合がありますのでご注意ください。

対応するサーボ角度を以下に示します。

仕様
・動作電圧:DC 4.8V~6V
・動作角度範囲:約180°(500→2500μsec時)
・パルス幅範囲: 500 → 2500 μsec
・無負荷速度: 0.12 ± 0.01秒/60 (DC 4.8V) 0.1 ± 0.01秒/60 (DC 6V)
・無負荷電流: 200 ± 20mA (DC 4.8V) 220 ± 20mA (DC 6V)
・停止トルク:1.3 ± 0.01kg・cm(DC 4.8V)1.5 ± 0.1kg・cm(DC 6V)
・停止電流: ≦ 850mA (DC 4.8V) ≦ 1000mA (DC 6V)
・スタンバイ電流: 3 ± 1mA (DC 4.8V) 4 ± 1mA (DC 6V)
#define servoPin 9 // servo Pin
int pos; // angle variable of servo
int pulsewidth; // pulse width variable of servo
void setup() {
pinMode(servoPin, OUTPUT);
//set the angle of servo to 0°
procedure(0);
}
void loop()
{
// goes from 0 degrees to 180 degrees
for (pos = 0; pos <= 180; pos += 1) {
// in steps of 1 degree
// tell servo to go to position in variable 'pos'
procedure(pos);
// control the rotation speed of servo
delay(15);
}
// goes from 180 degrees to 0 degrees
for (pos = 180; pos >= 0; pos -= 1) {
// tell servo to go to position in variable 'pos'
procedure(pos);
delay(15);
}
}
// function to control servo
void procedure(int myangle)
{
//calculate the value of pulse width
pulsewidth = myangle * 11 + 500;
digitalWrite(servoPin,HIGH);
//The duration of high level is pulse width
delayMicroseconds(pulsewidth);
digitalWrite(servoPin,LOW);
// the cycle is 20ms, the low level last for the rest of time
delay((20 - pulsewidth / 1000));
}
●Ultrasonic Sensor
HC-SR04

・Power Supply :+5V DC
・Quiescent Current : <2mA
・Working Current: 15mA
・Effectual Angle: <15°
・Ranging Distance : 2cm – 400 cm
・Resolution : 0.3 cm
・Measuring Angle: 30 degree
・Trigger Input Pulse width: 10uS
↓↓↓
US-015
ESP32系マイコンで動作可能なUS-015に換装します
・HC-SR04ピン互換
・動作電圧3V〜5.5V
・ノイズ耐性向上
・4m程度まで測定可能
超音波センサーの原理
超音波モジュールはトリガー信号を受信すると超音波を発射します。超音波が物体に当たって反射すると、モジュールはエコー信号を出力します。このトリガー信号とエコー信号の時間差から物体までの距離を計測できます。tは、発射した信号が障害物に当たって戻ってくるまでの時間です。空気中の音速は約343m/sです。したがって、距離 = 速度 × 時間となります。超音波は発射されて戻ってくるため、距離の2倍の速度を2で割る必要があります。つまり、超音波で測定される距離は(速度 × 時間)/ 2となります。
1. 超音波モジュールの使用方法とタイミングチャート:SR04のTrigピンの遅延時間を10μs以上に設定すると、距離検出のトリガーとなります。
2. トリガー後、モジュールは自動的に8つの40KHz超音波パルスを送信し、信号が戻ってくるかどうかを検出します。
このステップはモジュールによって自動的に完了します。
3. 信号が戻ってくると、Echoピンからハイレベルが出力されます。
ハイレベルの持続時間は、超音波の送信から戻ってくるまでの時間です。

超音波センサーを手動でブロックして、LEDが点灯するかどうかを確認します。

cm = (duration/2) / 29.1; インチ = (duration/2) / 74; 0.0135 で割ります。
次の式を使用して距離を計算できます。
距離 = (移動時間/2) x 音速
音速は次のとおりです。
343m/s = 0.0343 cm/uS = 1/29.1
cm/uS またはインチに換算すると、13503.9in/s = 0.0135in/uS = 1/74in/uS
波が送信され、物体に当たってからセンサーに戻ってくることを考慮に入れる必要があるため、移動時間を 2 で割る必要があります。
int trigPin = 5; // Trigger
int echoPin = 4; // Echo
long duration, cm, inches;
void setup()
{
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
// The sensor is triggered by a HIGH pulse of 10 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the signal from the sensor: a HIGH pulse whose
// duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
duration = pulseIn(echoPin, HIGH);
// Convert the time into a distance
cm = (duration/2) / 29.1; // Divide by 29.1 or multiply by 0.0343
inches = (duration/2) / 74; // Divide by 74 or multiply by 0.0135
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(250);
if (cm>=2 && cm<=10) {
digitalWrite(10, HIGH);
delay(1000);
digitalWrite(10, LOW);
delay(1000);
}
}
●IR Reception

・Operating Voltage: 3.3-5V(DC)
・Interface: 3PIN
・Output Signal: Digital signal
・Receiving Angle: 90 degrees
・Frequency: 38khz
・Receiving Distance: 10m
#include // IRremote library statement
int RECV_PIN = A0; //define the pins of IR receiver as A0
int LED_PIN = 10;
boolean status_OK = false;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Enable receiver
pinMode(LED_PIN,OUTPUT);
digitalWrite(LED_PIN,LOW);
}
void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
switch (results.value) {
case 0xFF02FD:
if (status_OK) { // LED will go off
digitalWrite(LED_PIN,LOW);
status_OK = false;
} else { // LED will be on
digitalWrite(LED_PIN,HIGH);
status_OK = true;
}
break;
}
irrecv.resume(); // Receive the next value
}
delay(100);
}
●KS0412 keyestudio L298P Shield
L298PはSTマイクロエレクトロニクス社製の優れた高出力モータードライバICで、DCモーター、2相および4相ステッピングモーターを直接駆動できます。

D3はモーターAの速度制御用、D12はモーターAの方向制御用です。D11はモーターBの速度制御用、D13は方向制御用です。
シールド上の 2.54mm ピッチの VIN GND メス ヘッダーを介してUNOボードに電力を供給します。
L298Pシールドの緑色の端子台を介して電源を供給する場合、スライドスイッチは電源制御スイッチとして使用できます
(※UNO R3のDCジャックとL298Pシールドのメスヘッダーを介して電源を供給する場合、スライドスイッチは使用できません)。
Specifications
・Logic part input voltage: DC5V
・Driving part input voltage: Max DC 18V (DC 7-12V recommended)
・Logic part working current: ≤36mA
・Driving part working current: ≤ 2A
・Maximum dissipation power: 25W (T=75℃)
・Control signal input level: High level: 2.3V ≤ Vin ≤ 5V ; Low level: 0V ≤ Vin ≤ 1.5V
・Working temperature: -25℃ to+130℃
・Driver form: Dual power H bridge driving

モーターの回転方向は、HIGH/LOWレベルで決定され、回転方向を決定するピンは一般的なピンです。
モーターの速度は PWM によって制御され、モーターの速度を決定するピンは PWM ピンである必要があります。

#define ML_Ctrl 13 // direction pin of left motor
#define ML_PWM 11 // PWM pin of left motor
#define MR_Ctrl 12 // direction pin of right motor
#define MR_PWM 3 // PWM pin of right motor
void setup()
{
pinMode(ML_Ctrl, OUTPUT);
pinMode(ML_PWM, OUTPUT);
pinMode(MR_Ctrl, OUTPUT);
pinMode(MR_PWM, OUTPUT);
}
void loop()
{
digitalWrite(ML_Ctrl,LOW);
analogWrite (ML_PWM, 200);
digitalWrite(MR_Ctrl,LOW);
analogWrite (MR_PWM, 200);
//front
delay(2000);//delay in 2s
digitalWrite(ML_Ctrl,HIGH);
analogWrite (ML_PWM, 200);
digitalWrite(MR_Ctrl,HIGH);
analogWrite (MR_PWM, 200);
//back
delay(2000);//delay in 2s
digitalWrite(ML_Ctrl,HIGH);
analogWrite (ML_PWM, 200);
digitalWrite(MR_Ctrl, LOW);
analogWrite (MR_PWM, 200);
//left
delay(2000);//delay in 2s
digitalWrite(ML_Ctrl, LOW);
analogWrite (ML_PWM, 200);
digitalWrite(MR_Ctrl,HIGH);
analogWrite (MR_PWM, 200);
//right
delay(2000);//delay in 2s
analogWrite(ML_PWM,0);
analogWrite(MR_PWM,0);
//stop
delay(2000);//delay in 2s
}
●LED Expression Panel

velleman VMA451
Specification
・Working voltage: DC 3.3-5V
・Power loss: 400mW
・Oscillation frequency: 450KHz
・communication: I²C
・chipset: AIP1640
・Drive current: 200mA
・Working temperature: -40~80℃
・Communication method: two-wire bus

#define SCL_Pin A5
#define SDA_Pin A4
unsigned char start01[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char front[] = {0x00,0x00,0x00,0x00,0x00,0x24,0x12,0x09,0x12,0x24,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char back[] = {0x00,0x00,0x00,0x00,0x00,0x24,0x48,0x90,0x48,0x24,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char left[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x28,0x10,0x44,0x28,0x10,0x44,0x28,0x10,0x00};
unsigned char right[] = {0x00,0x10,0x28,0x44,0x10,0x28,0x44,0x10,0x28,0x44,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char STOP01[] = {0x2E,0x2A,0x3A,0x00,0x02,0x3E,0x02,0x00,0x3E,0x22,0x3E,0x00,0x3E,0x0A,0x0E,0x00};
unsigned char clear[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void setup()
{
pinMode(SCL_Pin,OUTPUT);
pinMode(SDA_Pin,OUTPUT);
matrix_display(clear);
}
void loop()
{
matrix_display(start01); delay(2000);
matrix_display(front); delay(2000);
matrix_display(STOP01); delay(2000);
matrix_display(clear); delay(2000);
}
void matrix_display(unsigned char matrix_value[])
{
// set the address plus 1
IIC_start();
IIC_send(0x40); // set the address plus 1 automatically
IIC_end();
// set the data display
IIC_start();
IIC_send(0xc0); // 0xC0~FF: display address 0x00~0F
for (int i = 0;i < 16;i++) IIC_send(matrix_value[i]);
IIC_end();
// set the brightness display
IIC_start();
IIC_send(0x8A); // set pulse width to 4/16
IIC_end();
}
void IIC_start()
{
digitalWrite(SCL_Pin,HIGH); delayMicroseconds(3);
digitalWrite(SDA_Pin,HIGH); delayMicroseconds(3);
digitalWrite(SDA_Pin,LOW); delayMicroseconds(3);
}
void IIC_send(unsigned char send_data)
{
for(char i = 0;i < 8;i++) {
digitalWrite(SCL_Pin,LOW);
delayMicroseconds(3);
if(send_data & 0x01) {
digitalWrite(SDA_Pin,HIGH);
} else {
digitalWrite(SDA_Pin,LOW);
}
delayMicroseconds(3);
digitalWrite(SCL_Pin,HIGH);
delayMicroseconds(3);
send_data = send_data >> 1;
}
}
void IIC_end()
{
digitalWrite(SCL_Pin,LOW);
delayMicroseconds(3);
digitalWrite(SDA_Pin,LOW);
delayMicroseconds(3);
digitalWrite(SCL_Pin,HIGH);
delayMicroseconds(3);
digitalWrite(SDA_Pin,HIGH);
delayMicroseconds(3);
}
|
Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」
「一念発起して何かを始めても、いつも三日坊主で終わってしまう」
「色んなことを先延ばしにしたまま、時間だけが過ぎていく」
そこで本書では、そんな著者が独自に開発した、
まったく新しい目標達成メソッド「100日デザイン」について、
その知識と技術を、余すところなくご紹介します。
まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。
ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。
今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。
ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。
29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!
【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。
基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。
Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説!
500以上のサンプルを掲載。実行結果も確認。
全24章の包括的なチュートリアル。
ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS…
全WEB媒体で効果バツグン!
カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術
小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。
Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード
電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)
|