Servus Leute,
Hardware: Arduino Uno, Atmega328P
Sprache: C
ich bin neu auf den Gebiet der Microkontrollerprgrammierung und bin an
die erste Hürde gestoßen.
zum Problem:
Ich möchte mithilfe eines Tasters eine LED einschalten und bei erneuten
drücken wieder auschalten.
Ich habe bereits im Forum einige ähnliche Probleme gefunden, konnte es
aber trotzdem nicht lösen.
Mein Taster hängt an Vcc mit 5 Volt. Beim Drücken des Tasters, wird der
Strom weiter an PIND1 geschaltet. Am Ausgang des Tasters liegt ein
Pulldown Wiederstand mit 10K Ohm an Masse an.
Jetzt wo PIND1 Strom bekommt, wird PIND2 geschaltet und die LED mit
Strom versorgt.
Wenn ich jetzt wieder den Taster drücke sollte die Spannung an der LED
abfallen und die LED zu leuchten aufhören. Dies passiert aber nicht
gewollt sondern eher zufällig nach dem 3-4 mal drücken des Tasters.
1 | #define F_CRPU 16000000UL
|
2 |
|
3 | #include <avr/io.h>
|
4 | #include <util/delay.h>
|
5 | #include "../../home/ben/Programmierung/stifte.h"
|
6 |
|
7 | int main(void)
|
8 | {
|
9 |
|
10 | DDRD = (0 << DDD1) | (1 << DDD2); // Stift 1 als Eingang, Stift 2 als Ausgang
|
11 |
|
12 | PORTD &= ~((1 << SD1) | (1 << SD2)); //Beide Stifte auf 0 schalten
|
13 |
|
14 | uint8_t taster_gedrueckt = 1;
|
15 |
|
16 | while(true)
|
17 | {
|
18 |
|
19 | if (PIND & (1 << SD1)) //Wenn an Stift1 eine Spannung anliegt, Stift 2 schalten
|
20 | {
|
21 | if (taster_gedrueckt == 1)
|
22 | {
|
23 | PORTD |= (1 << SD2);
|
24 | taster_gedrueckt--;
|
25 | }
|
26 | else
|
27 | {
|
28 | PORTD &= ~(1 << SD2);
|
29 | taster_gedrueckt ++;
|
30 | }
|
31 | }
|
32 |
|
33 | }
|
34 | return 0;
|
35 | }
|
Ich benutze einen Pulldown Wiederstand, weil der sich für mich logisch
erschließt und ich den Pullup Wiederstand auch nach vielen Websiten und
googlen nicht verstehe.
Ich habe etwas von Entprellen gelesen, ist das die Lösung meines
Problems.
Wenn ja, kann man das auch mit einen Pulldown Wiederstand machen, denn
ich habe es immer nur im Zusammenhang mit Pullup gefunden.
Ich hoffe ich habe jetzt nich zu viel geschrieben und hoffe auf
Unterstüzung.
Mfg ;-)