Witam, chcę wykonać małe cudeńko, które wykorzystywane jest w konsoletach mikserskich.
Ma to być napędzany potencjometr suwakowy. Mam silniczek DC i taki potencjometr, mechanicznie sobie poradzę tylko teraz problem z programem (koniecznie BASCOM).
Jak napisać program by ten sam suwaczek z silnikiem chodził pod wpływem komunikatów MIDI z PC i żeby je wysyłał jak nim porusze?
Napędzany potencjometr program pomocy!
A jakieś własne wypociny ?
Nikt tu nie dysponuje czasem żeby leniwym gotowce robić.
Pozdrawiam
Edytowałem - mathieiov. Zachowujmy na forum podstawową kulturę.
Nikt tu nie dysponuje czasem żeby leniwym gotowce robić.
Pozdrawiam
Edytowałem - mathieiov. Zachowujmy na forum podstawową kulturę.
Ostatnio zmieniony 06 lis 2011, 21:00 przez Pikczu, łącznie zmieniany 1 raz.
Już mam gotowy program, na pewno jest nie poprawny dlatego że:
1. Nie mam pewności do działania sterownika silnikiem.
2. Część wysyłająca dane pewnie będzie się kłócić z tym co mam zamiar wysłać a relacjami z PC. Proszę naprowadźcie mnie jak to napisać, jakąś koncepcję bo nie mam pomysłów jak to rozwiązać. Może być asembler a program i tak będzie baaardziej rozbudowany.
Program:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 31250
Config Adc = Free , Prescaler = Auto , Reference = Internal
Config Pinb.4 = Output
Config Pinb.5 = Output
Dim Channel As Byte
Dim Controller As Byte
Dim Value As Byte
Dim Fader As Word 'Wartość ADC
Dim Fvalue As Byte 'Wartość dla MIDI (ADC/8)
Dim A As Bit 'Praca silnika
Dim B As Bit 'Praca silnika
A Alias Pinb.4
B Alias Pinb.5
Do
Inputbin Channel , Controller , Value , 3 'Odebranie danych z PC
Fader = Getadc(0) 'Odebranie danych z ADC i podzielenie przez 8
Fvalue = Fader / 8
'/////////////////////////Dostosowania pozycji suwaka///////////////////////////
If Channel = 176 And Controller = 7 And Value <> Fvalue Then 'Jeżeli właściwy kontroler i różne wartości to:
If Value > Fvalue Then 'Jeżeli suwak jest za nisko
Set A 'Włącz silnik
Do 'Pętla kończy się gdy wartość suwaka = wartości z PC
Fader = Getadc(0)
Fvalue = Fader / 8
Loop Until Value = Fvalue
Reset A 'Wyłącz silnik
End If
If Value < Fvalue Then 'Jeżeli suwak jest za wysoko i analogicznie reszta
Set B
Do
Fader = Getadc(0)
Fvalue = Fader / 8
Loop Until Value = Fvalue
Reset B
End If
End If
'/////////////////////////Wysyłanie danych//////////////////////////////////////
If Channel = 176 And Controller = 7 And Value = Fvalue Then 'Jeżeli wartości są równe to:
Fader = Getadc(0) 'Sprawdź ponownie ADC
Value = Fader / 8 'Wpisanie ADC/8 do VALUE
Printbin 176 ; 7 ; Value 'Wyślij aktualną wartość
End If
Loop
1. Nie mam pewności do działania sterownika silnikiem.
2. Część wysyłająca dane pewnie będzie się kłócić z tym co mam zamiar wysłać a relacjami z PC. Proszę naprowadźcie mnie jak to napisać, jakąś koncepcję bo nie mam pomysłów jak to rozwiązać. Może być asembler a program i tak będzie baaardziej rozbudowany.
Program:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 31250
Config Adc = Free , Prescaler = Auto , Reference = Internal
Config Pinb.4 = Output
Config Pinb.5 = Output
Dim Channel As Byte
Dim Controller As Byte
Dim Value As Byte
Dim Fader As Word 'Wartość ADC
Dim Fvalue As Byte 'Wartość dla MIDI (ADC/8)
Dim A As Bit 'Praca silnika
Dim B As Bit 'Praca silnika
A Alias Pinb.4
B Alias Pinb.5
Do
Inputbin Channel , Controller , Value , 3 'Odebranie danych z PC
Fader = Getadc(0) 'Odebranie danych z ADC i podzielenie przez 8
Fvalue = Fader / 8
'/////////////////////////Dostosowania pozycji suwaka///////////////////////////
If Channel = 176 And Controller = 7 And Value <> Fvalue Then 'Jeżeli właściwy kontroler i różne wartości to:
If Value > Fvalue Then 'Jeżeli suwak jest za nisko
Set A 'Włącz silnik
Do 'Pętla kończy się gdy wartość suwaka = wartości z PC
Fader = Getadc(0)
Fvalue = Fader / 8
Loop Until Value = Fvalue
Reset A 'Wyłącz silnik
End If
If Value < Fvalue Then 'Jeżeli suwak jest za wysoko i analogicznie reszta
Set B
Do
Fader = Getadc(0)
Fvalue = Fader / 8
Loop Until Value = Fvalue
Reset B
End If
End If
'/////////////////////////Wysyłanie danych//////////////////////////////////////
If Channel = 176 And Controller = 7 And Value = Fvalue Then 'Jeżeli wartości są równe to:
Fader = Getadc(0) 'Sprawdź ponownie ADC
Value = Fader / 8 'Wpisanie ADC/8 do VALUE
Printbin 176 ; 7 ; Value 'Wyślij aktualną wartość
End If
Loop