Skocz do zawartości

Skrócenie programu do sterowania IR


BL97

Pomocna odpowiedź

Oto mój program do zdalnego sterowania robotem za pomocą pilota R5.

Nie dało by się go jakoś skrócić nie zmieniając jego działania?

$regfile = "m8def.dat"                                      'rodzaj procesora
$crystal = 1000000                                          'taktowanie procesora

'Konfiguracja sterowania sprzętowym PWM
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

'Konfiguracja portów
Config Portd = Output
Config Portb = Output
Portd.6 = 0
Portd.7 = 0
Portd.5 = 0
Config Rc5 = Pinc.0
Dim Address As Byte , Command As Byte
Enable Interrupts

Silnik_lewy_a Alias Portd.3
Silnik_lewy_b Alias Portd.2
Silnik_prawy_b Alias Portd.0
Silnik_prawy_a Alias Portd.1
Zielonaa Alias Portd.6
Zielonab Alias Portd.7
Czerwona Alias Portd.5

Do
 Getrc5(address , Command)
Command = Command And &B01111111

  If Command = 32 Then                                     'przod
Set Silnik_lewy_a
Reset Silnik_lewy_b
Set Silnik_prawy_a
Reset Silnik_prawy_b
     Pwm1a = 255
     Pwm1b = 255

     Elseif Command = 33 Then                              'tyl
Reset Silnik_lewy_a
Set Silnik_lewy_b
Reset Silnik_prawy_a
Set Silnik_prawy_b
     Pwm1a = 255
     Pwm1b = 255

     Elseif Command = 17 Then                              'lewo
Set Silnik_lewy_a
Reset Silnik_lewy_b
Set Silnik_prawy_a
Reset Silnik_prawy_b
     Pwm1a = 0
     Pwm1b = 255

     Elseif Command = 16 Then                              'prawo
Set Silnik_lewy_a
Reset Silnik_lewy_b
Set Silnik_prawy_a
Reset Silnik_prawy_b
     Pwm1a = 255
     Pwm1b = 0

     Elseif Command = 48 Then                              'na ukos w lewo
Set Silnik_lewy_a
Reset Silnik_lewy_b
Set Silnik_prawy_a
Reset Silnik_prawy_b
     Pwm1a = 140
     Pwm1b = 255

     Elseif Command = 34 Then                              'na ukos w prawo
Set Silnik_lewy_a
Reset Silnik_lewy_b
Set Silnik_prawy_a
Reset Silnik_prawy_b
     Pwm1a = 255
     Pwm1b = 140

     Elseif Command = 21 Then                              'na ukos w lewo w  tyl
Reset Silnik_lewy_a
Set Silnik_lewy_b
Reset Silnik_prawy_a
Set Silnik_prawy_b
     Pwm1a = 140
     Pwm1b = 255

     Elseif Command = 22 Then                              'na ukos w prawo w tyl
Reset Silnik_lewy_a
Set Silnik_lewy_b
Reset Silnik_prawy_a
Set Silnik_prawy_b
     Pwm1a = 255
     Pwm1b = 140

     Elseif Command = 55 Then                              'zapal czerwona diode
Toggle Czerwona

     Elseif Command = 54 Then                              'zapal zielona diode
Toggle Zielonab

     Elseif Command = 13 Then                              'zapal druga zielona diode
Toggle Zielonaa

     Elseif Command = 12 Then                              'wylacz wszystkie urzadzenia
Reset Silnik_lewy_a
Reset Silnik_lewy_b
Reset Silnik_prawy_a
Reset Silnik_prawy_b
Reset Czerwona
Reset Zielonaa
Reset Zielonab

     Else                                                  'gdy zaden przycisk nie nacisniety
        Pwm1a = 0                                          'stoj
        Pwm1b = 0

  End If
Loop
End
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.