Хронограф : измеритель скорости пули. От простого к сложному

maksim
Offline
Зарегистрирован: 12.02.2012
length = strlen(str);

но с русскими буквами не прокатит, если только не перепишите таблицу символов.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

спасибо. а оно не делает тоже самое?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

работает. и с русскими тоже

просто надо еще делить на два если русские символы,  и не использовать латиницу в перемешку с русскими

maksim
Offline
Зарегистрирован: 12.02.2012

Об этом и речь. Только вот не в перемешку не получится, так как не использовать в строках пробел, точку, запятую, двоеточие и т.д. крайне проблематично. То есть получится вычислять длину только отдельных слов.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да. заметил например в Экон. энергии. немного смещено вправо

но это будет вроде единственное сокращение, так что некретично. меня это пока устраивает

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

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

научился из массива считывать. оказывается все также просто как с числами)))

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

да и мне вроде тоже. решил добавить

starlei
Offline
Зарегистрирован: 14.12.2014

Да, классно у тебя получается. С большим вниманием слежу за темой.

Планируется ли в схему добавление внешнего кварца?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

подумываю надо или нет. кварц нужен для больших скоростей

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

возник вопрос как делать меню. в смысле структурно как должно работать

я предполагаю так. делаю несколько "экранов" и в зависимости от нажатия переключаемся между ними

то есть ввожу переменную, которая управляется кнопками, и по этой переменной условиями выводится нужный экран

так же перемещение внутри экрана по пунктам меню

так это делается или как это иначе?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

делаю меню. уже больше половины работает, но уже перестаю понимать как все работает

толи комментариев мало сделал

было бы удобнее если как в более серьезных программах можно было сворачивать функции


void loop(){
  if(digitalRead(pin_1)==1){//=========================управление первой кнопкой
    delay(100);
    if(digitalRead(pin_1)==1){
      switch (display_N) {
      case 0:
        display_N=2;
        Window_2(display_2_menu);
        delay(200);
        break;
      case 1:
        display_N=0;
        Window_0();
        delay(200);
        break;
      case 2:
        display_2_menu++;
        if(display_2_menu==6) display_2_menu=0;
        Window_2(display_2_menu);
        delay(200);
        break;
      case 3:
        display_3_menu++;
        if(display_3_menu==3) display_3_menu=0;
        Window_3(display_3_menu);
        delay(200);
        break;
      case 4:
        display_4_menu++;
        if(display_4_menu==3) display_4_menu=0;
        Window_4(display_4_menu);
        delay(200);
        break;
      }
    }
  }
  if(digitalRead(pin_2)==1){//=========================управление второй кнопкой
    delay(100);
    if(digitalRead(pin_2)==1){
      switch (display_N) {
      case 0://===============================================если главный экран
        display_N=1;
        Window_1();
        break;
      case 1://=====================================================если 1 экран
        for(byte i=0;i<10;i++){
          DATA [i]=0;
        }
        Window_1();
        break;  

      case 2://=====================================================если 2 экран
        switch (display_2_menu) {
        case 0:
          display_N=3;
          Window_3(display_3_menu);
          delay(200);
          break;
        case 1:
          break;
        case 2:
          display_N=4;
          Window_4(display_4_menu);
          delay(200);
          break;
        case 3:
          color=!color;
          Window_2(display_2_menu);

          break;
        case 4:
          break;
        case 5:
          display_N=0;
          display_2_menu=0;
          Window_0();
          delay(200);
          break;
        }
        break; 
      case 3://=====================================================если 3 экран
        switch (display_3_menu) {
        case 0:
          if(calibration<254) calibration++;
          Window_3(display_3_menu);
          break;

        case 1:
          if(calibration>0) calibration--;
          Window_3(display_3_menu);
          break;

        case 2:
          display_N=2;
          Window_2(display_2_menu);
          display_3_menu=0;
          delay(200);
          break;
        }
        case 4://=====================================================если 4 экран
        switch (display_4_menu) {
          case 0:
            if(bright<91) bright+=10;
            Window_4(display_4_menu);
            break;

          case 1:
            if(bright>0) bright-=10;
            Window_4(display_4_menu);
            break;

          case 2:
            display_N=2;
            Window_2(display_2_menu);
            display_4_menu=0;
            delay(200);
            //////////////////////ШИМ для подсветики сюда вставить
            break;
          }
      }
    }
  }
}

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

короче код почти написан. нужно допиливать на реальной плате. поэтому буду делать плату. кстати заложил кварц

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

3д принтера нехватает чтобы сделать нормальный корпус, для начала поэкспериментирую с полиморфом

хз когда выделю 30килорублей на новую игрушку

starlei
Offline
Зарегистрирован: 14.12.2014

Тоже мечтаю о 3D принтере. Сколько всего интерестного можно сделать с его помощю.

Сейчас достраиваю мини фрезерно-гравировальный ЧПУ. Со временем, на его базе, планирую сделать и 3D принтер: купив на ебее екструдер, подогреваемый столик ...

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

