Witam
To moze zaczne od kodu:
Wiec problem jest taki że serwo raz na jakiś czas skacze w jedna strone o 10 stopni i nie wiem dlaczego? Ogolnie ze zmiana temperatury serwo zmienia pozycje w skokach innym słowem działa lecz nie wiem dlaczego te skoki sa nagłe i nieregularne. Gdy wyrzucam odczyt temp. i robie zmiane pozycji serwa na "przycisk" serwo zachowuje się lepiej ale dalej ma małe skoki praktycznie tylko je słychać na serwie.
Poprzedzając pytania zasilanie z zasil. przez 7805 atm. pracuje na wewnętrznym kwarcu 8mhz.
Za podopowiedzi i uwagi z góry dziękuje.
P.S. Prosze o nie nadmierne krytykowanie kodu gdyż jestem poczatkujacym programista
Pozdrawiam
To moze zaczne od kodu:
Code:
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2
Cls
Config Servos = 1 , Servo1 = Portc.5 , Reload = 10
Config Portc.5 = Output
Config Portd.0 = Input
Set Portd.0
Cursor Off
Dim Serworuch As Byte
Serworuch = 42
Config 1wire = Portb.1
Dim Adresy(16) As Byte
Dim Temp As Byte
Dim Temp_str As String * 6
Dim Temp_str2 As String * 6
Dim W As Byte
Dim T As Integer
Dim Wew(9) As Byte
Dim Zew(9) As Byte
Adresy(1) = 1wsearchfirst()
Adresy(9) = 1wsearchnext()
W = 1wirecount()
Do
Disable Interrupts
1wreset
1wwrite &H55 ' Będę wysyłał adres
1wwrite Adresy(1) , 8 ' Wysyłam adres
1wwrite &HBE ' Komenda dla czujnika o wysłanym adresie
Wew(1) = 1wread(9)
1wreset
1wwrite &H55
1wwrite Adresy(9) , 8
1wwrite &HBE
Zew(1) = 1wread(9)
1wreset
1wwrite &HCC ' Komenda skip ROM, czyli słuchajcie wszyscy
1wwrite &H44 ' Komenda convert T
Enable Interrupts
Cls
T = Makeint(wew(1) , Wew(2))
T = T * 10
T = T / 16
Temp_str = Str(t)
Temp_str = Format(temp_str , "0.0")
Locate 1 , 1
Lcd Temp_str
Locate 1 , 9
Lcd Serworuch
Locate 1 , 13
Lcd T
If W = 1 Then
Locate 2 , 1
Lcd "Err " 'jeśli brak drugiego czujnika
Elseif Err = 0 Then
T = Makeint(zew(1) , Zew(2))
T = T * 10
T = T / 16
Temp_str2 = Str(t)
Temp_str2 = Format(temp_str2 , "0.0")
Locate 2 , 1
Lcd "Temp.zew." ; Temp_str2 ; "C "
End If
Serworuch = T - 200
Servo(1) = Serworuch
Loop
End
Wiec problem jest taki że serwo raz na jakiś czas skacze w jedna strone o 10 stopni i nie wiem dlaczego? Ogolnie ze zmiana temperatury serwo zmienia pozycje w skokach innym słowem działa lecz nie wiem dlaczego te skoki sa nagłe i nieregularne. Gdy wyrzucam odczyt temp. i robie zmiane pozycji serwa na "przycisk" serwo zachowuje się lepiej ale dalej ma małe skoki praktycznie tylko je słychać na serwie.
Poprzedzając pytania zasilanie z zasil. przez 7805 atm. pracuje na wewnętrznym kwarcu 8mhz.
Za podopowiedzi i uwagi z góry dziękuje.
P.S. Prosze o nie nadmierne krytykowanie kodu gdyż jestem poczatkujacym programista
Pozdrawiam