Hallo, habe mal wieder eine Frage zu einem kleinen Anfängerprojekt.
Nachdem ich bei meinem letzte beitrag schon auf lösungen hingewiesen
worden bin , habe ich mal eine davon ausprobiert.Jedoch will sie nicht
so wirklich funktionieren. Also der letzte Beitrag ging darum
Tasterzustände am Lcd darzustellen, in meinem Fall wenn ein Taster
gedrückt wird soll auf dem lcd stehen "Taster 1 an" oder eben aus.
Im Anhang befindet sich der komplette code in c, sowie ein Schaltplan,
wie ich das Lcd und den taster angeschlossen habe.
Jetzt habe ich folgendes Problem, wenn ich das Lcd anschließe und den
Tmega 8 resete, zeigt er mir wie gewünscht "Alarm" in der 1. zeile an.
Jedoch steht in der 2. zeile immer entweder "Taster 0 ein" oder "Taster
0 aus" egal ob der taster gedrückt ist oder nich. Man kann soviel
drücken wie man will es passiert eben nichts.
Wenn ich jetzt jedoch den taster von PB1 trenne, wechselt die Anzeige
immer in "Taster 0 ein" und "Taster 0 aus" also springt immer hin und
her.
kann mir jm sagen, woran das liegt uind warum sich mit Taster die
Anzeige nicht ändert?
mfg
Versuch es mal mit einem anderen Taster. Den scheinst du falsch
angeschlossen zu haben.
Was wird ausgegeben wenn du PB1 mit 5V verbindest?
Was wird ausgegeben wenn du PB1 mit 0V verbindest?
jau stimmt der tat wirklich irgendwie nicht ^^ danke funzt jetzt.
wie kann ich denn den Zustand des eingages speciher, dass der auch wenn
ich drücke und dann loslasse auf "Taster 1 ein " stehen bleibt und nicht
wieder zurückspringt auf aus???
ach ja und noch was wenn ich den atmega resette zeigt der mir bei den
ersten paar malen reseten immer so komische zeichen auf dem ganzen lcd
an???
wovon kommt das denn oder muss ich einen anderen widerstand zwischen
reset und 5v legen???
Stefan Feismann wrote:
> jau stimmt der tat wirklich irgendwie nicht ^^ danke funzt jetzt.> wie kann ich denn den Zustand des eingages speciher, dass der auch wenn> ich drücke und dann loslasse auf "Taster 1 ein " stehen bleibt und nicht> wieder zurückspringt auf aus???
Indem du dir in einer Variablen einen Zustand merkst?
(Du solltest zunächst mal auf einem PC die Grundlagen der Programmierung
erlernen. Auf einem PC geht das wesentlich einfacher, da du dort sehr
viel bessere Möglichkeiten hast, deinem Programm bei der Arbeit
zuzusehen. Das Stichwort dabei lautet Debugger, bzw. Testausgaben über
printf
Auch solltest du den Ankauf eines C-Grundlagenbuches ernsthaft in
Erwägung ziehen. Erstens kommst du ohne vernünftige Literatur nicht
weit, zweitens wirst du vernünftige Unterlagen sowieso brauchen und
drittens ist ein Forum wie dieses hier ein denkbar schlechter Platz um
die absoluten Grundlagen zu erlernen.
Und nochwas: Du solltest dir von Anfang an angewöhnen, deinen Code auch
optisch schön zu gestalten. Das sieht nicht nur nett aus, sondern ist
auch ungemein hilfreich bei der Fehlersuche, wenn man nicht erst aus
einer Buchstabenwüste die relevanten Informationen herausklauben muss.
Nichts gegen Leerzeilen, aber wenn 5 Codezeilen über eine ganze
Bildschirmseite mehr oder weniger wahllos verstreut sind, dann ist das
nicht sehr hilfreich den Code zu überblicken. Auch ein konsistentes
Einrückschema kann den Unterschied zwischen "Hilfe ich blick nicht mehr
durch" und "Ist doch alles kein Problem" machen.
1
#include<avr/io.h>
2
#include"lcd.h"
3
4
intmain(void)
5
{
6
unsignedcharAlarmEin;
7
8
lcd_init();
9
lcd_clear();
10
11
lcd_print(0,2,"Alarm");
12
13
AlarmEin=0;
14
15
while(1)
16
{
17
if(PINB&(1<<PB1))// Taster an PB1 schaltet ein
18
AlarmEin=1;
19
20
if(PINB&(1<<PB2))// Taster an PB2 schaltet wieder aus
Stefan Feismann wrote:
> ach ja und noch was wenn ich den atmega resette zeigt der mir bei den> ersten paar malen reseten immer so komische zeichen auf dem ganzen lcd> an???
Wahrscheinlich ist das Timing mit dem das LCD angesteuert wird ein
bischen knapp bemessen.
ja ich weiß es wohl ich habe auch schon ein grundbuch zu hause und bin
fleißig am lesen nur is das da einw enig schwer zu vesretehen. kannst du
mir eine gute lektüre empfehlen????
ach ja habs noch hinbekommen mit dem Taster ^^
und nochmals danke
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.