Моя идея: узнать максимальную скорость в радиоуправляемой машинке и запоминание при выключение питания, добавить включение фар при наборе скорости, включение поворотников при поворотах, включение стопсигналов при торможение, включение габаритных огней при стоянке, мигалок при нажатие кнопки на машинке(кнопка сброса максимальной скорости).

Машинка, которая используется в комплектации:
  • Сервопривод «HARD HS3004»
  • Двигатель «Leopard 4370KV»;
  • Регулятор для двигателя «Leopard V2»
  • Батарейка «Li-Pol 7,2V 30C 5000mA»;
  • Приемник «2,4Ghz» 3 канала;
  • Пульт управления«2,4Ghz Digital Proportional R/C system»

Задача сделать на имеющей машинке:
  1. Установить все световые огни и кнопку
  2. Установить аппаратуру ардуино
  3. Закачать программу в ардуино
  4. Настройка программы

Установка световых огней. Я взял готовые светодиоды с проводами из набора «RC Car Flashing Light System».


Установка передних фар (они же являются габаритами) и поворотников


Установка аппаратуры ардуино Nano и GPS, все закрепил двухсторонем скотчем и винтами


Установка LCD на заднем стекле, закрепил винтами

Что понадобится для сборки:
Arduino Nano, цена от 200 р.
GPS приемник, цена от 900 р.
Светодиоды, цена от 100 р. / Светодиоды белые, 3 шт. (передние фары и задний ход), красные 2 шт. (тормоз), оранжевые 2 шт. (поворотники)
Провода, цена от 100 р.
LCD и I2C, цена от 200 р.
Кнопка и резистор, цена от 100 р. / Кнопка (сброс скорости и включение мигалок) и резистор 10 кОм

Цена проекта получилось 1600 рублей.

1. Arduino Nano



2. LCD 1602 и I2C


LCD


Задняя сторона LCD и припаял к нему модуль I2C

3. GPS-GY-NEO-6MV2 (GPS приемник)


GPS-приемник

Устанавливаем программу для ардуино в комп и закачиваем скетч в ардуино.

Если не хватает библиотеки, то нужно их скачать и установить на компе: 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); }

Подключение проводов к ардуино:
Провода
I2C: SDA pin A4 / SCL pin A5 /VCC pin +3,3V /GND pin GND (установить максимальная яркость и подсветку)
GPS: RX pin D4, TX pin D3, VCC pin +5V ,GND pin GND
Кнопка сброса (нормально разомкнутая кнопка): один контакт VCC pin +5V, другой контакт на pin D5, резистор на pin D5 и pin GND
Светодиоды: Фары передние (габариты) белые «+» на pin D9
Светодиоды: Фары задние (габариты) красные «+» на pin D10
Светодиод: Задний ход белый «+» на pin D6
Светодиоды: Фары передние (габариты) белые «+» на pin D9
Светодиод: Поворот влево оранжевый «+» на pin D11
Светодиод: Поворот вправо оранжевый «+» на pin D12
Светодиод: Мигалка красный «+» на pin D2
Светодиод: Мигалка синий «+» на pin D13
Для всех Светодиодов «-» на pin GND

Подключаем провод для поворотников на pin D7 от входа сервомашинки поворотов (три провода обычно это белый к нему подпаеваемся и выводим провод на pin D7, красный — питание плюс, черный — питание минус, подключается к приемнику).

Подключаем провод для движения на pin D8 от входа сервомашинки двигателя (три провода: обычно это белый, к нему подпаеваемся и выводим провод на pin D8, красный — питание плюс, черный — питание минус, подключается к приемнику).

Питание для Ардуино берется прямо из аккумулятора «+» на pin VIN (в моем 7,2в). Общий провод GND для Ардуино прямо из аккумулятора «-».