классно получается

а я самодельный принтер делать не буду. нет столько времени. куплю кит вроде такого

http://ru.aliexpress.com/item/2015-New-Acrylic-Frame-Reprap-Prusa-I3-3D-...

кстати неплохо подешевели

Helgi000
Offline
Зарегистрирован: 11.03.2015

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

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да нет. изменения не насколько кардинальные

что сделано:

главный экран как обычно, только добавилась средняя скорость в правом верхнем углу, количество измерений в левом верхнем и переход в меню и статистику

статистика на 10 измерений с возможностью очистки

калибровка (расстояние редактируется из меню, а не в коде)настройки яркости дисплея, инверсия дисплея, энергосбережение (отключение подсветки и питание датчиков через заданное время) и хранение всех настроек в eeprom

при переходе в любое меню отключаются датчики, так что в меню ничего не измеряется

по прежнему измеряет скорость пули и все. насчет энергии. вроде зная вес и скорость можно рассчитать энергию. в принципе может и добавлю если так нужно

нашел формулу. энергия равно (масса*скорость в квадрате)/2

верная?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

http://arduino.ru/forum/proekty/khronograf-izmeritel-skorosti-puli-ot-pr...

в этоп посте первая картинка. вместо меню и данные можно выводить энергию и среднюю энергию, а насчет кнопок просто запомнить или на корпусе маркировку какую нибудь сделать

картинку не добавляю у меня лимит закончился))) 40 мегайбайт 412 картинок. уже удалял часть. но это неправильно. без картинок не все понятно в старых постах

Helgi000
Offline
Зарегистрирован: 11.03.2015

А можно hex от нового обновления?

Helgi000
Offline
Зарегистрирован: 11.03.2015

Пробовал разные пары светодиодов и резисторов и остановился на инфракрасном отражателе TCRT5000.

он себя отлично ведет на солнце, не боится засветов  

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

 

 

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

плату соберу, на ней все проверю, особенно функции энергосбережения и тогда выложу

кстати мега328 будет. раньше была мега8

надо не светодиоды а ик диоды и ик фототранзисторы. как раз как стоят в твоем датчике. можешь их оттуда вытащить

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

вот и я наконец присоеденился к товариществу, которое лудит сплавом розе. получилось отлично. почти также как при химическом лужении. только хим. лужение ненадолго, а баночки розе надолго хватит

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

картинку приложить не могу. лимит картинок исчерпал.

a5021
Offline
Зарегистрирован: 07.07.2013

Я вообще лудить перестал. Так даже красивее.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

это пока не появятся микроразрывы. было у меня такое. не мог понять почему работает. прозвонил контакта нет. внешне все отлично. а зрение не -10. нашел микроразрыв в каком месте +-1 мм. но ничего не увидел. ну вообще

Helgi000
Offline
Зарегистрирован: 11.03.2015

А в каком корпусе будут dip или smd, просто у меня есть пару дохлых девайсов в которых есть 328 меги на панельках

a5021
Offline
Зарегистрирован: 07.07.2013

jeka_tm пишет:

нашел микроразрыв в каком месте +-1 мм. но ничего не увидел. ну вообще

Я вроде тоже не слепой, но без оптики даже не сажусь что-то делать. В иных случаях переснимаю с помощью зеркалки проблемные места и разглядываю фотки на компе.

winziwul
Offline
Зарегистрирован: 05.03.2014

жека класно получается буду ждать готовых результатов, а мк какой тот же 8 или 328

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Helgi000 пишет:

А в каком корпусе будут dip или smd, просто у меня есть пару дохлых девайсов в которых есть 328 меги на панельках

только smd. можешь переделать под DIP. только сам. можешь использовать магазинную ардуину. без проблемм

a5021 пишет:

Я вроде тоже не слепой, но без оптики даже не сажусь что-то делать. В иных случаях переснимаю с помощью зеркалки проблемные места и разглядываю фотки на компе.

пока обхожусь без оптики, просто не люблю, хотя все в smd в основном использую. но это было нереально увидеть

winziwul пишет:

жека класно получается буду ждать готовых результатов, а мк какой тот же 8 или 328

спасибо. мк atmega328p

кстати вот фото платы. есть недотравы. но было поздно. не хотелось ждать

https://yadi.sk/i/MajG9sJefBNcJ

кстати хочу заодно провести пару экспериментов, основанных на данных других экспериментов по максимальной частоте мк. без охлаждения работали до 30мгц кажется, поэтому хочу запустить на 24МГц. ниже чтобы стабильней

прошивок будет скорее всего 3: 8мгц внутренний генератор, 16мгц кварц, 24мгц кварц. чем выше ваша планируемая измеряемая скорость тем выше частота кварца должна быть

winziwul
Offline
Зарегистрирован: 05.03.2014

а чего решил на 328 переделать 8 бы справилась в лёгкую

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

видеобуфер делал на весь экран. а он почти 1к оперативки съедает. а в меге8 всего 1к

