Дописать скетч хронографа

Pauls777
Offline
Зарегистрирован: 25.11.2016

Сделать энергонезависимую память EEROM выстрелов на 60-100 с просмотром и сброса оной

Или хотя б что б хранилась память до выключения прибора.

    Serial.println();
  }
  flagbut = 0;
  
//*********************     режим ввода массы пульки      ***************************************

    if (set == 2) {                //если 2 режим
      if (flagmass == 0) {         //флажок чтобы показать надпись только 1 раз
        Serial.print("Set the mass of bullet (gramm): ");     //надпись
        lcd.begin(16, 2);
        lcd.print("set mass bullet");
        lcd.print(mass);
        flagmass = 1;
        delay(1000);
      }
    rightstat = digitalRead(rightbut);          //Читаем, что с кнопкой "Вправо"
    if (rightstat == HIGH && flagbut == 0) {    //Если нажата, и флаг опущен то:
      flagbut = 1;                              //Поднять флаг кнопок
      digitalWrite(13, HIGH);                   // зажигаем светодиод
      delay(100);                               // ждем секунду
      digitalWrite(13, LOW);                    // выключаем светодиод
      ++massset;                                //Увеличить переменную массы на 1
      if(massset > 7) {                         // Если номер режима выше требуемого
          massset = 0;                          // то отсчет начинается с нуля
          }
      flagbut = 0;                              //Опустить флаг кнопок
      }  
    leftstat = digitalRead(leftbut);            //Читаем, что с кнопкой "Влево"
     if (leftstat == HIGH && flagbut == 0) {    //Если нажата, и флаг опущен то: 
      flagbut = 1;                              //Поднять флаг кнопок
      digitalWrite(13, HIGH);                   // зажигаем светодиод
      delay(100);                               // ждем секунду
      digitalWrite(13, LOW);                    // выключаем светодиод
      --massset;                                //Уменьшить переменную массы на 1
      if(massset < 0)   {                       // Если номер режима ниже требуемого
          massset = 7;                          // то отсчет начинается с конца
          }
      flagbut = 0;                              //Опустить флаг кнопок
      }
    delay(100);                             //защита от дребезга 
    switch (massset)
    {
      case 0: mass = 0.20;                                               //Если значение massset=0, то задаем массу 0.20 гр.
           lcd.begin(16, 2);
           lcd.print("   Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.43    0.23->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
      case 1: mass = 0.23;                                               //Если значение massset=1, то задаем массу 0.23 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
           lcd.setCursor(0, 1);
           lcd.print("<-0.20    0.25->");                                //Выводим предыдущее и следующее значение массы
         break;
      case 2: mass = 0.25;                                               //Если значение massset=2, то задаем массу 0.25 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
           lcd.setCursor(0, 1);
           lcd.print("<-0.23    0.28->");                                //Выводим предыдущее и следующее значение массы
         break;
      case 3: mass = 0.28;                                               //Если значение massset=3, то задаем массу 0.28 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.25    0.30->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
      case 4: mass = 0.3;                                               //Если значение massset=4, то задаем массу 0.30 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.28    0.36->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
      case 5: mass = 0.36;                                               //Если значение massset=5, то задаем массу 0.36 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.30    0.40->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
      case 6: mass = 0.4;                                               //Если значение massset=6, то задаем массу 0.40 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.36    0.43->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
      case 7: mass = 0.43;                                               //Если значение massset=7, то задаем массу 0.43 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.40    0.20->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
    }  

//***************************************      Задание массы через COM порт      ******************************************************
     
    if (Serial.available() > 0)                                          //если есть что на вход с порта
    {
      massstring = Serial.readStringUntil('\n');                         //присвоить massstring всё что было послано в порт
      flagmassset = 1;                                                   //поднять флажок
    }
    if (flagmassset == 1) {                                              //если флажок поднят (приняли значение в порт)
      Serial.println(massstring);                                        //написать введённое значение
      Serial.println(" ");
      massstring.toCharArray(masschar, sizeof(masschar));                //перевод значения в float (десятичная дробь)
      mass = atof(masschar);                                             //всё ещё перевод
      flagmass = 0;                                                      //опустить все флажки
      flagmassset = 0;
      initial = 0;
      flagbut = 0;
      set = 0;                                                           //показать приветственную надпись
    }
  }
  
//*********************     режим замера скорости      ***************************************

  if (gap1 != 0 && gap2 != 0 && gap2 > gap1 && set == 0) {    //если пуля прошла оба датчика в 0 режиме
    velocity = (1000000 * (dist) / (gap2 - gap1));            //вычисление скорости как расстояние/время
    energy = velocity * velocity * mass / 2000;               //вычисление энергии
    velocity2 = sqrt(energy * 2000 / 0.2);
    digitalWrite(13, HIGH);                   // зажигаем светодиод
    delay(100);                               // ждем секунду
    digitalWrite(13, LOW);                    // выключаем светодиод
    Serial.print("Shot №");
    Serial.println(n);                                 //вывод номера выстрела
    Serial.print("Speed ");
    Serial.print(mass);
    Serial.print(" :");
    Serial.println(velocity);                          //вывод скорости в COM
    Serial.print("Energy ");
    Serial.print(mass);
    Serial.print(" : ");
    Serial.println(energy);                             //вывод энергии в COM
    Serial.print("Speed 0.2: ");
    Serial.println(velocity2);                          //вывод скорости в COM
    Serial.println(" ");
    lcd.begin(16, 2);
    lcd.print("#");
    lcd.print(n);
    lcd.print(" ");
    lcd.print("V");
    lcd.print(mass);
    lcd.print("=");
    lcd.print(velocity);
    lcd.setCursor(0, 1);
    lcd.print("E=");
    lcd.print(energy);
    lcd.print(" V2=");
    lcd.print(velocity2);
    gap1 = 0;                                 //сброс значений
    gap2 = 0;
    n++;                                      //номер выстрела +1
  }

  if (micros() - gap1 > 1000000 && gap1 != 0 && set != 1) { // (если пуля прошла первый датчик) И (прошла уже 1 секунда, а второй датчик не тронут)
    Serial.println("FAIL"); //выдаёт FAIL через 1 секунду, если пуля прошла через первый датчик, а через второй нет
    lcd.print("FAIL");
    gap1 = 0;
    gap2 = 0;
  }
  
//*********************     режим скорострельности      ***************************************

  if (set == 3) {
    if (rapidflag == 0) {
      Serial.println("Welcome to the fire rate test!");
      Serial.println("");
      lcd.begin(16, 2);
      lcd.print("Fire rate test");
      rapidflag = 1;                                                        //показать надпись один раз
    }
    if (gap1 != 0) {                                                        //если пролетели через первый датчик
      rapidtime = 60 / ((float)(gap1 - lastshot) / 1000000);                //расчет скорострельности выстр/мин
      lastshot = gap1;                                                      //запомнить время между выстрелами
      Serial.println("Fire rate (shot/min): ");                             //вывод
      digitalWrite(13, HIGH);                   // зажигаем светодиод
      delay(100);                               // ждем секунду
      digitalWrite(13, LOW);                    // выключаем светодиод
      Serial.println(rapidtime);
      Serial.println(" ");
      lcd.begin(16, 2);
      lcd.print("Shot/min): ");
      lcd.print(rapidtime);
      gap1 = 0;
    }
  }
  delay(200);    //задержка для стабильности
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Скетч без начала и, возможно, без конца + две строки пояснений. Щас народ разберётся и поможет.

Pauls777
Offline
Зарегистрирован: 25.11.2016
#include <LiquidCrystal.h>
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);                                                        //Подключаем дисплей LCD1602
const int leftbut = 10;                                                                     //Сюда подключена кнопка "Влево"
const int okbut = 11;                                                                       //Сюда подключена кнопка "Ок"
const int rightbut = 12;                                                                    //Сюда подключена кнопка "Вправо"
const int LED = 13;                                                                         //Сюда подключен встроенный светодиод
char masschar[5];                                                                           //массив символов для перевода
String massstring;                                                                          //строка, в которую задаётся масса в режиме выбора массы
int mode, set, setmass, rapidtime, massset, setmode;                                        //Переменные
boolean initial, show, flagmass, flagmassset, flagbut, button, state, rapidflag, flagtest;  //флажки
int n = 1;                                                                                  //номер выстрела, начиная с 1
int leftstat = 0;                                                                           //Задаем статус кнопки "Влево"
int okstat = 0;                                                                             //Задаем статус кнопки "Ок"
int rightstat = 0;                                                                          //Задаем статус кнопки "Вправо"
float velocity, velocity2, energy;                                                          //переменная для хранения скорости
float mass = 0.25;                                                                          //масса снаряда в килограммах
float dist = 0.1;                                                                           //расстояние между датчиками в метрах
volatile unsigned long gap1, gap2;                                                          //отметки времени прохождения пулей датчиков
unsigned long lastshot;                                                                     //Время между выстрелами