Настройка: если не правильно срабатывает при поворотах или движении, то через программу на компьютере изменяем значения на свои: в строчках if ((durationХ > ХХХХ) && (durationХ < ХХХХ)) если не обрабатывается данные и горит зеленый светодиод на плате GPS, TX/RX возможно нужно поменять местами RX pin D4, TX pin D3,)

P.S. Идея оказалось несложной, зная программирование, можно еще добавить в эту машинку температуру в двигателе и оповещение о ней, добавить моточасы, тахометр и видеокамеру на «Mercedes-Benz GT3».

Всем удачи!

Комментарии (18)


  1. Vovanys
    12.08.2015 13:32
    +7

    Видео давай. И какая скорость то в итоге?


  1. koltykov
    12.08.2015 15:41
    +3

    Исходник под спойлером жесть, да и сама статья аля инстрактэблс, вот список компонентов, вот код, дерзайте. А вопросов больше чем ответов, да без видео как-то не айс.
    Для чего тут GPS? Просто отобразить координаты на LCD? Если да, то смысл?

    узнать максимальную скорость в радиоуправляемой машинке

    Так и какая?


    1. zvyagaaa
      12.08.2015 16:00

      По-моему GPS для цели узнать скорость машинки плохо подходит. Слишком большая погрешность.


    1. malyazin_2010
      12.08.2015 17:00

      тут исходник нагляднее www.pvsm.ru/pesochnitsa/95717


  1. sklipus
    12.08.2015 16:24

    Почему не поставить датчик оборотов?


  1. alexzzam
    12.08.2015 16:48

    А что за модуль I2C?
    То есть, я понимаю, что он делает, а называется как?


    1. nochkin
      12.08.2015 20:21

      Так и называется: i2c модуль для LCD 1602.
      Просто для экономии пинов на Atmega328. Обычно такие делают на базе PCF8574 (8-бит I/O расширитель).


  1. Dark_Purple
    12.08.2015 17:07

    СКЕТЧ

    Форматирование, не не слышал.


  1. Riketta
    12.08.2015 17:48
    +1

    Вот вам реальный наземный RC DIY :)


  1. RRRR777
    12.08.2015 19:04

    Модуль спутниковой навигации GPS6MV2 отрабатывает нормально, моя максимальная зафиксированная скорость 38 км/ч.
    Модуль I2C нужен для подключения LCD.
    Скетч:
    www.pvsm.ru/pesochnitsa/95717


  1. Poytu
    13.08.2015 09:03

    Нужна минимум одна фоточка внутренностей машины!


  1. RRRR777
    13.08.2015 13:08


    4 провода соединяют со схемой (+,-, контакт от поворотов, контакт от движения)




    1. Delsian
      13.08.2015 14:18

      Изолента не синяя, не будет работать…


  1. Karapuzzzz
    13.08.2015 14:19

    Намного точнее и энергоэффективнее будет датчик скорости вращения на основе эффекта Холла.


  1. RRRR777
    14.08.2015 16:11
    -1

    Скетч без GPS(только световые эффекты):
    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
    // питание «+» на pin VIN (в моем 7,2в).
    // Для всех Светодиодов «-» на pin GND

    void setup()
    {
    pinMode(pin, INPUT);
    pinMode(pins, INPUT);
    pinMode(pin1, OUTPUT);
    pinMode(pin2, OUTPUT);
    pinMode(pins, INPUT);
    pinMode(pin3, OUTPUT);
    pinMode(pin4, OUTPUT);
    pinMode(pin6, OUTPUT);
    Serial.begin(115200); //для отладки
    Serial.println(«RRRR777»);
    }
    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); // ждем секунду
    }
    }


  1. RRRR777
    15.08.2015 12:41
    -2

    Скетч: GPS и световые эффекты:

    #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 vo


  1. RRRR777
    15.08.2015 20:16

    Монтажная схема RC Авто c GPS:


  1. RRRR777
    15.08.2015 20:59

    Подключение кнопки к Ардуино Nano: