Napędzany potencjometr program pomocy!

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
ramisto
-
Posty: 9
Rejestracja: 23 lip 2011, 17:19
Lokalizacja: ustka

Napędzany potencjometr program pomocy!

Post autor: ramisto » 05 lis 2011, 17:14

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?

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 06 lis 2011, 20:28

A jakieś własne wypociny ?
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.

ramisto
-
Posty: 9
Rejestracja: 23 lip 2011, 17:19
Lokalizacja: ustka

Post autor: ramisto » 06 lis 2011, 22:44

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

ramisto
-
Posty: 9
Rejestracja: 23 lip 2011, 17:19
Lokalizacja: ustka

Post autor: ramisto » 15 lis 2011, 16:28

Widzę że zainteresowanie moim problemem spadło do 0. :mad: Widzę że muszę sam szukać rozwiązania.

ODPOWIEDZ