void setup() {
  Serial.begin(9600);    //открываем COM порт
  attachInterrupt(1, start, RISING);   //аппаратное прерывание при прохождении первого датчика
  attachInterrupt(0, finish, RISING);    //аппаратное прерывание при прохождении второго датчика
  pinMode(10, INPUT);       //кнопка "влево" подключена сюда
  pinMode(11, INPUT);       //кнопка "Ок" подключена сюда
  pinMode(12, INPUT);       //кнопка "вправо" подключена сюда
  pinMode(13, OUTPUT);      //встроенный светодиод
}
void start()
{
  if (gap1 == 0) { //если измерение еще не проводилось
    gap1 = micros(); //получаем время работы ардуино с момента включения до момента пролетания первого датчика пулей
  }
}
void finish()
{
  if (gap2 == 0) { //если измерение еще не проводилось
    gap2 = micros(); //получаем время работы ардуино с момента включения до момента пролетания второго датчика пулей
  }
}
void loop() {
  if (initial == 0) {                        //флажок первого запуска
    Serial.println("Press 3 to rapidity mode");                      //режим измерения скорострельности
    Serial.println("Press 2 to mass set mode");                      //режим выбора массы снаряда
    Serial.println("Press 1 to service mode");                       //режим отладки (резисторы)
    Serial.println("Press 0 speed measure mode (default)");          //выход из режимов
    Serial.println("System is ready, shooting please");              //уведомление о том, что хрон готов к работе
    Serial.println(" ");
    int flagbut = 0;                       // флаг состояния
    int regim = 0;                         // Переключалка
    lcd.begin(16, 2);                      //подключаем дисплей
    lcd.print("System is ready");          //Выводим сообщение о готовности системы в первую строку
    lcd.setCursor(0, 1);                   //переводим курсор во вторую строку
    lcd.print("Shooting please");          //Выводим сообщение с предложением стрелять
    initial = 1;                           //первый запуск, больше не показываем сообщения
  }
    okstat = digitalRead(okbut);
    if (okstat == HIGH && flagbut == 0)
      { 
      set ++;
       digitalWrite(13, HIGH);   // зажигаем светодиод
       delay(100);              // ждем секунду
       digitalWrite(13, LOW);    // выключаем светодиод
      flagbut = 1;
      if(set > 3)   {                        // Если номер режима превышает требуемого
          flagmass = 0;                      //опустить все флажки
          flagmassset = 0;
          initial = 0;
          flagbut = 0;
          rapidflag = 0;
          flagtest = 0;
          set = 0;                           //показать приветственную надпись
          }    
      }
    delay(100);                              //защита от дребезга 

  if (Serial.available() > 0 && set != 2) {  //если есть какие буквы на вход с порта и не выбран 2 режим
    int val = Serial.read();                 //прочитать что было послано в порт
    switch (val) {                           //оператор выбора
      case 48: set = 0; flagmass = 0;
      rapidflag = 0; initial = 0; break;     //если приняли 0 то выбрать 0 режим
      case 49: set = 1; break;               //если приняли 1 то запустить режим 1
      case 50: set = 2; break;               //если приняли 2 то запустить режим 2
      case 51: set = 3; break;               //если приняли 3 то запустить режим 3
    }
  }
//*********************     режим проверки      ***************************************
  if (set == 1) {                  //если 1 режим
    if (flagtest == 0) {           //флажок чтобы показать надпись только 1 раз
    lcd.begin(16, 2);
    lcd.print("Test mode");
    delay(1000);
    flagtest = 1;
    }
    Serial.print("sensor 1: ");
    Serial.println(analogRead(2));  //показать значение на первом датчике
    lcd.begin(16, 2);
    lcd.print("sensor 1: ");
    lcd.print(analogRead(2));
    Serial.print("sensor 2: ");
    Serial.print(analogRead(4));   //показать значение на втором датчике
    lcd.setCursor(0, 1);
    lcd.print("sensor 2: ");
    lcd.print(analogRead(4));
    Serial.println();
  }
  flagbut = 0;
  
//*********************     режим ввода массы пульки      ***************************************

    if (set == 2) {                //если 2 режим
      if (flagmass == 0) {         //флажок чтобы показать надпись только 1 раз
        Serial.print("Set the mass of bullet (gramm): ");     //надпись
        lcd.begin(16, 2);
        lcd.print("set mass bullet");
        lcd.print(mass);
        flagmass = 1;
        delay(1000);
      }
    rightstat = digitalRead(rightbut);          //Читаем, что с кнопкой "Вправо"
    if (rightstat == HIGH && flagbut == 0) {    //Если нажата, и флаг опущен то:
      flagbut = 1;                              //Поднять флаг кнопок
      digitalWrite(13, HIGH);                   // зажигаем светодиод
      delay(100);                               // ждем секунду
      digitalWrite(13, LOW);                    // выключаем светодиод
      ++massset;                                //Увеличить переменную массы на 1
      if(massset > 7) {                         // Если номер режима выше требуемого
          massset = 0;                          // то отсчет начинается с нуля
          }
      flagbut = 0;                              //Опустить флаг кнопок
      }  
    leftstat = digitalRead(leftbut);            //Читаем, что с кнопкой "Влево"
     if (leftstat == HIGH && flagbut == 0) {    //Если нажата, и флаг опущен то: 
      flagbut = 1;                              //Поднять флаг кнопок
      digitalWrite(13, HIGH);                   // зажигаем светодиод
      delay(100);                               // ждем секунду
      digitalWrite(13, LOW);                    // выключаем светодиод
      --massset;                                //Уменьшить переменную массы на 1
      if(massset < 0)   {                       // Если номер режима ниже требуемого
          massset = 7;                          // то отсчет начинается с конца
          }
      flagbut = 0;                              //Опустить флаг кнопок
      }
    delay(100);                             //защита от дребезга 
    switch (massset)
    {
      case 0: mass = 0.20;                                               //Если значение massset=0, то задаем массу 0.20 гр.
           lcd.begin(16, 2);
           lcd.print("   Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.43    0.23->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
      case 1: mass = 0.23;                                               //Если значение massset=1, то задаем массу 0.23 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
           lcd.setCursor(0, 1);
           lcd.print("<-0.20    0.25->");                                //Выводим предыдущее и следующее значение массы
         break;
      case 2: mass = 0.25;                                               //Если значение massset=2, то задаем массу 0.25 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
           lcd.setCursor(0, 1);
           lcd.print("<-0.23    0.28->");                                //Выводим предыдущее и следующее значение массы
         break;
      case 3: mass = 0.28;                                               //Если значение massset=3, то задаем массу 0.28 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.25    0.30->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
      case 4: mass = 0.3;                                               //Если значение massset=4, то задаем массу 0.30 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.28    0.36->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
      case 5: mass = 0.36;                                               //Если значение massset=5, то задаем массу 0.36 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.30    0.40->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
      case 6: mass = 0.4;                                               //Если значение massset=6, то задаем массу 0.40 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.36    0.43->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
      case 7: mass = 0.43;                                               //Если значение massset=7, то задаем массу 0.43 гр.
           lcd.begin(16, 2);
           lcd.print("Mass = ");
           lcd.print(mass);                                              //вывод значения массы на дисплей
           lcd.setCursor(0, 1);
           lcd.print("<-0.40    0.20->");                                //Выводим предыдущее и следующее значение массы
        Serial.println("Mass = ");
        Serial.println(mass);                                            //вывод значения массы в COM порт
         break;
    }  

//***************************************      Задание массы через COM порт      ******************************************************
     
    if (Serial.available() > 0)                                          //если есть что на вход с порта
    {
      massstring = Serial.readStringUntil('\n');                         //присвоить massstring всё что было послано в порт
      flagmassset = 1;                                                   //поднять флажок
    }
    if (flagmassset == 1) {                                              //если флажок поднят (приняли значение в порт)
      Serial.println(massstring);                                        //написать введённое значение
      Serial.println(" ");
      massstring.toCharArray(masschar, sizeof(masschar));                //перевод значения в float (десятичная дробь)
      mass = atof(masschar);                                             //всё ещё перевод
      flagmass = 0;                                                      //опустить все флажки
      flagmassset = 0;
      initial = 0;
      flagbut = 0;
      set = 0;                                                           //показать приветственную надпись
    }
  }
  
//*********************     режим замера скорости      ***************************************

  if (gap1 != 0 && gap2 != 0 && gap2 > gap1 && set == 0) {    //если пуля прошла оба датчика в 0 режиме
    velocity = (1000000 * (dist) / (gap2 - gap1));            //вычисление скорости как расстояние/время
    energy = velocity * velocity * mass / 2000;               //вычисление энергии
    velocity2 = sqrt(energy * 2000 / 0.2);
    digitalWrite(13, HIGH);                   // зажигаем светодиод
    delay(100);                               // ждем секунду
    digitalWrite(13, LOW);                    // выключаем светодиод
    Serial.print("Shot №");
    Serial.println(n);                                 //вывод номера выстрела
    Serial.print("Speed ");
    Serial.print(mass);
    Serial.print(" :");
    Serial.println(velocity);                          //вывод скорости в COM
    Serial.print("Energy ");
    Serial.print(mass);
    Serial.print(" : ");
    Serial.println(energy);                             //вывод энергии в COM
    Serial.print("Speed 0.2: ");
    Serial.println(velocity2);                          //вывод скорости в COM
    Serial.println(" ");
    lcd.begin(16, 2);
    lcd.print("#");
    lcd.print(n);
    lcd.print(" ");
    lcd.print("V");
    lcd.print(mass);
    lcd.print("=");
    lcd.print(velocity);
    lcd.setCursor(0, 1);
    lcd.print("E=");
    lcd.print(energy);
    lcd.print(" V2=");
    lcd.print(velocity2);
    gap1 = 0;                                 //сброс значений
    gap2 = 0;
    n++;                                      //номер выстрела +1
  }

  if (micros() - gap1 > 1000000 && gap1 != 0 && set != 1) { // (если пуля прошла первый датчик) И (прошла уже 1 секунда, а второй датчик не тронут)
    Serial.println("FAIL"); //выдаёт FAIL через 1 секунду, если пуля прошла через первый датчик, а через второй нет
    lcd.print("FAIL");
    gap1 = 0;
    gap2 = 0;
  }
  
//*********************     режим скорострельности      ***************************************

  if (set == 3) {
    if (rapidflag == 0) {
      Serial.println("Welcome to the fire rate test!");
      Serial.println("");
      lcd.begin(16, 2);
      lcd.print("Fire rate test");
      rapidflag = 1;                                                        //показать надпись один раз
    }
    if (gap1 != 0) {                                                        //если пролетели через первый датчик
      rapidtime = 60 / ((float)(gap1 - lastshot) / 1000000);                //расчет скорострельности выстр/мин
      lastshot = gap1;                                                      //запомнить время между выстрелами
      Serial.println("Fire rate (shot/min): ");                             //вывод
      digitalWrite(13, HIGH);                   // зажигаем светодиод
      delay(100);                               // ждем секунду
      digitalWrite(13, LOW);                    // выключаем светодиод
      Serial.println(rapidtime);
      Serial.println(" ");
      lcd.begin(16, 2);
      lcd.print("Shot/min): ");
      lcd.print(rapidtime);
      gap1 = 0;
    }
  }
  delay(200);    //задержка для стабильности
}

Это скетч для прибора который измеряет скорость полета пули.

Хотелось бы:

Сделать энергонезависимую память EEPROM выстрелов на 60-100 с просмотром и сброса оной


Или хотя б что б хранилась память до выключения прибора.

Извеняюсь за не полный скетч.

 

Pauls777
Offline
Зарегистрирован: 25.11.2016

ссылку на скетч надо?

mishaniy33
Offline
Зарегистрирован: 05.03.2017

Да, будьте добры дайте ссылку на скетч . Заранее премного благодарен .

Pauls777
Offline
Зарегистрирован: 25.11.2016

Полностью рабочий скетч с памятью на 100 замеров 

Измеряет скорость в мс и дж

https://yadi.sk/d/S3_Av1yB3F9LCQ

Только вес пуль надо подкорректировать в скетче на нужный.

mishaniy33
Offline
Зарегистрирован: 05.03.2017

Спасибо огромадное. Завтра залью испытаю :-). Удачи вам.

Pauls777
Offline
Зарегистрирован: 25.11.2016

Вопросы будут пишите.

Bashla
Offline
Зарегистрирован: 27.04.2017

Попрошу вас выложить схему разводки

Pauls777
Offline
Зарегистрирован: 25.11.2016
Bashla
Offline
Зарегистрирован: 27.04.2017

Спасибо Большое )))

 

Pauls777
Offline
Зарегистрирован: 25.11.2016

Кнопки подключаются 10 11 12 

 

Bashla
Offline
Зарегистрирован: 27.04.2017

Опишити функцию светодиода № 13 

Pauls777
Offline
Зарегистрирован: 25.11.2016

это светодиод на ардуино находится.

Тебе его подключать не надо.

действие происходит он мигает.