PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 15 Low Current LED´s als Lauflicht mit drei Taster mit ATMEGA8 und Bascom



stekolos
01.07.2013, 20:20
Hallo zusammen,

mit diesem kleinen Projektle (wie der Schwabe sagt) möchte ich mich bei Euch bedanken.
Dank dem Forum und dem RN-Wissen konnte ich mir das nötige Wissen aneignen, um mein erstes kleinen Projekt zu realisieren.

Bescheibung:
Platine mit 15 Low Current LED´s, 3 Tastern und einem Batteriehalterung.
Mit den Tastern können unterschiedliche LED Lauflichtprogramme durchgewechselt werden.
Schaltung und Platinelayout wurde mit Target!3000 V15 Light gezeichnet.
Das Programm wurde mit BASCOM programmiert.

Quellcode:

'************************************************* ***************************
'* Filename : ATMEGA8 15 Kanal Lauflicht unterschiedl. Programme *
'* Revision : 1.0 *
'* Controller : ATMEGA8 *
'* Compiler : BASCOM-AVR 1.11.9.5 *
'* Author : Stefan Kobsa, SteKo Software, 2013 *
'* WWW : http://www.steko-software.de *
'************************************************* ***************************
'------------------------------------------------------------------------------
$regfile = "m8def.dat" ' ATMEGA8
$crystal = 16000000 '
$baud = 19200

$hwstack = 40
$swstack = 20
$framesize = 20

'Dynamisch Pause Gewschwindigkeit einstellen
Dim Pause As Integer
Pause = 100 '1 Sekunde

Dim Proglicht As Integer
Dim Progmax As Integer
Proglicht = 18
Progmax = 18

' LED Ports definieren
Led1 Alias Portd.5 'GRÜN rechts
Config Pind.5 = Output
Led2 Alias Portd.6 'ROT
Config Pind.6 = Output
Led3 Alias Portd.7 'ROT
Config Pind.7 = Output
Led4 Alias Portb.0 'ROT
Config Pinb.0 = Output
Led5 Alias Portb.1 'GELB
Config Pinb.1 = Output
Led6 Alias Portb.2 'GELB
Config Pinb.2 = Output
Led7 Alias Portb.3 'GELB
Config Pinb.3 = Output
Led8 Alias Portb.4 'GRÜN mitte
Config Pinb.4 = Output
Led9 Alias Portb.5 'GELB
Config Pinb.5 = Output
Led10 Alias Portc.0 'GELB
Config Pinc.0 = Output
Led11 Alias Portc.1 'GELB
Config Pinc.1 = Output
Led12 Alias Portc.2 'ROT
Config Pinc.2 = Output
Led13 Alias Portc.3 'ROT
Config Pinc.3 = Output
Led14 Alias Portc.4 'ROT
Config Pinc.4 = Output
Led15 Alias Portc.5 'GRÜN links
Config Pinc.5 = Output

'Taster definieren
Wechsel Alias Pind.2
Config Pind.2 = Input
Portd.2 = 1 'PullUp-Widerstand einschalten

Schneller Alias Pind.3
Config Pind.3 = Input
Portd.3 = 1 'PullUp-Widerstand einschalten

Langsamer Alias Pind.4
Config Pind.4 = Input
Portd.4 = 1 'PullUp-Widerstand einschalten

Reset Led1
Reset Led2
Reset Led3
Reset Led4
Reset Led5
Reset Led6
Reset Led7
Reset Led8
Reset Led9
Reset Led10
Reset Led11
Reset Led12
Reset Led13
Reset Led14
Reset Led15

Declare Sub Led_alle(byval Status As Integer)
Declare Sub Led_alle_gruen(byval Status As Integer)
Declare Sub Led_alle_rot(byval Status As Integer)
Declare Sub Led_alle_gelb(byval Status As Integer)
Declare Sub Machpause
Declare Sub Tasterabfrage

