wiec tak silnik ma 6 wyprowadzen z tego dwa sa polaczone. Testowalem silnik najpierw bez sterownika na te dwa wyprowadzenia dalem +zasilania i poszczegolne wyprowadzenia zwieralem do masy spisalem sobie pokolei jak mam podpiac zeby silnik sie obracal podpialem te wyprowadzenia do tranzystorów od T1-T4 (one w ukladzie zwieraja poszczegolne uzwojenia do masy) i zasilanie i silnik zamast obracac sie drga lub piszczy. Wydaje mi sie ze program w procku w jednym momencie zalacza dwa tranzystory na raz
a to listing programu napisanego w bascomie:
Dim Praca As Bit , Przyciski As Byte , Licznik As Byte , Predkosc As Byte
Config Portb = &B00001111 'młodsze-wyjścia do silnika, starsze-wejscia DIP-switch S1
Config Portd = &B1000000 ' 2 najmłodsze bity - wejscie przycisków,
' 4 następne -predkosc z DIP-switch'a S2 ostatni bit - wyjście=brzęczyk piezo
Config Timer0 = Timer , Prescale = 64
Enable Interrupts : Enable Ovf0
Portb = &B11110000 'na początek wyłącza silnik i podciąga wejscia S1
Portd = 255 'włącza rezyst podciągajace na wejsciach PD.0, PD.5 i wyłacza brzęczyk
On Timer0 Podprogramik
Do : Loop : End 'pusta pętla
Podprogramik:
Przyciski = Pind And 3 'uzyskujemy stan przycisków - dwa najmłodsze bajty
Predkosc = Pind And &B0111100 'i stan czterech bitów DIP-switcha S2
Shift Predkosc , Left , 2 'przesuwamy to na najstarsze pozycje
Predkosc = Predkosc Or 15 'a do 4 młodszych wpisujemy jedynki
Timer0 = Predkosc 'ładujemy tę wartość do Timera0, zmieniając czas do najbliższego przepełnienia
Select Case Przyciski 'sprawdzamy stanu przycisków
Case 0: 'gdy naciśnięte oba przyciski włącza brzęczyk piezo
Praca = 0 : Reset Portd.6 'włączony między PD.6 a plus zasilania
Case 1:
Praca = 1 : Incr Licznik ' naciśnięty S3 - w górę
Case 2:
Praca = 1 : Decr Licznik ' naciśnięty S4 - w dół
Case 3:
Praca = 0 : Set Portd.6 ' w spoczynku wyłącz brzęczyk
End Select
Licznik = Licznik And 3 'zeruje 6 zbędnych bitów ośmiobitowego licznika
If Praca = 1 Then
Portb = Lookup(licznik , Tabela)
Else
Portb = 0
End If
Return
Tabela:
Data &B11111001 , &B11111100 , &B11110110 , &B11110011 ' w wersji z 4 tranzystorami
'Data &B11000011 , &B11110000 , &B00111100 , &B00001111 'przy kostce ULN2803 po dwa wyjścia równolegle
Wydaje mi sie ze blad tkwi w Tabeli, sa tam wartosci jakie ma nadac portowi B, cztery najmlodsze bity tego portu steruja tranzystorami, wiec powinno moim zdaniem wygladac to tak: &B11110001 , &B11110010 , &B11110100 , &B11111000 czy mam racje?