
私のアイデア:電源を切るときにラジコンの最高速度と記憶を調べるには、速度を上げるときにヘッドライトをオンにする、回転するときにターンシグナルをオンにする、ブレーキをかけるときにブレーキライトをオンにする、駐車時にサイドライトをオンにする、マシンのボタンを押すときにライトを点滅させる(最大速度リセットボタン) 。
構成で使用されるマシン:
- サーボ「HARD HS3004」
- エンジン「Leopard 4370KV」。
- Leopard V2エンジン用レギュレーター
- バッテリーLi-Pol 7.2V 30C 5000mA;
- 受信機「2,4Ghz」3チャンネル。
- 2.4GhzデジタルプロポーショナルR / Cシステムコントロールパネル
タスクはタイプライターで行うことです:
- すべてのライトとボタンを設定する
- Arduino機器をインストールする
- Arduinoでプログラムをダウンロードする
- プログラム設定
ライトの設置。 RCカーフラッシュライトシステムキットから、ワイヤー付きの既製のLEDを取り出しました。

ヘッドライト(これらも寸法です)と方向指示器の取り付け

Arduino NanoおよびGPS機器の設置、両面テープとネジですべてを保護

ネジで固定されたリアウィンドウへのLCDの取り付け
組み立てに必要なもの:
Arduino Nano、価格は200 r。
GPS受信機、価格は900 r。
LED、100 rからの価格。 /白色LED、3個 (ヘッドライトとリバース)、赤2個。 (ブレーキ)、オレンジ2個 (ウインカー)
ワイヤ、価格は100 r。
LCDおよびI2C、価格は200 r。
ボタンと抵抗器、価格は100 r。 /ボタン(速度リセットおよび点滅ライト)および10 kOhm抵抗
プロジェクト価格は1600ルーブルでした。
1. Arduino Nano

2. LCD 1602およびI2C

LCD

LCDの背面とそれにはんだ付けされたI2Cモジュール
3. GPS-GY-NEO-6MV2(GPS受信機)

