Самодельные электронные ударные

Тема в разделе "Arduino & Shields", создана пользователем Dan, 24 дек 2016.

  1. Dan

    Dan Гик

    снизил трешолд до 1, звон есть все равно, датчик реагирует на небольшие прикосновения пальца, случайных нот нет, если не трогать датчик.
    поставил трешолд 200 - датчик реагирует на сильные удары пальцем, но звон все также приличный
     

    Вложения:

    • 12.png
      12.png
      Размер файла:
      58,2 КБ
      Просмотров:
      406
    • 13.png
      13.png
      Размер файла:
      62,7 КБ
      Просмотров:
      667
  2. sslobodyan

    sslobodyan Гик

    Повторюсь еще раз. Звон или повторная нота после удара говорит о том, что датчик еще качается, а мы уже его опрашиваем повторно. Увеличивайте муте_тайм, трешолд здесь не при чем.
     
  3. Dan

    Dan Гик

    Хорошо, буду пробовать, спасибо
    Я кстати взял снова датчик зп-25, который со встроенным генератором, вынул пьезу из пластмассового корпуса и припаял провода
     
    Последнее редактирование: 18 янв 2017
  4. mcureenab

    mcureenab Гуру

    Народ рекомендует серьезно подойти к виброизоляции датчиков друг от друга. А то по одному удалишь и все запоют.
    Смотрю так же, датчики через поролон или войлок лепят. Ну оно и понятно. Номинально звонок от 3х вольт работает. Видимо для керамики это некий предел прочности. Значит и в обратном направлении не следует сильно нагружать. С механическим демпфером датчик должен быстрее затухать.
     
  5. Dan

    Dan Гик

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

    Dan Гик

    в этом коде нет муте_тайм:
    Код (C++):
    #define LED 13

    uint16_t kick_treshold=200; // пороговый уровень датчика
    uint16_t kick_val=0; // предыдущее значение датчика
    const uint8_t kick_pin=A0;

    int tmp;
    void setup() {
      Serial.begin(115200);
      Serial.println("MIDI Drumer TEST");
      pinMode(kick_pin, OUTPUT);
      digitalWrite(kick_pin, LOW);
      pinMode(LED, OUTPUT);
      digitalWrite(LED, LOW);
      pinMode(kick_pin, INPUT);
    }


    uint32_t tm=0, t_null=0;
    byte cnt=0;

    void loop(){
        kick_val = analogRead(kick_pin);
        if (kick_val > kick_treshold) {
          if (tm==0) tm=micros();
          t_null = 0;
          digitalWrite(LED, HIGH);
          Serial.print(kick_val); Serial.print(" "); Serial.println( (micros()-tm) );
        }
        else {
          if (t_null==0) {
            t_null=micros();
          }
          if (t_null>0) {
            if ( (micros()-t_null) > 80000 ) {
              if (tm>0) {
                cnt+=1;
                pinMode(kick_pin, OUTPUT); delay(2);
                Serial.print(cnt);Serial.println(" ========");
                pinMode(kick_pin, INPUT);
              }
              tm=0;
            }
          }
       
          digitalWrite(LED, LOW);
        }

    }
     
  7. mcureenab

    mcureenab Гуру

    да ладно!
    Код (C++):
      if ( (micros()-t_null) > 80000 ) {
     
  8. Dan

    Dan Гик

    ага, спасибо)было подозрение на эту строку)
     
  9. Onkel

    Onkel Гуру

    16 страниц, ужоснах... Мне вот тут заказали секвенсор с оптическим запуском- даже тужится не пришлось, сваял и в миди разобрался. Я вроде спрашивал тс, но ответ куда-то затерялся - какие сигналы вы хотите генерить вашей драм машиной- я так понимаю номер ноты и скорость (90 xx yy) с возвратом (80 хх 00), или еще какие параметры? А то у меня эти пьезозвонки валяются, я даже осциллограмму его (от удара ногтем) снимал, что тут можно на 16 страниц написать, а тут будет время через пару недель попробую на пьезозвонке сварганить. Если нужны какие-то другие параметры кроме скорости, то антидребезг нельзя. Да и вообще пьезозвонок НЕ ДРЕБЕЗЖИТ в кнопочном понимании этого (дребезг) термина, с чем тут бороться?
    [​IMG]
     
  10. Dan

    Dan Гик

    Я помню, что вы писали про зп-5. на 16 страниц тут написано, потому что не удается никак получить с пьезы 1 удар = 1 звук. Поэтому и экспериментирую с помощью форумчан.
     
  11. Onkel

    Onkel Гуру

    поролон скорее всего для демпфирования. Два против друг друга стоящие звонка - 5 мВ максимальный сигнал при резонансной частоте
     
  12. Dan

    Dan Гик

    вот у вас нормально нота звучит, когда стучите по датчику?
     
  13. Onkel

    Onkel Гуру

    а с помощью пары диодов Шоттки не экспериментировали?
     
  14. Onkel

    Onkel Гуру

    я пока только на ик сделал, направляешь пульт нажимаешь кнопку - получаешь ноту. Но я сейчас миди макет убрал, пока другим занят. Попробую когда время будет вместо ик приемника поставить зп.
     
  15. Dan

    Dan Гик

    я пробовал один, тогда не помню почему его потом убрал, сейчас стоит 2 резистора, обычный диод и кондей
     
  16. Dan

    Dan Гик

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

    Dan Гик

    че-то у меня ниче хорошего не получается. когда трешолд регулирую, только сильнее/слабее по датчику стучать можно. меняю время (больше-меньше) в этой строке
    Код (C++):
    if ( (micros()-t_null) > 200000 )
    датчик звенит и все тут. Я завтра постараюсь его на пэд как-нить примастырить, но, чувствую, картина не изменится.
     
  18. Onkel

    Onkel Гуру

    нажал/отжал запускает целую вспышку 38 кгц, да еще промодулированную.
     
  19. Dan

    Dan Гик

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

    mcureenab Гуру

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