![]() |
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
'############################################################### '* '* Steuerschaltung für Visible V8 Engine mit ATMega8L '* '* Willie 19.02.2017 '* '*************************************************************** '* '* Pin 7 Vcc auf +5V '* Pin 8 GND auf GND '* 100nF Kerko zwischen Vcc und GND '* 10kOhm zwischen PD2 und GND - Pulldown für Nachlaufdauer '* 10kOhm zwischen PD6 und GND - Pulldown für Eingang '* 8 LEDs an PB0 - PB8 '* '* "alive"-LED mit Vorwiderstand 1k zwischen Portc.3 und GND '* '############################################################### $regfile = "m8adef.dat" ' ATMegaA8; Stacks etc.automatisch aus Bascom übernommen $crystal = 8000000 ' auf 1 MHz eingestellt (Fuse-Bits!) $hwstack = 40 $swstack = 16 $framesize = 32 Dim I As Byte ' Zählvariable Dim V As Word ' Variable für Abschaltverzögerung Dim Led_sequenz(8) As Dword ' 8 LED-Sequenzen à 32 Schaltzustände Dim Impuls As Byte ' legt die Impulsdauer fest Dim Sequenz As Byte ' Länge der Sequenz Werte 0 - 15 entsprechen 1 - 16 Sequenzbits Config Portc.3 = Output ' "alive"-LED (läuft das Programm noch?) Config Portc.2 = Output ' Ausgang für Haltespannung Reedrelais Config Portb = Output ' 8 Ausgänge für die LEDs Config Portd.2 = Input ' Eingang für Umschaltung der Länge der Abschaltverzögerung Config Portd.6 = Input ' Eingang für Tasterüberwachung Alive Alias Portc.3 Reed Alias Portc.2 Led1 Alias Portb.0 Led2 Alias Portb.1 Led3 Alias Portb.2 Led4 Alias Portb.3 Led5 Alias Portb.4 Led6 Alias Portb.5 Led7 Alias Portb.6 Led8 Alias Portb.7 Nachlauf Alias Pind.2 ' Aufpassen:PIND.2 - wir fragen ja einen INput ab Eingang Alias Pind.6 ' Aufpassen:PIND.6 - wir fragen ja einen INput ab Impuls = 10 ' Impulsdauer in Millisekunden Sequenz = 32 ' s. o. Led_sequenz(1) = &B00000000000000000000000000000001 ' Sequenz wird von hinten nach vorne abgearbeitet 1 = an, 0 = aus Led_sequenz(2) = &B00000000000000000000000000010000 Led_sequenz(3) = &B00000000000000000000000100000000 Led_sequenz(4) = &B00000000000000000001000000000000 Led_sequenz(5) = &B00000000000000010000000000000000 Led_sequenz(6) = &B00000000000100000000000000000000 Led_sequenz(7) = &B00000001000000000000000000000000 Led_sequenz(8) = &B00010000000000000000000000000000 Alive = 1 ' "alive"-LED einschalten Reed = 1 ' Reedrelais einschalten V = 0 ' Abschaltverzögerung zurücksetzen Do For I = 0 To Sequenz Led1 = Led_sequenz(1).i Led2 = Led_sequenz(2).i Led3 = Led_sequenz(3).i Led4 = Led_sequenz(4).i Led5 = Led_sequenz(5).i Led6 = Led_sequenz(6).i Led7 = Led_sequenz(7).i Led8 = Led_sequenz(8).i Waitms Impuls If Eingang = 0 Then Incr V ' Zeitschleife +1 Toggle Alive '"alive"-LED umschalten If Nachlauf = 1 And V >= 128 Then Gosub Abschaltung ' wenn Schalter = EIN = kurzer Nachlauf If Nachlauf = 0 And V = 383 Then Gosub Abschaltung ' wenn Schalter = AUS = langer Nachlauf Next I Loop Abschaltung: Reed = 0 ' Reedrelais ausschalten V = 0 ' Abschaltverzögerung zurücksetzen Wait 10 ' Wartezeit für sicheren Abfall des Reedrelais Return ' Keine Funktion, nur für Syntax End ' Keine Funktion, nur für Syntax |
![]() |
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
'############################################################### '* '* Steuerschaltung für V8 Engine mit ATMega8L '* Vers.3 '* '* Willie 19.03.2017 '* '*************************************************************** '* '* Pin 7 Vcc auf +4,5V Batteriebetrieb mit 3xAA '* Pin 8 GND auf GND '* 100nF Kerko zwischen Vcc und GND '* 10kOhm zwischen PD2 und GND - Pulldown für Eingang '* 10kOhm zwischen PD3 und GND - Pulldown für Nachlaufdauer '* 8 LEDs an PB0 - PB7 '* Reed-Relais an PC4 '* '*************************************************************** '* '* Die Schaltung arbeitet bis zu einer Minimalspannung von 3,4V '* '############################################################### $regfile = "m8adef.dat" ' ATMegaA8; Stacks etc.automatisch aus Bascom übernommen $crystal = 8000000 ' intern auf 1 MHz eingestellt (Fuse-Bits!) $hwstack = 40 $swstack = 16 $framesize = 32 Dim I As Byte ' Zählvariable Dim V As Word ' Variable für Abschaltverzögerung Dim Led_sequenz(8) As Dword ' 8 LED-Sequenzen à 32 Schaltzustände Dim Impuls As Byte ' legt die Impulsdauer fest Dim Sequenz As Byte ' Länge der Sequenz Werte 0 - 15 entsprechen 1 - 16 Sequenzbits Config Portc.4 = Output ' Ausgang für Haltespannung Reedrelais Config Portb = Output ' 8 Ausgänge für die LEDs Config Portd.2 = Input ' Eingang für Tasterüberwachung Config Portd.3 = Input ' Eingang für Umschaltung der Länge der Abschaltverzögerung Reed Alias Portc.4 Led1 Alias Portb.0 Led2 Alias Portb.1 Led3 Alias Portb.2 Led4 Alias Portb.3 Led5 Alias Portb.4 Led6 Alias Portb.5 Led7 Alias Portb.6 Led8 Alias Portb.7 Eingang Alias Pind.2 ' Aufpassen:PIND.2 - wir fragen ja einen INput ab Nachlauf Alias Pind.3 ' Aufpassen:PIND.3 - wir fragen ja einen INput ab Impuls = 10 ' Impulsdauer in Millisekunden Sequenz = 32 ' s. o. Led_sequenz(1) = &B00000000000000000000000000000001 ' Sequenz wird von hinten nach vorne abgearbeitet 1 = an, 0 = aus Led_sequenz(2) = &B00000000000000000000000000010000 Led_sequenz(3) = &B00000000000000000000000100000000 Led_sequenz(4) = &B00000000000000000001000000000000 Led_sequenz(5) = &B00000000000000010000000000000000 Led_sequenz(6) = &B00000000000100000000000000000000 Led_sequenz(7) = &B00000001000000000000000000000000 Led_sequenz(8) = &B00010000000000000000000000000000 Reed = 1 ' Reedrelais einschalten V = 0 ' Abschaltverzögerung zurücksetzen Do For I = 0 To Sequenz Led1 = Led_sequenz(1).i Led2 = Led_sequenz(2).i Led3 = Led_sequenz(3).i Led4 = Led_sequenz(4).i Led5 = Led_sequenz(5).i Led6 = Led_sequenz(6).i Led7 = Led_sequenz(7).i Led8 = Led_sequenz(8).i Waitms Impuls If Eingang = 0 Then Incr V ' Zeitschleife +1 If Nachlauf = 1 And V >= 128 Then Gosub Abschaltung ' wenn Schalter = EIN = ca. 10 sec Nachlauf If Nachlauf = 0 And V = 383 Then Gosub Abschaltung ' wenn Schalter = AUS = ca. 30 sec Nachlauf Next I Loop Abschaltung: Reed = 0 ' Reedrelais ausschalten V = 0 ' Abschaltverzögerung zurücksetzen Wait 10 ' Wartezeit für sicheren Abfall des Reedrelais Return ' Keine Funktion, nur für Syntax End ' Keine Funktion, nur für Syntax |
P.S. Falls Du Erstbesteller bei Pollin bist, bitte Nachricht. Das wird das Projekt unterstützen.
Blinker, Blitzer, led, Mikrocontroller, Schrittmotor, Sensor, Servo, Sound, Soundmodul
Forensoftware: Burning Board®, entwickelt von WoltLab® GmbH