
spongebob
Members-
Posts
75 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Gallery
Everything posted by spongebob
-
const unsigned char btn_mode[78]={ 0,0,1,1,1,1,1,2,2,1, 2,2,1,2,1,0,0,1,1,0, 1,0,0,0,0,0,0,0,1,0, 4,4,1,0,1,1,0,0,2,2, 1,2,2,1,1,2,1,1,1,1, 1,0,0,0,0,0,0,0,0,0, 1,0,4,4,2,1,1,1,1,1, 4,4,1,1,1,1,1,2}; unsigned char btn_state[78]={ 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}; void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam { switch(btn_mode[pin]){ case 0: // OnOff break; case 1: // Toggle if (pin_value==0) { (btn_state[pin]==1) ? (btn_state[pin]=0) : (btn_state[pin]=1); if (btn_state[pin]==0) {return;} } else {return;} break; case 2: // OnOnly if (pin_value==1) {return;} break; } MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0x90); // Note Event at channel #1 MIOS_MIDI_TxBufferPut(pin); // just forward the pin number (0..127) MIOS_MIDI_TxBufferPut(pin_value ? 0x00 : 0x7f); // MIOS_MIDI_EndStream(); }
-
Ðга, понÑл придумаем, не волнуйÑÑ :) void Tick Ñто не та Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ :) нада было void Timer
-
Ð’ локальные переменные: unsigned char timer_tick; unsigned char blink_led; Ð’ Init: timer_tick=0; blink_led=0; MIOS_TIMER_Init(0x03, 62500); Добавить функцию тика по таймеру. ЗдеÑÑŒ Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð° моргают 31 и 63 Ñветодиоды. void Tick(void) __wparam { if (timer_tick=>10) { timer_tick=0; } if (timer_tick==0) { // Ñделать что-то раз в 500mS (blink_led==1) ? (blink_led=0) : (blink_led=1); MIOS_DOUT_PinSet(31,(blink_led && MIOS_DOUT_PinGet(31))); MIOS_DOUT_PinSet(63,(blink_led && MIOS_DOUT_PinGet(63))); } timer_tick++; } Ð£Ð¼ÐµÐ½ÑŒÑˆÐ°Ñ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ timer_tick, а так же играÑÑÑŒ Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸ MIOS_TIMER_Init добейÑÑ Ð½ÑƒÐ¶Ð½Ð¾Ð¹ паузы. Значение второго параметра MIOS_TIMER_Init не больше 65535.
-
Ð˜Ð½Ð´Ð¸ÐºÐ°Ñ†Ð¸Ñ 0%. Ð’ AIN_NotifyChange добавлÑем: if (pin==4) { (pin_value==64) ? MIOS_DOUT_PinSet (30,1) : MIOS_DOUT_PinSet(30,0); } if (pin==5) { (pin_value==64) ? MIOS_DOUT_PinSet (62,1) : MIOS_DOUT_PinSet(62,0); } OnOff Ñ Ð¿Ð¾Ð»Ð°Ð³Ð°ÑŽ: нажал-отпуÑтил - включилоÑÑŒ, нажал-отпуÑтил - выключилоÑÑŒ Toggle: нажал - включилоÑÑŒ, отпуÑтил - выключилоÑÑŒ Ðто в тракторе наÑтраиваетÑÑ, еÑли Ñ Ð½Ðµ ошибаюÑÑŒ. Вот только зачем нужны были плÑÑки Ñ Ð±ÑƒÐ±Ð½Ð¾Ð¼ вокруг Shift? :) Ð OnOnly Ñто что? :)
-
Ñ Ð¿Ð»Ð¾Ñ…Ð¾ понимаю что значит onoff ononly toggle :) Ñветодиод можно Ñделать, почему нет-то? а вот Ñ Ð±Ð»Ð¸Ð½ÐºÐ¾Ð¼ как поÑтупить Ñ Ð½Ðµ знаю... нужно форум шерÑтить, кто-то делал
-
Добавь в DIN_NotifyToggle в начале где-нибудь: if ((pin==46 || pin==6) && pin_value==1) { return; }
-
10 bit на команду CC не получитÑÑ, они тока 7 бит поддерживают (вроде бы) Ñ ÑˆÐ¸Ñ„Ñ‚Ð¾Ð¼ нарна намудрил чота :) нужно проверÑть... но не ÑÐµÐ¹Ñ‡Ð°Ñ :) ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¸Ð²Ð½Ð¾Ð¹ вечерок :)
-
Отбой, вÑÑ‘ компилируетÑÑ Ð½Ð°Ð¼Ð°Ð½Ð°... забыл ; поÑтавить :) #include <cmios.h> #include <pic18fregs.h> #include "main.h" unsigned char shifta; unsigned char shiftb; MIOS_ENC_TABLE { MIOS_ENC_ENTRY( 4, 6, MIOS_ENC_MODE_NON_DETENTED), MIOS_ENC_ENTRY( 8, 6, MIOS_ENC_MODE_NON_DETENTED), MIOS_ENC_ENTRY( 9, 6, MIOS_ENC_MODE_DETENTED2), MIOS_ENC_EOT }; void Init(void) __wparam { // set shift register update frequency MIOS_SRIO_UpdateFrqSet(1); // ms // we need to set at least one IO shift register pair MIOS_SRIO_NumberSet(NUMBER_OF_SRIO); // debouncing value for DINs MIOS_SRIO_DebounceSet(DIN_DEBOUNCE_VALUE); MIOS_SRIO_TS_SensitivitySet(DIN_TS_SENSITIVITY); // initialize the AIN driver MIOS_AIN_NumberSet(AIN_NUMBER_INPUTS); #if AIN_MUXED_MODE MIOS_AIN_Muxed(); #else MIOS_AIN_UnMuxed(); #endif MIOS_AIN_DeadbandSet(AIN_DEADBAND); MIOS_ENC_SpeedSet(0, MIOS_ENC_SPEED_FAST, 2); MIOS_ENC_SpeedSet(1, MIOS_ENC_SPEED_FAST, 2); MIOS_ENC_SpeedSet(2, MIOS_ENC_SPEED_FAST, 2); shifta=0; shiftb=0; } Ðто начало, в предыдущем поÑте продолжение :) Должно работать. 7 килобайт получилÑÑ hex, должен влезть в пик. ЕÑть мелкие Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ Ñ Ñ‚Ð²Ð¾ÐµÐ¹ таблицей, но Ñто поправишь уже в тракторе, когда будешь мапить кнопки-лампочки. Удачи в дальнейшей Ñборке! ЕÑли что - обращайÑÑ ÐµÑ‰Ñ‘.
-
Ð’ локальные переменные добавить: unsigned char shifta; unsigned char shiftb; Обработка лампочек: void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { unsigned char i; if (evnt0==0x80) {evnt2=0;} if (evnt1<0x57) { evnt2>0 ? MIOS_DOUT_PinSet (evnt1,1) : MIOS_DOUT_PinSet(evnt1,0); } else { if (evnt1==0x58) { // VU A for(i=0;i<10;i++) { evnt2>(127/10)*i ? MIOS_DOUT_PinSet (76+i,1) : MIOS_DOUT_PinSet(76+i,0); } } if (evnt1==0x59) { // VU B for(i=0;i<10;i++) { evnt2>(127/10)*i ? MIOS_DOUT_PinSet (86+i,1) : MIOS_DOUT_PinSet(86+i,0); } } if (evnt1==0x5a) { // Track progress A for(i=0;i<16;i++) { evnt2>(127/16)*i ? MIOS_DOUT_PinSet (96+i,1) : MIOS_DOUT_PinSet(96+i,0); } } if (evnt1==0x5b) { // Track progress B for(i=0;i<16;i++) { evnt2>(127/16)*i ? MIOS_DOUT_PinSet (112+i,1) : MIOS_DOUT_PinSet(112+i,0); } } } } Обработка кнопочек: (кнопки Shift Ñрабатывают по нажатию, а не отпуÑканию) void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam { if (pin==6 && pin_value==0) { if (shifta==1) {shifta=0;} else {shifta=1;} pin_value = shifta; } if (pin==46 && pin_value==0) { if (shiftb==1) {shiftb=0;} else {shiftb=1;} pin_value = shiftb; } MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0x90); // Note Event at channel #1 MIOS_MIDI_TxBufferPut(pin); // just forward the pin number (0..127) MIOS_MIDI_TxBufferPut(pin_value ? 0x00 : 0x7f); // MIOS_MIDI_EndStream(); } Обработка крутилочек: void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam { MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0xb0); // CC at MIDI Channel #1 MIOS_MIDI_TxBufferPut(0x10 + encoder + 24); // CC# is 0x10 (16) for first encoder MIOS_MIDI_TxBufferPut((0x40 + incrementer) & 0x7f);// this "40 +/- speed" format is used by NI software and some others MIOS_MIDI_EndStream(); } void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam { MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0xb0); // CC at channel 1 MIOS_MIDI_TxBufferPut(pin); // pin number corresponds to CC number MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin)); // don't send 10bit pin_value, but 7bit value MIOS_MIDI_EndStream(); } У Ð¼ÐµÐ½Ñ ÐºÐ°ÐºÐ¸Ðµ-то глюки Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñцией. РугаетÑÑ Ð½Ð° Ñнкодеры, ругаетÑÑ Ð½Ð° опции компилÑтора... У Ñ‚ÐµÐ±Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐµÑ‚ÑÑ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾? Я проÑто давно не брал в руки шашек, может делаю что не так :) Может Janis1279 чего подÑкажет?
-
а Ñ Ð¸Ð· города-невеÑÑ‚ Иваново :) как у Ð²Ð°Ñ Ð² городе Ñ Ñ€Ð°Ð´Ð¸Ð¾Ð´ÐµÑ‚Ð°Ð»Ñми? оÑобенно Ñ smd. у Ð½Ð°Ñ Ð²Ñего 2 магазина радиодеталей, в одном Ñмд Ñ€Ñдами по 5-10 шт., в другом номиналами, но по 100 шт. :( Ñ Ñ Ð½ÑƒÐ»Ñ Ð½Ð°Ñ‡Ð°Ð» делать программу, но рабочий день закончилÑÑ :) завтра допишу (надеюÑÑŒ) и залью Ñюда думаю разморозить Ñвой проект (контроллер Ð´Ð»Ñ ableton, Ñ…Ð¾Ñ‚Ñ Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾ была Ð¸Ð´ÐµÑ Ñделать подобие vestax vci-100): матрица кнопки+двухцветные диоды 8на8, 24 потенциометра + 16 кнопок Ñ Ð¿Ð¾Ð´Ñветкой. дизайн проекта похож на akai apc40.
-
по шифту хрень напиÑал не Ñмотри туда :) иÑходники шли :)
-
дихлорÑтана через мои руки прошло больше чем пива :) ни одну модель Ñамолёта/Ð°Ð²Ñ‚Ð¾Ð¼Ð¾Ð±Ð¸Ð»Ñ Ñклеил в боÑоногом детÑтве :) про резку лазером Ñ Ñразу подумал, но не знал что им же можно Ñделать гравировку кÑтати, откуда ты? и Ñколько у Ð²Ð°Ñ Ñтоит метр прохода лазером? теперь вернёмÑÑ Ðº триггерам и маÑÑивам в начале иÑходника поÑле #include вÑтавлÑем //триггер unsigned char shiftA_state; unsigned char shiftB_state; Ð’ DIN_NotifyToggle добавим обработчик switch switch( evnt1 ) { номер ноты shiftA: if !pin_value {shiftA_state ? shiftA_state = 0 : shiftA_state = 1;} отправлÑем миди-команду break; номер ноты shiftB: if !pin_value {shiftB_state ? shiftB_state = 0 : shiftB_state = 1;} отправлÑем миди-команду break; default: обработка других кнопок отправлÑем миди-команду } но можно Ñделать и проще (имхо) //маÑÑив const unsigned char led_map[76] = {номера пинов через запÑтую в ÑоответÑтвии Ñ Ð½Ð¾Ñ‚Ð°Ð¼Ð¸}; но так как у Ñ‚ÐµÐ±Ñ Ð¸ так они подрÑд (ÑÑƒÐ´Ñ Ð¿Ð¾ таблице), то можно обойтиÑÑŒ и без маÑÑива Ð’ MPROC_NotifyReceivedEvnt добавлÑем if evnt1 < (номер ноты Е5) { if( evnt0 == 0x80 || evnt2 == 0x00 ) { MIOS_DOUT_PinSet(evnt1, 0); // Note Off } else { MIOS_DOUT_PinSet(evnt1, 1); // Note On } } Ñкинь Ñвой иÑходник в текущем виде, попробую на доÑуге (читай на работе :)) занÑтьÑÑ
-
Ðу ты Ñту конÑтрукцию заключи в уÑловие: if evnt1 == (номер ноты E5) { // vu-metr for deck a } if evnt1 == (номер ноты F5) { // vu-metr for deck b } if evnt1 == (номер ноты F#5) { // track progress deck b } if evnt1 == (номер ноты G5) { // track progress deck b } и Ñ‚.д. по вÑем нотам по тем нотам, где на одну ноту один Ñветодиод - лучше Ñделать маÑÑив, где номер ноты Ñто Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива, а значение - номер пина Ñветодиода По шифту Ñделай переменную-триггер, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ переключатьÑÑ Ð¸Ð· одного ÑоÑтоÑÐ½Ð¸Ñ Ð² другое только по команде 0x90 P.S. из чего делал лицевую панель? чем наноÑил надпиÑи? как делал отверÑтиÑ?
-
никуда Ñ Ð½Ðµ иÑчез Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ð¸Ñ€ÑƒÑŽ :) по поводу OnOff и Toggle: Ñто можно наÑтроить в Ñофте (трактор, еÑли Ñ Ð½Ðµ ошибаюÑÑŒ) VU-метр: какие команды поÑылает трактор? Ð’ MPROC_NotifyReceivedEvnt пишем обработчик. Делим диапазон 0-127 на промежутки (по количеÑтву Ñветодиодов + 1). Допутим их будет 5. 0-x1-x2-x3-x4-127 Далее проÑто : evnt2>x1 ? MIOS_DOUT_PinSet (n1,1) : MIOS_DOUT_PinSet(n1,0); evnt2>x2 ? MIOS_DOUT_PinSet (n2,1) : MIOS_DOUT_PinSet(n2,0); evnt2>x3 ? MIOS_DOUT_PinSet (n3,1) : MIOS_DOUT_PinSet(n3,0); evnt2>x4 ? MIOS_DOUT_PinSet (n4,1) : MIOS_DOUT_PinSet(n4,0); ну что-то типа того...
-
Про�той миди контроллер + USB
spongebob replied to Avarges-RU's topic in Russian
ÑÑ…Ñ…Ñ….. не хватает мощи Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкой индикации, Ñлайдшоу получаетÑÑ :( на пике 18f452 вÑÑ‘ идеально, но без уÑб буду делать на пике Ñ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ уÑб, Ñ Ð¿Ð¸ÐºÐ°Ð¼Ð¸ как-то привык уже работать. -
Про�той миди контроллер + USB
spongebob replied to Avarges-RU's topic in Russian
Ð’ чем и на чем напиÑана прошивка? Миди-команды только от контроллера в ПК или наоборот тоже? У Ð¼ÐµÐ½Ñ ÐµÑть готовый алгоритм работы Ñо Ñдвиговыми региÑтрами и мультиплекÑорами (на Ñи в codevision), можно было бы Ñовокупить наши проекты и получить очень гибкое решение. -
Про�той миди контроллер + USB
spongebob replied to Avarges-RU's topic in Russian
Вот была бы возможноÑть подключить мультиплекÑоры, да Ñдвиговые региÑтры - цены бы ему небыло. а то 8 крутилок да 5 кнопок маловато. вот бы матрицу 8 на 16 Ñ rgb Ñветодиодами, да крутилок штук 16, вот Ñто Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÑŽ контроллер. а Ñто так, игрушка и не более... -
Here my main.c, it is compiled without errors. This code is correct? I wish to know it before PCB creation. I badly understand a principle of operation of function SR_Service_Prepare. P.S. I have project in Proteus, but i don't know how to load MIOS+application in virtual PIC. main.c
-
My new midibox-based project need duo-led+button 8x10 matrix. In attached file scheme of matrix. This scheme is correct? The minimum elements is necessary.
-
No shipping in Russia :( I try to add AIN DIN DOUT in USB_PIC firmware. May be it will work ;)
-
It is possible to make MIOS with only AIN, DIN, DOUT (may be LCD) support on PIC18F4550 chip? My project (MIDI control for Traktor) need only this modules. STM chip is difficult to find. But i want USB support and main core on one chip.
-
first scheme are work second scheme will damage photo-transistor nominal of resistors: 510 Ohm (for diode), 10 kOhm (for transistor)
-
I have connected encoder according to the scheme in the second drawing and began to receive such signals from a kernel: 00000000313896 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000313956 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314016 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314076 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314136 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314197 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314257 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314317 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314376 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314436 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314496 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314556 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 00000000314616 ms | [B0 20 3F] Channel 1: CC LSB 0 (Bank Select) value: 63 main.c MIOS_ENC_TABLE { MIOS_ENC_ENTRY(7, 0, MIOS_ENC_MODE_NON_DETENTED), // MIOS_ENC_EOT }; ... void Init... for(i=0; i<2; ++i) { // available speed modes: SLOW, NORMAL and FAST MIOS_ENC_SpeedSet(i, MIOS_ENC_SPEED_SLOW, 2); // encoder, speed mode, divider } ... void ENC_NotifyChange.... MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0xb0); // CC at MIDI Channel #1 MIOS_MIDI_TxBufferPut(0x20 + encoder); // CC# is 0x20 (32) for first encoder MIOS_MIDI_TxBufferPut((0x40 + incrementer) & 0x7f); // this "40 +/- speed" format is used by NI software and some others MIOS_MIDI_EndStream();
-
rasteri, Soclt, there are any news? I have ordered samples (AS5035) too. But I don't know what to do this them :)
-
trouble was in application. solved.