Skocz do zawartości

maro1977pl

Pomocna odpowiedź

O to niestety musiałbyś poprosić kogoś kto ogarnia timery. Tak jak mówię, najwyższą czułość ten czujnik ma na dokładnie tej częstotliwości jaką ma napisaną. Zwiększając/zmniejszając generowaną dla diody czujnik nie widzi jej już tak dobrze - obiekt musi być bliżej.

Link do komentarza
Share on other sites

Spoko dzięki.

W miedzy czasie napisałem programik do obsługi IR.

Na razie teoria bo nie sprawdziłem w praktyce jak by ktoś zerknął i potwierdził czy to będzie dobrze:

$regfile = "m8def.dat"                                      'deklaracja pliku z opisem rejestrów procesora
$crystal = 8000000                                          'deklaracja częstotliwości kwarcu

Ddrb = &B00111111                                           'deklaracje portów
Portb = &B00000000
Ddrc = &B0000100
Portc = &B1111100
Ddrd = &B11100011
Portd = &B00011100

Inputh_2 Alias Portb.0                                      'deklaracje aliasów
Led3 Alias Portb.4
Led4 Alias Portb.5
Buzzer Alias Portc.2
Prawyir Alias Pinc.3
Srodkowyir Alias Pinc.4
Lewyir Alias Pinc.5
Led1 Alias Portd.0
Led2 Alias Portd.1
Zderzak Alias Pind.2
S1 Alias Pind.3
S2 Alias Pind.4
Inputh_4 Alias Portd.5
Inputh_3 Alias Portd.6
Inputh_1 Alias Portd.7

Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Declare Sub Silniki(byval V_prawa As Integer , Byval V_lewa As Integer)       'deklaracja procedura obsługi silników
Config Timer2 = Timer , Prescale = 8 , Compare = Toggle , Clear Timer = 1
Dim Count As Byte , Akcja As Bit
Dim Prawy As Integer , Lewy As Integer , Prawyout As Integer , Lewyout As Integer
Ocr2 = 20                                                   'Wartość 27 (wzgl. 28) dla najwyższej czułości. Wpisać niższą dla zminiejszenia zasięgu

Do
                                                           'PROCEDURA OBSŁUGI RADARÓW PODCZERWIENI:
  Incr Count                                               'zwiększanie zawartości licznika
  If Count = 250 Then Count = 0                            'obsługa przepełnienia licznika
  If Count = 109 Then                                      '
     Start Timer2                                          'włączanie Timera2 na czas, gdy w liczniku jest wartość 40
     Akcja = 1                                             'zezwalanie na wykonanie algorytmu detekcji przeszkód
  Else                                                     '
     Stop Timer2                                           'wyłączanie na cały pozostały czas
     Akcja = 0                                             'brak zezwolenia na detekcję przeszkód
  End If                                                   '
  Waitms 1                                                 '

  If Akcja = 1 Then
     Led1 = Not Lewyir                                     'sygnalizacja stanu czujników
     Led2 = Not Srodkowyir
     Led4 = Not Prawyir

     If Prawyir = 1 Then                                   'ustawianie zmiennej prawego czujnika
        Prawy = 200
     Else
        Prawy = -200
     End If

     If Lewyir = 1 Then                                    'ustawianie zmiennej lewego czujnika
        Lewy = 200
     Else
        Lewy = -200
     End If

     Prawyout = Lewy * Zderzak
     Lewyout = Prawy * Zderzak
     Call Silniki(prawyout , Lewyout)                      'wywołanie procedury obsługi silników na podstawie wyliczonych parametrów

  Else                                                     'tutaj można wpisać polecenia, wykonywane podczas, gdy nie są sprawdzane przeszkody
     '
  End If
  Loop
End

Sub Silniki(byval V_prawa As Integer , Byval V_lewa As Integer)       'procedura obsługi silników
  V_prawa = V_prawa + 0                                    'korygujemy prawy silnik
  If V_prawa > 0 Then
     Pwm1a = V_prawa
     Inputh_1 = 1
     Inputh_2 = 0
  Else
     Pwm1a = -1 * V_prawa
     Inputh_1 = 0
     Inputh_2 = 1
  End If

  V_lewa = V_lewa + 0                                      'korygujemy lewy silnik
  If V_lewa > 0 Then
     Pwm1b = V_lewa
     Inputh_3 = 1
     Inputh_4 = 0
  Else
     Pwm1b = -1 * V_lewa
     Inputh_3 = 0
     Inputh_4 = 1
  End If
End Sub
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.