Forum: Mikrocontroller und Digitale Elektronik SOS-Schlüsselanhänger blinkt nur bei Tastendruck


von Lukas S. (mogfox)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich bin gerade dabei einen Schlüsselanhänger zu bauen, der SOS blinken 
soll. Gesteuert wird er durch einen Attiny13. Ziel ist es, dass die LED 
"SOS" blinkt sobalt der Knopf einmal kurz gedrückt wird. Die LED blinkt 
aber leider nur wenn  der Knopf gedrückt bleibt, sonst geht sie sofort 
aus.Lötstellen sind alle kontrolliert!!!

Hier ein paar infos:
Ich programmiere den Attiny13 mit Bascom AVR
Mein Programmer ist ein: "mySmartUSB light"
Zum flashen verwende ich: "myAVR Programm Tool V 1.39"
Ich bin erst 13 also bitte verständnis für kleine Fehler haben :-)

Hier der code:
1
$regfile = "attiny13.dat"
2
$crystal = 1000000
3
$hwstack = 10
4
$swstack = 20
5
$framesize = 30
6
7
Config Portb.2 = Output
8
Config Pinb.1 = Input
9
10
Portb.2 = 0
11
12
   Do
13
      If Pinb.1 = 0 Then
14
         Portb.2 = 1                                        'An kurz
15
         Waitms 200
16
         Portb.2 = 0
17
         Waitms 200                                         'Aus  kurz
18
         Portb.2 = 1                                        'An   kurz
19
         Waitms 200
20
         Portb.2 = 0
21
         Waitms 200                                         'Aus  kurz
22
         Portb.2 = 1                                        'An  kurz
23
         Waitms 200
24
         Portb.2 = 0
25
         Waitms 200                                         'Aus  kurz
26
         Portb.2 = 1                                        'An lang
27
         Waitms 500
28
         Portb.2 = 0
29
         Waitms 500                                         'Aus lang
30
         Portb.2 = 1                                        'An  land
31
         Waitms 500
32
         Portb.2 = 0
33
         Waitms 500                                         'Aus lang
34
         Portb.2 = 1                                        'An  lang
35
         Waitms 500
36
         Portb.2 = 0
37
         Waitms 500                                         'Aus lang
38
         Portb.2 = 1                                        'An kurz
39
         Waitms 200
40
         Portb.2 = 0
41
         Waitms 200                                         'Aus  kurz
42
         Portb.2 = 1                                        'An   kurz
43
         Waitms 200
44
         Portb.2 = 0
45
         Waitms 200                                         'Aus  kurz
46
         Portb.2 = 1                                        'An  kurz
47
         Waitms 200
48
         Portb.2 = 0                                        'Aus kurz
49
         Waitms 1500
50
      Else
51
         Portb.2 = 0
52
53
      End If
54
   Loop
55
End

PS: ja ich weiß der sockel ist zu groß

von Bastian W. (jackfrost)


Lesenswert?

Naja dein Programm ist ja so geschrieben das es nur blinkt wenn der Pin 
low ist.

Du musst damit ein Flag toggeln und darüber steuerst du ob es blinkt 
oder nicht. Zudem musst du die Taste entprellen.

Gruß JackFrost

von c.m. (Gast)


Lesenswert?

1
pseudocode…
2
3
boolean blinke = false;
4
5
loop
6
 If Pinb.1 = 0
7
 then
8
  blinke != blinke;
9
 end fi
10
11
 if blinke
12
 then
13
  ...
14
 end if
15
end loop;

das problem ist, das Pinb.1 (eingabepin) nicht entprellt ist, und das 
der tastendruck zum ausschalten durch deine delay-verstopfte loop erst 
erkannt wird, wenn die blinksequenz beendet wurde, und der abfragecode 
wieder ausgeführt wird.

das wäre der grund (eigentlich: die gründe) für dich, dir mal 
interrupts anzuschauen :)

von Mario M. (thelonging)


Lesenswert?

