Skocz do zawartości

[Bascom] Program linefollower


Pomocna odpowiedź

Napisano

Witam.

Buduje robota z tego artykułu lecz chciałbym zwiększyć ilość czujników do 5, i prosiłbym aby ktoś sprawdził program

                                                
$regfile = "m8def.dat"
$crystal = 1000000

'Konfiguracja przetwornika analog-cyfra (ADC)
Config Adc = Single , Prescaler = Auto

'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

'Opis portów
'Enable1 - Silnik lewy - Portb.1 (PWM1A)
'Enable2 - Silnik prawy - portb.2 (PWM1B)
'Input1 - Silnik lewy A - Portd.3
'Input2 - Silnik lewy B - Portd.2
'Input4 - Silnik prawy A - Portd.0
'Input3 - Silnik prawy B - Portd.1
'Dioda - Portd.6
'Czujnik lewy skrajny - ADC1
'Czujnik lewy - ADC2
'Czujnik środkowy - ADC3
'Czujnik prawy - ADC4
'Czujnik prawy skrajny - ADC5

Silnik_lewy_a Alias Portd.3
Silnik_lewy_b Alias Portd.2
Silnik_prawy_b Alias Portd.0
Silnik_prawy_a Alias Portd.1
Dioda Alias Portd.6

'Granica reagowania na linię - należy dobrać doświadczalnie
Const Granica = 500

'Deklaracje zmiennych
Dim Czujnik_lewy_skrajny As Single
Dim Czujnik_lewy As Single
Dim Czujnik_srodkowy As Single
Dim Czujnik_prawy As Single
Dim Czujnik_prawy_skrajny As Single
Dim W As Word

'Blok instrukcji
Set Dioda
Set Silnik_lewy_a
Reset Silnik_lewy_b
Set Silnik_prawy_a
Reset Silnik_prawy_b

Do
  Gosub Wczytaj_stany_przetwornikow
  If Czujnik_srodkowy > Granica Then
     'Silnik lewy - maksymalna prędkość
     Pwm1a = 255
     'Silnik prawy - maksymalna prędkość
     Pwm1b = 255
  Elseif Czujnik_lewy > Granica Then
     Pwm1a = 125
     Pwm1b = 255
  Elseif Czujnik_lewy_skrajny > Granica Then
     Pwm1a = 0
     Pwm1b = 255
  Elseif Czujnik_prawy > Granica Then
     Pwm1a = 255
     Pwm1b = 125
  Elseif Czujnik_prawy_skrajny > Granica Then
     Pwm1a = 255
     Pwm1b = 0
  Else
     Pwm1a = 255
     Pwm1b = 255
  End If
Loop
End

Wczytaj_stany_przetwornikow:
Start Adc
W = Getadc(5)
W = Getadc(5)
Stop Adc
Czujnik_lewy = W
Start Adc
W = Getadc(4)
W = Getadc(4)
Stop Adc
Czujnik_srodkowy = W
Start Adc
W = Getadc(3)
W = Getadc(3)
Stop Adc
Czujnik_prawy = W
Return

Jest jeszcze taki problem, że nie wiem co trzeba zmienić w "Wczytaj_stany_przetwornikow:"

DaZ w Sub'ie Wczytaj_stany_przetwonikow należy dodać obsługę kolejnych dwóch kanałów ADC (tych, pod które masz podłączone czujniki). Chodzi o te linijki:

Start Adc 
W = Getadc(3) 
W = Getadc(3) 
Stop Adc 
Czujnik_prawy_skrajny = W 
Start Adc 
W = Getadc(3) 
W = Getadc(3) 
Stop Adc 
Czujnik_lewy_skrajny = W 
  • Lubię! 1

Czyli będzie coś takiego?

Wczytaj_stany_przetwornikow:
Start Adc
W = Getadc(5)
W = Getadc(5)
Stop Adc
Czujnik_prawy_skrajny = W
Start Adc
W = Getadc(4)
W = Getadc(4)
Stop Adc
Czujnik_srodkowy = W
Start Adc
W = Getadc(3)
W = Getadc(3)
Stop Adc
Czujnik_lewy = W
Start Adc
W = Getadc(2)
W = Getadc(2)
Stop Adc
Czujnik_lewy_skrajny = W
Start Adc
W = Getadc(1)
W = Getadc(1)
Czujnik_prawy = W
Return

Natanoj, ok dam znać, tylko że robota dopiero zaczynam robić i trochę zajmie mi to czasu ze względu że mam teraz dużo obowiązków. Ten kod Trekera dobra sprawa jeszcze się nad nim zastanowię.

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...