'*************************************************************
'PWM- Signal für Lego mindstorms NXT Motor Port- Expander
'mit ATtiny45 und PCF8574
'2011-05-21
'*************************************************************
$regfile = "attiny45.dat"
$crystal = 1200000
$hwstack = 10
Config Portb.0 = Output 'PWM- Signal M1 bzw. M3
Config Portb.1 = Output 'PWM- Signal M2 bzw. M4
Config Portb.3 = Input 'Poti M1 bzw. M3
Config Portb.4 = Input 'Poti M2 bzw. M4
'PWM
Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
'Analogwandler
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'Werte von Analogwandler
Dim Analog_m1 As Integer
Dim Analog_m2 As Integer
Do
'***** M1 bzw. M3 *****
'AD- Wandler einlesen. Werte zwischen 0-1023
Analog_m1 = Getadc(3)
'max. Geschwindigkeit bei Pwm0a=255
Select Case Analog_m1
Case 0 To 50:
Pwm0a = 25
Case 51 To 100:
Pwm0a = 35
Case 101 To 150:
Pwm0a = 40
Case 151 To 200:
Pwm0a = 50
Case 201 To 250:
Pwm0a = 60
Case 251 To 300:
Pwm0a = 70
Case 301 To 350:
Pwm0a = 80
Case 351 To 400:
Pwm0a = 90
Case 401 To 450:
Pwm0a = 100
Case 451 To 500:
Pwm0a = 110
Case 501 To 550:
Pwm0a = 120
Case 551 To 600:
Pwm0a = 130
Case 601 To 650:
Pwm0a = 140
Case 651 To 700:
Pwm0a = 155
Case 701 To 750:
Pwm0a = 170
Case 751 To 800:
Pwm0a = 185
Case 801 To 850:
Pwm0a = 210
Case 851 To 900:
Pwm0a = 225
Case 901 To 950:
Pwm0a = 225
Case 951 To 1000:
Pwm0a = 240
Case 1001 To 1023:
Pwm0a = 255
End Select
'**********************
'***** M2 bzw. M4 *****
'AD- Wandler einlesen. Werte zwischen 0-1023
Analog_m2 = Getadc(2)
'max. Geschwindigkeit bei Pwm0b=255
Select Case Analog_m2
Case 0 To 50:
Pwm0b = 25
Case 51 To 100:
Pwm0b = 35
Case 101 To 150:
Pwm0b = 40
Case 151 To 200:
Pwm0b = 50
Case 201 To 250:
Pwm0b = 60
Case 251 To 300:
Pwm0b = 70
Case 301 To 350:
Pwm0b = 80
Case 351 To 400:
Pwm0b = 90
Case 401 To 450:
Pwm0b = 100
Case 451 To 500:
Pwm0b = 110
Case 501 To 550:
Pwm0b = 120
Case 551 To 600:
Pwm0b = 130
Case 601 To 650:
Pwm0b = 140
Case 651 To 700:
Pwm0b = 155
Case 701 To 750:
Pwm0b = 170
Case 751 To 800:
Pwm0b = 185
Case 801 To 850:
Pwm0b = 210
Case 851 To 900:
Pwm0b = 225
Case 901 To 950:
Pwm0b = 225
Case 951 To 1000:
Pwm0b = 240
Case 1001 To 1023:
Pwm0a = 255
End Select
'**********************
Loop
End
|