' Line Follower na 3 TSOP'ach bez sterowania Pwm
' by Kamil Nowinski
$regfile = "m8def.dat" ' uC - ATMEGA8
$crystal = 1000000 ' taktowanie 1MHz
Config PORTD = Output
Config PORTB = Output
Config ADC = Single, Prescaler = Auto, Reference = Avcc
Config Timer1 = Pwm , Pwm = 8, Prescale = 1 , Compare A Pwm = Clear Down ,
Compare B Pwm = Clear Down
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
Const Granica = 500 ' dobrac doswiadczalnie
Dim Czujnik_lewy As Single
Dim Czujnik_srodkowy As Single
Dim Czujnik_prawy As Single
Dim P As Word
Set Dioda
Set Silnik_lewy_a
Reset Silnik_lewy_b
Set Silnik_prawy_a
Reset Silnik_prawy_b
Do
Gosub wczytaj
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 = 0
Pwm1b = 255
Elseif Czujnik_prawy > Granica Then
Pwm1a = 255
Pwm1b = 0
Else
Pwm1a = 255
Pwm1b = 255
End If
Loop
End
wczytaj:
Start Adc
W = Getadc(5)
W = Getadc(5)
Stop Adc
Czujnik_lewy = P
Start Adc
W = Getadc(4)
W = Getadc(4)
Stop Adc
Czujnik_srodkowy = P
Start Adc
W = Getadc(3)
W = Getadc(3)
Stop Adc
Czujnik_prawy = P
Return
'jesli nie uzywasz aliasow przy warunkach stawiaj If Pinx.y = a then ... gdzie x to PORT, a Y jego numer
' a przy instrukcjach przypisania (po then) stawiaj PORTx.y