Print "SteKo Software - 15 LED Lauflicht mit 3 Tastern steuern"
Print "Programm wird gestartet!"

'Initiallisieren LED Test
Call Led_alle(1)
Waitms 2000
Call Led_alle(0)

Do ' Hauptprogramm Schleife
'
Startprog:
Select Case Proglicht
Case 1 'alle Lichter an aus
Call Machpause
Call Led_alle(0)
Call Machpause
Call Led_alle(1)

Case 2 'alle grünen Lichter an aus
Call Machpause
Call Led_alle_gruen(0)
Call Machpause
Call Led_alle_gruen(1)

Case 3 'alle rot Lichter an aus
Call Machpause
Call Led_alle_rot(0)
Call Machpause
Call Led_alle_rot(1)

Case 4 'alle gelb Lichter an aus
Call Machpause
Call Led_alle_gelb(0)
Call Machpause
Call Led_alle_gelb(1)

Case 5 'LED alle Rot Gelb im wechsel
Call Machpause
Call Led_alle(0)
Call Led_alle_rot(1)
Call Machpause
Call Led_alle_rot(0)
Call Led_alle_gelb(1)

Case 6 'LED alle Rot Grün im wechsel
Call Machpause
Call Led_alle(0)
Call Led_alle_rot(1)
Call Machpause
Call Led_alle_rot(0)
Call Led_alle_gruen(1)

Case 7 'LED alle Grün Gelb im wechsel
Call Machpause
Call Led_alle(0)
Call Led_alle_gruen(1)
Call Machpause
Call Led_alle_gruen(0)
Call Led_alle_gelb(1)

Case 8 'Lichter von rechts nach links
Call Led_alle(0)
Call Machpause
Led1 = 1
Call Machpause
Led2 = 1
Call Machpause
Led3 = 1
Call Machpause
Led4 = 1
Call Machpause
Led5 = 1
Call Machpause
Led6 = 1
Call Machpause
Led7 = 1
Call Machpause
Led8 = 1
Call Machpause
Led9 = 1
Call Machpause
Led10 = 1
Call Machpause
Led11 = 1
Call Machpause
Led12 = 1
Call Machpause
Led13 = 1
Call Machpause
Led14 = 1
Call Machpause
Led15 = 1
Call Machpause
Led1 = 0
Call Machpause
Led2 = 0
Call Machpause
Led3 = 0
Call Machpause
Led4 = 0
Call Machpause
Led5 = 0
Call Machpause
Led6 = 0
Call Machpause
Led7 = 0
Call Machpause
Led8 = 0
Call Machpause
Led9 = 0
Call Machpause
Led10 = 0
Call Machpause
Led11 = 0
Call Machpause
Led12 = 0
Call Machpause
Led13 = 0
Call Machpause
Led14 = 0
Call Machpause
Led15 = 0
Call Machpause

Case 9 'Lichter von links nach rechts
Call Led_alle(0)
Call Machpause
Led15 = 1
Call Machpause
Led14 = 1
Call Machpause
Led13 = 1
Call Machpause
Led12 = 1
Call Machpause
Led11 = 1
Call Machpause
Led10 = 1
Call Machpause
Led9 = 1
Call Machpause
Led8 = 1
Call Machpause
Led7 = 1
Call Machpause
Led6 = 1
Call Machpause
Led5 = 1
Call Machpause
Led4 = 1
Call Machpause
Led3 = 1
Call Machpause
Led2 = 1
Call Machpause
Led1 = 1
Call Machpause
Led15 = 0
Call Machpause
Led14 = 0
Call Machpause
Led13 = 0
Call Machpause
Led12 = 0
Call Machpause
Led11 = 0
Call Machpause
Led10 = 0
Call Machpause
Led9 = 0
Call Machpause
Led8 = 0
Call Machpause
Led7 = 0
Call Machpause
Led6 = 0
Call Machpause
Led5 = 0
Call Machpause
Led4 = 0
Call Machpause
Led3 = 0
Call Machpause
Led2 = 0
Call Machpause
Led1 = 0
Call Machpause

Case 10 'eine LED von rechts nach links
Call Machpause
Call Led_alle(0)
Led15 = 0
Led1 = 1
Call Machpause
Led1 = 0
Led2 = 1
Call Machpause
Led2 = 0
Led3 = 1
Call Machpause
Led3 = 0
Led4 = 1
Call Machpause
Led4 = 0
Led5 = 1
Call Machpause
Led5 = 0
Led6 = 1
Call Machpause
Led6 = 0
Led7 = 1
Call Machpause
Led7 = 0
Led8 = 1
Call Machpause
Led8 = 0
Led9 = 1
Call Machpause
Led9 = 0
Led10 = 1
Call Machpause
Led10 = 0
Led11 = 1
Call Machpause
Led11 = 0
Led12 = 1
Call Machpause
Led12 = 0
Led13 = 1
Call Machpause
Led13 = 0
Led14 = 1
Call Machpause
Led14 = 0
Led15 = 1

Case 11 'eine LED von Links nach Rechts
Call Led_alle(0)
Call Machpause
Led1 = 0
Led15 = 1
Call Machpause
Led15 = 0
Led14 = 1
Call Machpause
Led14 = 0
Led13 = 1
Call Machpause
Led13 = 0
Led12 = 1
Call Machpause
Led12 = 0
Led11 = 1
Call Machpause
Led11 = 0
Led10 = 1
Call Machpause
Led10 = 0
Led9 = 1
Call Machpause
Led9 = 0
Led8 = 1
Call Machpause
Led8 = 0
Led7 = 1
Call Machpause
Led7 = 0
Led6 = 1
Call Machpause
Led6 = 0
Led5 = 1
Call Machpause
Led5 = 0
Led4 = 1
Call Machpause
Led4 = 0
Led3 = 1
Call Machpause
Led3 = 0
Led2 = 1
Call Machpause
Led2 = 0
Led1 = 1

Case 12 'LED rechts links laufen
Call Machpause
Call Led_alle(0)
Led15 = 0
Led1 = 1
Call Machpause
Led1 = 0
Led2 = 1
Call Machpause
Led2 = 0
Led3 = 1
Call Machpause
Led3 = 0
Led4 = 1
Call Machpause
Led4 = 0
Led5 = 1
Call Machpause
Led5 = 0
Led6 = 1
Call Machpause
Led6 = 0
Led7 = 1
Call Machpause
Led7 = 0
Led8 = 1
Call Machpause
Led8 = 0
Led9 = 1
Call Machpause
Led9 = 0
Led10 = 1
Call Machpause
Led10 = 0
Led11 = 1
Call Machpause
Led11 = 0
Led12 = 1
Call Machpause
Led12 = 0
Led13 = 1
Call Machpause
Led13 = 0
Led14 = 1
Call Machpause
Led14 = 0
Led15 = 1
Call Machpause
Led15 = 0
Led14 = 1
Call Machpause
Led14 = 0
Led13 = 1
Call Machpause
Led13 = 0
Led12 = 1
Call Machpause
Led12 = 0
Led11 = 1
Call Machpause
Led11 = 0
Led10 = 1
Call Machpause
Led10 = 0
Led9 = 1
Call Machpause
Led9 = 0
Led8 = 1
Call Machpause
Led8 = 0
Led7 = 1
Call Machpause
Led7 = 0
Led6 = 1
Call Machpause
Led6 = 0
Led5 = 1
Call Machpause
Led5 = 0
Led4 = 1
Call Machpause
Led4 = 0
Led3 = 1
Call Machpause
Led3 = 0
Led2 = 1
Call Machpause
Led2 = 0