GPS受信機
arduinoのプログラムをコンピューターにインストールし、スケッチをarduinoにアップロードします。
十分なライブラリがない場合は、LiquidCrystal_I2C.h、EEPROM.h、Wire.h、SoftwareSerial.h、TinyGPS.hをダウンロードしてコンピューターにインストールする必要があります。
スケッチ自体:
スケッチ
#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); //I2C: SDA pin A4 / SCL pin A5 /VCC pin +3,3V /GND pin GND
#include <SoftwareSerial.h>
#include <TinyGPS.h>
TinyGPS gps;
SoftwareSerial ss(4, 3); // GPS: RX pin D4, TX pin D3, VCC pin +5V ,GND pin GND
static void smartdelay(unsigned long ms);
static void print_float(float val, float invalid, int len, int prec);
static void print_int(unsigned long val, unsigned long invalid, int len);
static void print_date(TinyGPS &gps);
float flat, flon; //
unsigned long fix_age, time, date, speed, course; //
int value;
int value2;
int pin = 7; // D7
int pins = 8; // D8
int pin1 = 11;// : D11
int pin2 = 12;// : D12
int pin3 = 10;// : D10
int pin4 = 9;// : D9
int pin6 = 6;// : D6
unsigned long duration1;// 1372 , 1834 ,973
unsigned long duration2;// 1834 , 973
int pin7 = 2;// : pin D2
int pin8 = 13;// pin D13
const int buttonPin = 5; // () , pin D5
int buttonState = 0; //
void setup()
{
pinMode(pin, INPUT);
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pins, INPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin6, OUTPUT);
pinMode(pin7, OUTPUT);
pinMode(pin8, OUTPUT);
pinMode(buttonPin, INPUT); // , ,
Serial.begin(115200); //
ss.begin(9600); //gps
Serial.println("RRRR777");
lcd.init(); //
lcd.clear();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("RRRR777 2015");
lcd.setCursor(0, 1);
lcd.print(" GPS RCavto");
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500); //
digitalWrite(pin8, HIGH); //
digitalWrite(pin7, LOW); //
delay(500); //
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500); //
digitalWrite(pin8, HIGH); //
digitalWrite(pin7, LOW); //
delay(500); //
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500); //
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500); //
digitalWrite(pin8, HIGH); //
digitalWrite(pin7, LOW); //
delay(500); //
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500); //
digitalWrite(pin8, HIGH); //
digitalWrite(pin7, LOW); //
delay(500); //
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500);
digitalWrite(pin7, LOW); //
digitalWrite(pin8, LOW); //
delay(500); //
lcd.clear();
delay(500);
}
void loop()
{
duration1 = pulseIn(pin, HIGH);
duration2 = pulseIn(pins, HIGH);
if ((duration1 > 1500) && (duration1 < 2000))
{digitalWrite(pin1, HIGH); // LEFT
delay(250); //
digitalWrite(pin1, LOW); //
}
if ((duration1 < 1300) && (duration1 > 800))
{digitalWrite(pin2, HIGH); // RIGHT
delay(250); //
digitalWrite(pin2, LOW); //
}
if ((duration2 > 1480) && (duration2 < 2000))//
{ analogWrite(pin4, 20); //
analogWrite(pin3, 255); //
delay(500); //
}
if ((duration2 < 1480) && (duration2 > 800)) //
{analogWrite(pin4, 255); //
analogWrite(pin3, 20); // +*
digitalWrite(pin6, LOW); //
delay(50);
}
if ((duration2 < 1400) && (duration2 > 800))//
{//digitalWrite(pin4, LOW); //
digitalWrite(pin6, HIGH); //
delay(500); //
}
float flat, flon;
unsigned long age, date, time, chars = 0;
unsigned short sentences = 0, failed = 0;
float h = gps.f_speed_kmph(); // speed in km/hr
int h1 = (h-(int)h)*100;
Serial.println(h);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Mersedes GT3"); //
lcd.setCursor(0, 1);
lcd.print("S=");
lcd.print(h);
lcd.setCursor(8, 1);
lcd.print("MS=");
value = EEPROM.read(0); //
value2 = EEPROM.read(1);
lcd.print(value);
lcd.print(".");
lcd.print(value2);
buttonState = digitalRead(buttonPin);//
if (buttonState == HIGH)// LOW) ///
{
EEPROM.write (0,0);
EEPROM.write (1,0);
lcd.setCursor(8, 1);
lcd.print("MS=RESET");
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500); //
digitalWrite(pin8, HIGH); //
digitalWrite(pin7, LOW); //
delay(500); //
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500); //
digitalWrite(pin8, HIGH); //
digitalWrite(pin7, LOW); //
delay(500);
lcd.setCursor(0, 1);
lcd.print("Rusticktigr777@mail.ru");
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500); //
digitalWrite(pin8, HIGH); //
digitalWrite(pin7, LOW); //
delay(500); //
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500); //
digitalWrite(pin8, HIGH); //
digitalWrite(pin7, LOW); //
delay(500); //
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500);
digitalWrite(pin8, HIGH); //
digitalWrite(pin7, LOW); //
delay(500); //
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500); //
digitalWrite(pin8, HIGH); //
digitalWrite(pin7, LOW); //
delay(500); //
digitalWrite(pin7, HIGH); //
digitalWrite(pin8, LOW); //
delay(500);
digitalWrite(pin7, LOW); //
digitalWrite(pin8, LOW); //
}
if (h > value)//RECORD
{
EEPROM.write (0,h);
EEPROM.write (1,h1);
}
smartdelay(500);
}
static void smartdelay(unsigned long ms)
{
unsigned long start = millis();
do
{
while (ss.available())
gps.encode(ss.read());
} while (millis() - start < ms);
}
static void print_float(float val, float invalid, int len, int prec)
{
if (val == invalid)
{
while (len-- > 1)
Serial.print('*');
Serial.print(' ');
}
else
{
Serial.print(val, prec);
int vi = abs((int)val);
int flen = prec + (val < 0.0 ? 2 : 1); // . and -
flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
for (int i=flen; i<len; ++i)
Serial.print(' ');
}
smartdelay(0);
}
static void print_int(unsigned long val, unsigned long invalid, int len)
{
char sz[32];
if (val == invalid)
strcpy(sz, "*******");
else
sprintf(sz, "%ld", val);
sz[len] = 0;
for (int i=strlen(sz); i<len; ++i)
sz[i] = ' ';
if (len > 0)
sz[len-1] = ' ';
Serial.print(sz);
smartdelay(0);
}
static void print_date(TinyGPS &gps)
{
int year;
byte month, day, hour, minute, second, hundredths;
unsigned long age;
gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
if (age == TinyGPS::GPS_INVALID_AGE)
Serial.print("********** ******** ");
else
{
char sz[32];
sprintf(sz, "%02d/%02d/%02d %02d:%02d:%02d ",
month, day, year, hour, minute, second);
Serial.print(sz);
}
print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
smartdelay(0);
}
Arduinoへのワイヤの接続:
ワイヤー
I2C:SDAピンA4 / SCLピンA5 / VCCピン+ 3.3V / GNDピンGND(最大輝度とバックライトを設定)
GPS:RXピンD4、TXピンD3、VCCピン+ 5V、GNDピンGND
リセットボタン(通常は開いているボタン):1つのVCCピン+ 5Vピン、ピンD5の別のピン、ピンD5の抵抗、ピンGND
LED:ヘッドライト(寸法)ピンD9の白い「+」
LED:テールライト(寸法)ピンD10の赤い「+」
LED:ピンD6の反転白「+」
LED:ヘッドライト(寸法)ピンD9の白い「+」
LED:ピンD11のオレンジ色の「+」を左に
LED:ピンD12の右オレンジ「+」を回します
LED:ピンD2の赤い「+」点滅
LED:ピンD13のフラッシャーブルー「+」
ピンGNDのすべてのLED「-」
サーボターンの入力からピンD7のターンシグナル用のワイヤを接続します(通常、3本のワイヤが白ではんだ付けされ、ワイヤをピンD7に出力します。赤-パワープラス、黒-パワーマイナス、レシーバーに接続)。
エンジンサーボの入力から移動用のワイヤをピンD8に接続します(3本のワイヤ:通常は白で、はんだ付けし、ワイヤをピンD8に出力します。赤-パワープラス、黒-パワーマイナス、レシーバーに接続します)。
Arduinoの電力は、「+」バッテリーからVINピンに直接供給されます(7.2Vで)。 バッテリー「-」から直接ArduinoのGND共通線。
GPS:RXピンD4、TXピンD3、VCCピン+ 5V、GNDピンGND
リセットボタン(通常は開いているボタン):1つのVCCピン+ 5Vピン、ピンD5の別のピン、ピンD5の抵抗、ピンGND
LED:ヘッドライト(寸法)ピンD9の白い「+」
LED:テールライト(寸法)ピンD10の赤い「+」
LED:ピンD6の反転白「+」
LED:ヘッドライト(寸法)ピンD9の白い「+」
LED:ピンD11のオレンジ色の「+」を左に
LED:ピンD12の右オレンジ「+」を回します
LED:ピンD2の赤い「+」点滅
LED:ピンD13のフラッシャーブルー「+」
ピンGNDのすべてのLED「-」
サーボターンの入力からピンD7のターンシグナル用のワイヤを接続します(通常、3本のワイヤが白ではんだ付けされ、ワイヤをピンD7に出力します。赤-パワープラス、黒-パワーマイナス、レシーバーに接続)。
エンジンサーボの入力から移動用のワイヤをピンD8に接続します(3本のワイヤ:通常は白で、はんだ付けし、ワイヤをピンD8に出力します。赤-パワープラス、黒-パワーマイナス、レシーバーに接続します)。
Arduinoの電力は、「+」バッテリーからVINピンに直接供給されます(7.2Vで)。 バッテリー「-」から直接ArduinoのGND共通線。
設定:コーナリングまたは移動時に正しく動作しない場合は、コンピューターのプログラムを介して値を独自に変更します:データが処理されておらず、GPSの緑色のLEDが点灯している場合、行のif((durationX> XXXX)&&(durationX <XXXXX)) / RX RXピンD4、TXピンD3を交換する必要がある場合があります
PSアイデアは、プログラミングを知っているシンプルなものであることが判明しました。また、エンジンの温度とエンジンに関する通知をこのマシンに追加し、時間、タコメーター、ビデオカメラをMercedes-Benz GT3に追加できます。
皆さんに幸運を!