'ultraschall Parkassistent in der Garage 'ultraschall_garage_attiny24_V.1.1.bas '26.07.2017 'Pin2 PB0 frei 'Pin3 PB1 frei 'Pin4 Reset 'Pin5 Int0 PB2 Taster 'Pin8 PA5 Rote LED "zu weit" 'Pin9 PA4 Gelbe LED "noch 10 cm" 'Pin10 PA3 Grüne LED "genau richtig" 'Pin11 PA2 Meldestatus "Fahrzeug dedektiert!" 'Pin10 PA1 Sensor "Echo" 'Pin11 PA0 Sensor "Tigger" $regfile = "attiny24.dat" $prog &HFF , &H62 , &HDF , &HFF ' generated. Take care that the chip supports all fuse bytes. $crystal = 8000000 $hwstack = 35 $swstack = 22 $framesize = 22 Config Porta.0 = Output Config Pina.1 = Input Config Porta.2 = Output Config Porta.3 = Output Config Porta.4 = Output Config Porta.5 = Output Config Int0 = Falling Dim Zeit As Long , Messung As Long , Abstand As Single Dim Abstand_soll As Single Dim Abstand_nahe As Single Dim Ee_abstand_soll As Eram Single Dim Zaehler As Byte Fahrzeugstatus Alias Porta.2 Ledstop Alias Porta.3 Lednahe Alias Porta.4 Ledrot Alias Porta.5 Taster Alias Portb.2 'Interrupts vorbereiten: Int0, fallende Flanke On Int0 Abstand_ee_isr Enable Int0 Enable Interrupts Taster = 1 'Pullup an 'Sollabstand aus EEProm lesen Abstand_soll = Ee_abstand_soll 'Hallo Welt geblinke beim Start Ledstop = 1 Waitms 500 Ledstop = 0 Lednahe = 0 Ledrot = 0 Zaehler = 100 'Hauptschleife 3/4 Sekunde Do 'Messung starten, Resultat holen Pulseout Porta , 0 , 20 Pulsein Zeit , Pina , 1 , 1 'Umrechnen in cm Messung = Zeit * 10 Abstand = 0.17325 * Zeit 'Abstände vergleichen 'noch 50cm -> gelbe LED an... Abstand_nahe = Abstand_soll + 50 If Abstand <= Abstand_nahe And Abstand > Abstand_soll Then Lednahe = 1 Else Lednahe = 0 End If '...angekommen -> grüne LED an ... If Abstand <= Abstand_soll Then Ledstop = 1 Zaehler = Zaehler + 1 Else Zaehler = Zaehler - 2 Ledstop = 0 End If '... >=10cm zu weit -> rote LED an Abstand_nahe = Abstand_soll - 10 If Abstand <= Abstand_nahe Then Ledrot = 1 Else Ledrot = 0 End If 'Fahrzeug dedektiert? If Zaehler >= 110 Then Fahrzeugstatus = 1 Else Fahrzeugstatus = 0 End If If Zaehler <= 100 Then Zaehler = 100 End If If Zaehler >= 120 Then Zaehler = 120 End If Waitms 750 Loop Abstand_ee_isr: 'Tastendruck programmiert den Abstand ins EEPROM 'Lichtsignale quittieren dies Disable Int0 'mehrfachauslösen verhindern Ledstop = 1 Lednahe = 1 Ledrot = 1 Waitms 250 Ledstop = 0 Lednahe = 0 Ledrot = 0 Waitms 250 Abstand = Abstand + 1 'Korrektur 1 cm Ee_abstand_soll = Abstand Abstand_soll = Abstand Enable Int0 Return