Das Programm entspricht zwar nicht der "reinen Lehre", aber es würde 
funktionieren. Doch wo hast Du denn den Schaltplan her? ATTiny mit 9V 
betreiben und einen 1kOhm Widerstand in der Masseleitung? Das kann nicht 
funktionieren! Also Widerstand durch Brücke ersetzen und einen 
Spannungsregler vorschalten oder besser gleich mit einer 3V 
Lithium-Knopfzelle betreiben.

von Marc (gierig) Benutzerseite


Lesenswert?

Dein Schaltplan ist etwas seltsam.

Wirklich 9 Volt ? Da "Operating Voltage: 1.8 – 5.5V" beim tiny13
Was sollen Widerstand und der 100µF Elko bezwecken ?

Schätze fast wenn das so beschaltet ist hast du Glück das
die der tiny noch nicht abgeraucht ist.

von Peter D. (peda)


Lesenswert?

Der Fachmann staunt nur, daß der MC überhaupt was macht und daß er 
überhaupt noch lebt.

von Retter (Gast)


Lesenswert?

Na, unter den Umständen wäre doch klar warum der uC SOS blinkt, oder?

von Lukas S. (mogfox)


Lesenswert?

Danke,
für die schnellen Antworten!!!

Jetzt funktioniert es super. Leider habe ich gerade keinene 
Spannungsregler Zuhause aber werde mir einen kaufen.Jetzt kann ich es 
halt nur mit meinem Netztgerät betreiben. :-)

von Paul B. (paul_baumann)


Lesenswert?

Die hohe Betriebsspannunng hat den Kontroller ziemlich in die Breite 
gezogen, wie man sehen kann. Wenn das die einzige Auswirkung ist, geht's 
ja noch.
:)
https://www.mikrocontroller.net/attachment/preview/304696.jpg

Lukas S. schrieb:
> Ich bin erst 13 also bitte verständnis für kleine Fehler haben :-)

Achso, daher auch ein Attiny13. Ich glaube, ich werde mir bal ein paar 
Attiny85 beschaffen müssen...
:)
MfG Paul

von Horst (Gast)


Lesenswert?

Paul, nimm lieber Mega128, passend zum Alter Deiner Witze.

von AxelR. (Gast)


Lesenswert?

Die Witze sind sind gut! Daran gibt es nichts zu meckern. Die meisten 
könnten sogar von mir sein :)

von Peter D. (peda)


Lesenswert?

AxelR. schrieb:
> Die Witze sind sind gut!

Ja, das sind ne Menge:
- 9V an einen 5V-MC
- IO-Pin negativer als GND
- LED ohne Vorwiderstand

von SOSinator (Gast)


Lesenswert?

Sorry, aber darf ich fragen was der bringen soll?
Oder handelt es sich nur um ein Spaß Projekt?

von Lukas S. (mogfox)


Lesenswert?

Es handelt sich nur um ein spaß-Projekt und  ein lernprojekt weil ich 
jetzt erst anfange Mikrocontroller zu Programmeieren! Übrigens ist der 
Schaltplan nicht von mir sondern von einem Freund um das Mal zu klären 
:-)

Mfg Lukas

von Peter D. (peda)


Lesenswert?

Lukas S. schrieb:
> Übrigens ist der
> Schaltplan nicht von mir

Er ist trotzdem tödlich für den MC, wenn der 9V-Block frisch ist.

von Lukas S. (mogfox)


Lesenswert?

Im nachhinein weiß mann halt alles besser, aber zum glück war der 9V 
Akku nicht frisch aufgeladen. Und sonst hätte ich noch genug µC zuhause. 
;-)

von PeterZ (Gast)


Lesenswert?

Peter D. schrieb:
> - 9V an einen 5V-MC

Er hat doch einen 1k Richtung Masse. Der 13er ist nicht direkt an 9V ;)

von Dieter F. (Gast)


Lesenswert?

PeterZ schrieb:
> Er hat doch einen 1k Richtung Masse.

Als Geruchsfilter :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.