Case 13 'LED aus der Mitte immer mehr an
Call Machpause
Call Led_alle(0)
Led8 = 1
Call Machpause
Led7 = 1
Led9 = 1
Call Machpause
Led6 = 1
Led10 = 1
Call Machpause
Led5 = 1
Led11 = 1
Call Machpause
Led4 = 1
Led12 = 1
Call Machpause
Led3 = 1
Led13 = 1
Call Machpause
Led2 = 1
Led14 = 1
Call Machpause
Led1 = 1
Led15 = 1

Case 14 'LED von links und rechts in die Mitte
Call Machpause
Call Led_alle(0)
Led15 = 1
Led1 = 1
Call Machpause
Led14 = 1
Led2 = 1
Call Machpause
Led13 = 1
Led3 = 1
Call Machpause
Led12 = 1
Led4 = 1
Call Machpause
Led11 = 1
Led5 = 1
Call Machpause
Led10 = 1
Led6 = 1
Call Machpause
Led9 = 1
Led7 = 1
Call Machpause
Led8 = 1

Case 15 'LED rechts links Mitte aus
Call Machpause
Call Led_alle(0)
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1
Call Machpause
Call Led_alle(0)
Led8 = 1
Led9 = 1
Led10 = 1
Led11 = 1
Led12 = 1
Led13 = 1
Led14 = 1
Led15 = 1

Case 16 'LED rechts links nur Grün
Call Machpause
Call Led_alle(0)
Led1 = 1
Call Machpause
Call Led_alle(0)
Led15 = 1

Case 17 'LED rechts links nur Rot
Call Machpause
Call Led_alle(0)
Led2 = 1
Led3 = 1
Led4 = 1
Call Machpause
Call Led_alle(0)
Led12 = 1
Led13 = 1
Led14 = 1

Case 18 'LED rechts links nur Gelb
Call Machpause
Call Led_alle(0)
Led5 = 1
Led6 = 1
Led7 = 1
Call Machpause
Call Led_alle(0)
Led9 = 1
Led10 = 1
Led11 = 1

End Select
Loop
End

Sub Led_alle(byval Status As Integer)
'Call Tasterabfrage ' wurde eine Taste gedrückt?
If Status = 1 Then 'Alle LED anschalten
Print "Alle LED AN"
Led1 = 1 'GRÜN rechts
Led2 = 1 'ROT
Led3 = 1 'ROT
Led4 = 1 'ROT
Led5 = 1 'GELB
Led6 = 1 'GELB
Led7 = 1 'GELB
Led8 = 1 'GRÜN mitte
Led9 = 1 'GELB
Led10 = 1 'GELB
Led11 = 1 'GELB
Led12 = 1 'ROT
Led13 = 1 'ROT
Led14 = 1 'ROT
Led15 = 1 'GRÜN links
Else
Print "Alle LED AUS"
Led1 = 0 'GRÜN rechts
Led2 = 0 'ROT
Led3 = 0 'ROT
Led4 = 0 'ROT
Led5 = 0 'GELB
Led6 = 0 'GELB
Led7 = 0 'GELB
Led8 = 0 'GRÜN mitte
Led9 = 0 'GELB
Led10 = 0 'GELB
Led11 = 0 'GELB
Led12 = 0 'ROT
Led13 = 0 'ROT
Led14 = 0 'ROT
Led15 = 0 'GRÜN links
End If
End Sub

Sub Led_alle_gruen(byval Status As Integer) ' Alle grünen LED betreffend
'Call Tasterabfrage ' wurde eine Taste gedrückt?
Call Led_alle(0)
If Status = 1 Then 'Alle LED anschalten
Print "Alle LED gruen AN"
Led1 = 1 'GRÜN rechts
Led8 = 1 'GRÜN mitte
Led15 = 1 'GRÜN links
Else
Print "Alle LED gruen AUS"
Led1 = 0 'GRÜN rechts
Led8 = 0 'GRÜN mitte
Led15 = 0 'GRÜN links
End If
End Sub

