Перейти к содержанию

Денис_85

Members
  • Постов

    9
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Воронеж

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    микроконтроллеры

Посетители профиля

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

Достижения Денис_85

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. Помоги с ноля скетч полноценный написать. Данный путь мне кажется очень перспективным Нашел инфу про dual moco, что то началось получаться перешивается arduino mega и uno Смысл прошивки сигнал midi через разъем usb напрямую без доп по и переходников передается на пк и звуковой модуль Работает эта беда только как я понял с библиотекой midi.h Можно как то сделать 2 а массива. Один с обычными контактными кнопками(уже реализовано и работает в скече ниже) , другой массив с оптопрерывателями И на несколько каналов все это поделить. Левая правая клавиатура на отдельных каналах скетч ниже в нем есть много лишнего но это на данном этапе не критично #include <Keypad.h> #include <EEPROM.h> #include <MIDI.h> MIDI_CREATE_DEFAULT_INSTANCE(); #define C2 0x18 #define Db2 0x19 #define D2 0x1A #define Eb2 0x1B #define E2 0x1C #define F2 0x1D #define Fd2 0x1E #define G2 0x1F #define Ab2 0x20 #define A2 0x21 #define Bb2 0x22 #define B2 0x23 #define C3 0x24 #define Db3 0x25 #define D3 0x26 #define Eb3 0x27 #define E3 0x28 #define F3 0x29 #define Fd3 0x2A #define G3 0x2B #define Ab3 0x2C #define A3 0x2D #define Bb3 0x2E #define B3 0x2F #define C4 0x30 #define Db4 0x31 #define D4 0x32 #define Eb4 0x33 #define E4 0x34 #define F4 0x35 #define Fd4 0x36 #define G4 0x37 #define Ab4 0x38 #define A4 0x39 #define Bb4 0x3A #define B4 0x3B #define C5 0x3C #define Db5 0x3D #define D5 0x3E #define Eb5 0x3F #define E5 0x40 #define F5 0x41 #define Fd5 0x42 #define G5 0x43 #define Ab5 0x44 #define A5 0x45 #define Bb5 0x46 #define B5 0x47 #define C6 0x48 #define Db6 0x49 #define D6 0x4A #define Eb6 0x4B #define E6 0x4C #define F6 0x4D #define Fd6 0x4E #define G6 0x4F #define Ab6 0x50 #define A6 0x51 #define Bb6 0x52 #define B6 0x53 #define C7 0x54 #define Db7 0x55 #define D7 0x56 #define Eb7 0x57 #define E7 0x58 #define F7 0x59 #define Fd7 0x5A #define G7 0x5B #define Ab7 0x5C #define A7 0x5D #define Bb7 0x5E #define B7 0x5F #define C8 0x60 #define Db8 0x61 #define D8 0x62 #define Eb8 0x63 #define E8 0x64 #define F8 0x65 #define Fd8 0x66 #define G8 0x67 #define Ab8 0x68 #define A8 0x69 #define Bb8 0x6A #define B8 0x6B #define C9 0x6C #define Db9 0x6D #define D9 0x6E #define Eb9 0x6F #define E9 0x70 #define F9 0x71 #define Fd9 0x72 #define G9 0x73 #define Ab9 0x74 #define A9 0x75 #define Bb9 0x76 #define B9 0x77 #define NNN 0xFF // Отсутствие ноты //Матричная клавиатураconst byte ROWS = 8; //Количество столбцов матричной клавиатуры const byte COLS = 8; //Количество строк матричной клавиатуры byte rowPins[ROWS] = {2, 3, 4, 5, 6, 7, 8, 9}; //Пины столбцов byte colPins[COLS] = {A0, A1, 10, 11}; //Пины строк byte buttonState[COLS][ROWS] = { //Массив состояния кнопок {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, }; byte kpdNote[COLS][ROWS] = { //Массив нот {C2, Ab2, E3, C4}, {Db2, A2, F3, Db4}, {D2, Bb2, Fd3, D4}, {Eb2, B2, G3, Eb4}, {E2, C3, Ab3, E4}, {F2, Db3, A3, F4}, {Fd2, D3, Bb3, Fd4}, {G2, Eb3, B3, G4} }; // //byte tmppin = 0; byte val = 0; byte dval = 0; byte PrVal[8] = {0, 0, 0, 0, 0, 0, 0, 0}; long currenttime=0; boolean b; byte eval; long ltime = 0; void setup() { MIDI.begin(1); //Инициализация MIDI интерфейса attachInterrupt(1, enc, FALLING ); // Аппаратное прерывание. По спадающему фронту на пине 2 запускаем enc pinMode(3, INPUT);//Вывод B энкодера pinMode(4, INPUT);//Неисп. pinMode(19, OUTPUT);//Пины A4 A5. Подключены в выводам A и B мультиплексора pinMode(18, OUTPUT);// pinMode(13, OUTPUT);//--Гасим встроенный светодиод-- digitalWrite(13, LOW);// for(byte i = 0; i < COLS; i++){ //--Конфигурируем строки мтрчн клвтр как выходы-- pinMode(colPins, OUTPUT); //--и подаём на них лог. 1digitalWrite(colPins, HIGH); //} for(byte i = 0; i < ROWS; i++){ //--Конфигурируем столбцы мтрчн клвтр как входыpinMode(rowPins, INPUT); //--и включаем встроенные в мк подтягивающие резисторы-- digitalWrite(rowPins, HIGH); //} } void loop() { for(byte chn = 0; chn < 4; chn++) //-Цикл чтения значений потенциометров{ set_mp_chn(chn); //--Задаём параметры мультиплексораval=analogRead(0) / 8; //--Считываем значение с канала Xif (abs(val-PrVal[chn]) > 5) //--Если текущее значение отл. от прошлого{ //--больше чем на 5, то посылаем новое значение-- MIDI.sendControlChange(chn,val,1); PrVal[chn]=val; } val=analogRead(1) / 8; //--Считываем значение с канала Y аналогично X---- if (abs(val-PrVal[chn+4]) > 5) { MIDI.sendControlChange(chn+4,val,1); PrVal[chn+4]=val; } } // for(byte i = 0; i < COLS; i++) //-Цикл чтения матричной клавиатуры{ digitalWrite(colPins, LOW); //--На считываем столбец выставляем 0--- for(byte j = 0; j < ROWS; j++) //--Построчно считываем каждый столбец-- { //--И при нажатой кнопке передаём ноту-- dval=digitalRead(rowPins[j]); if ( dval == LOW && buttonState[j] == HIGH ) MIDI.sendNoteOn(kpdNote[j],127,1); if ( dval == HIGH && buttonState[j] == LOW ) MIDI.sendNoteOff(kpdNote[j],127,1); buttonState[j] = dval; } digitalWrite(colPins, HIGH); } // } void set_mp_chn(byte chn1) // Управление мультиплексором { switch (chn1) { case 0: digitalWrite(18, LOW); digitalWrite(19, LOW); break; case 1: digitalWrite(18, LOW); digitalWrite(19, HIGH); break; case 2: digitalWrite(18, HIGH); digitalWrite(19, LOW); break; case 3: digitalWrite(18, HIGH); digitalWrite(19, HIGH); break; } } void enc() // Обработка энкодера { currenttime=millis(); if (abs(ltime-currenttime)>50) // антидребезг { b=digitalRead(4); if (b == HIGH && eval<=122) eval=eval+5; else if (b == LOW && eval>=5) eval=eval-5; MIDI.sendControlChange(9,eval,1); ltime = millis(); } }
  2. Питание есть .Когда я подключаю Max к com порту пк не видит нового добавленного устройства, а по идее должно. Единственное что не сделано это 5 конденсатор.Может в нем причина
  3. Вторая нога как я понял тоже получает питание а не выдает значит обе ноги висят на одной дорожке и питание получают от REG1117. Получается по дата шиту должно быть 5 конденсаторов у max3232ese, а в этой схеме 4 поправьте если я не прав?
  4. По средствам внутренней архитектуры трф VIN SUP External supply input to chip (2.7 V to 5.5 V) тестером позваниваю питание с него приходит на max А изначально питание подается с REG1117
  5. Питание подается со второй ноги trf7960a На схеме изображено как VCC
  6. Добрый день вот схема.Я использовал как указано в схеме для связи RS-232 max3232ese.и вместо С25,С31,С32,С33 на 1uH Я распаял 1uF там ошибка Полная схема в файле sloa167.pdf в начале темы.Попытался проверить работу RS-232 физически не распаивая микро контролер msp430f2370.Всю остальную обвязку оставил.Замкнул 11 и 12 ножки max3232ese 15 нога на массу 16 на trf7960a на вторую ногу VIN тишина Есть еще файл этой схемы в sprint layout 6.0
  7. Добрый день .Прошу помочь с реализацией проекта. Изготовил плату, спаял компоненты.Приобрел программатор, прошил.Но дальше загоревшегося светодиода дело не пошло. sloa167.pdf
×
×
  • Создать...