да и уже размер программы перевалил за 11кбайт. и я экран заставки при включении еще не добавил

+ даже больше

https://yadi.sk/i/v7RL06qSfBPV2

winziwul
Offline
Зарегистрирован: 05.03.2014

понятно, блин а они закончились надо покупать, я как то делал таймер с часами на дисплее с несколькими окнами и меню, улажился в 88

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

на таком же дисплее?

просто в этом дисплее построковый вывод. и если выводить не по строкам нужен видеобуфер

hwman использует буфер не на весь экран, а делит его на три части. поэтому можно и на меге8 завести. но я его библиотеку не тестил. код переделывать честно не хочется. неизвестно что вылезет при этом. свои баги отлавливать, да еще и возмозможно его. поэтому на 328

winziwul
Offline
Зарегистрирован: 05.03.2014

не дисплей 6085, контроллеры у них одинаковые так же как и 1110 и 3310

winziwul
Offline
Зарегистрирован: 05.03.2014

вру у 3310 другой но принцип тот же, я первый хрон делал и на 6085 и на 1110

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

предлагаешь мне ужаться в мегу8?

winziwul
Offline
Зарегистрирован: 05.03.2014

хотелось бы ))) ну есть ли смысл

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

или мне код переписывать или тебе камень покупать. что же выбрать)))

winziwul
Offline
Зарегистрирован: 05.03.2014

я в любом случае буду покупать эти камни

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

оказалось просто. я запустил на 3.3В. а это слишком высокая частота при таком питании. надо снижать до 16мгц или повышать питание. но тогда надо добавлять резисторы для согласования уровней. короче экспериментирую

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

короче прикинул, необходимости в отключении подсветки и датчиков особой нет

это работает, но особо пользы не заметил

наверно уберу

и плату буду переводить на 5В питание. на 3.3В датчики не хотят нормально работать

Helgi000
Offline
Зарегистрирован: 11.03.2015

Сейчас делаю рамочный хрон на основе того что было здесь в теме. 

Из-за того что не всегда удается выстрел словить, часто в "слепую" зону датчика попадаю, если не использую направляющую.

Теперь 3 ик светят и два приемника на каждой стороне. Зеркало для отражения. База 100мм. 

winziwul
Offline
Зарегистрирован: 05.03.2014

а зеркала зачем

 

Helgi000
Offline
Зарегистрирован: 11.03.2015

Ик луч отражается от зеркала на расстоянии от 50-70мм и дет к приемникам(фото транзисторам). Тем самым увеличивается просвет для выстрела и увеличивается площадь пролета пули над датчиками, тобишь нет нужды делать выстрел строго над соосностью излучатель-приемник

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

прошивка для 8мгц атмега328 

https://yadi.sk/d/tP4eBN1pfdZoa

прошивка для 16мгц атмега328 

https://yadi.sk/d/N_drzASlftKkx

по энергии до конца не дописал, но в меню добавил

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Helgi000
Offline
Зарегистрирован: 11.03.2015

 

Супер!!!

А можно обновленную печатку(ведь уже новый чип) в формате удобного для ЛУТ(утюжный)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да. забыл. печатка

Фьюзы 8МГц внутренний генератор

low_fuses=0xe2
high_fuses=0xde
extended_fuses=0x05

Фьюзы с кварцем

low_fuses=0xff
high_fuses=0xde
extended_fuses=0x05

должно получится следующее. детали с преобразователя имелся в виду такой. и соответственно можно питать хоть от пальчиковой батарейки, хоть от литиевого аккумулятора

 

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

дисплей
#define CS      7
#define Data    6
#define Clock   5

кнопки A2 и A4. датчики также на прерываниях пины 2 и 3

позже доделаю расчет и вывод энергии

starlei
Offline
Зарегистрирован: 14.12.2014

Класс. 

Спрашиваю разрешение автора повторить его произведение. В личных целях, не для продажи. Тем более почти все комплектующие имееются.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

так для того и выложил. делай конечно

поэтому только прошивки выкладываю. чтобы нельзя было меню переписать на английском

кстати на печатке питание подается справа сверху + снизу минус. или можно сразу подавать 5В там где разъем для программирования

фотодиоды куда подключаются подписано. земля тоже. ик диоды запараленены и подключаются к пину VD. датчик проверять следующим образом. подключить включить камеру на телефоне и посмотреть. если светится фиолетовым значик ик диоды подключены правильно. далее вольтметром на пинах VT1 и VT2 измерять напряжение. без препятствия должно быть 0,5В или меньше. с препятствием 5В. если все так значит датчики собраны правильно

winziwul
Offline
Зарегистрирован: 05.03.2014

если я правельно понял то в верхнем правом углу это преабразователь амс катушка кондёр диод и стабилизатор на 5 вольт, а что за элемент амс это транзистор если да то какой?

winziwul
Offline
Зарегистрирован: 05.03.2014

да и что такое а2 а4 что к ним подключается