Sub Led_alle_rot(byval Status As Integer)
'Call Tasterabfrage ' wurde eine Taste gedrückt?
Call Led_alle(0)
If Status = 1 Then 'Alle LED anschalten
Print "Alle LED rot AUS"
Led2 = 1 'ROT
Led3 = 1 'ROT
Led4 = 1 'ROT
Led12 = 1 'ROT
Led13 = 1 'ROT
Led14 = 1 'ROT
Else
Print "Alle LED rot AUS"
Led2 = 0 'ROT
Led3 = 0 'ROT
Led4 = 0 'ROT
Led12 = 0 'ROT
Led13 = 0 'ROT
Led14 = 0 'ROT
End If
End Sub

Sub Led_alle_gelb(byval Status As Integer)
'Call Tasterabfrage ' wurde eine Taste gedrückt?
Call Led_alle(0)
If Status = 1 Then 'Alle LED anschalten
Print "Alle LED gelb AN"
Led5 = 1 'GELB
Led6 = 1 'GELB
Led7 = 1 'GELB
Led9 = 1 'GELB
Led10 = 1 'GELB
Led11 = 1 'GELB
Else
Print "Alle LED gelb AUS"
Led5 = 0 'GELB
Led6 = 0 'GELB
Led7 = 0 'GELB
Led9 = 0 'GELB
Led10 = 0 'GELB
Led11 = 0 'GELB
End If
End Sub

Sub Machpause
Call Tasterabfrage ' wurde eine Taste gedrückt?
Waitms Pause
End Sub

Sub Tasterabfrage
'schneller, langsamer

If Pind.2 = 0 Then
If Proglicht < Progmax Then
Proglicht = Proglicht + 1
Else
Proglicht = 1
End If
Print "Programm: " ; Proglicht
End If

'Programm wechsel
If Pind.3 = 0 Then
Pause = Pause - 5
Print "Schneller: " ; Pause
End If

'Langsamer
If Pind.4 = 0 Then
Pause = Pause + 20
Print "Langsamer: " ; Pause
End If

If Pause <= 0 Then Pause = 10
End Sub

Schaltung:
25931
(Die LED14 und LED15 fehlen oben, wegen Screenshot)

Platinen Layout:
25932

Platine in Target!3000 als 3D vorab:
25933

Platine bestückt und durch Isolationsfräsen erzeugt:
25934
25935

stappe
01.03.2017, 19:14
Hallo,
ist es möglich für privat die Target!3000 Datei zu bekommen?

stekolos
01.03.2017, 21:08
Im Anhang ist die gewünschte Target!3001 Datei.
Die könnt Ihr gerne für privaten Gebrauch verwenden.

Über eure Rückantwort und Fotos würden wir uns freuen.

Grüße
SteKoLos

stappe
02.03.2017, 09:56
Hallo SteKoLos,
vielen herzlichen Dank für die schnelle problemlose Reaktion. Ich will mit meinen Enkel (10 Jahre) mit ATMEL - basteln anfangen.
Grüße
stappe

stappe
24.04.2017, 18:30
Hallo SteKoLos,
wir haben die Platine so abgeändert dass die LED´s im Kreis angeordnet sind. Da ich Target noch nicht so vertraut ist die Platine nocht nicht 100%. Ich will sie nochmals überarbeiten. Ich lade sie mal hoch. Bilder und entgültige Version folgen.32564
Wie kann ich Dateien anhängen.
Grüße
stappe

stekolos
25.04.2017, 09:19
Hallo Stappe,

das sieht doch gar nicht so schlecht aus.
Dateiupload geht, wenn du rechts unten auf den Button "Erweitert". Ich mach den Dateianhang als ZIP klicken dann sollte es klappen.
Grüße SteKoLos

Carposept
28.04.2017, 14:51
Hallo SteKoLos,
vielen herzlichen Dank für die schnelle problemlose Reaktion. Ich will mit meinen Enkel (10 Jahre) mit ATMEL - basteln anfangen.
Grüße
stappe

Warum nicht ein PIC?

stekolos
28.04.2017, 20:59
warum nicht ;)