loetstelle.net
Lötstelle Userforum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Menü für LCD Realisieren
Gehe zu Seite 1, 2, 3, 4, 5, 6  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> BASCOM
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: So 17.Okt 2010 16:13:05    Titel: Menü für LCD Realisieren Bauteile finden Antworten mit Zitat

Hallo,

ich will mein neues µC-Projekt mit einem Menü ausstatten.

Es geht um folgendes:
Aufgrund des letzten Hochwassers ist der Grundwasserspiegel bei uns so gestiegen, dass wir im Keller Wasser hatten. Wir haben eine eine kleine Grube (Tiefe: 30cm), wo wir dann eine Tauchpumpe reinstellen können. Da diese Grube abgedeckt ist, waren wir völlig überrascht, als dann das Wasser im Keller stand.

Also will ich eine Steuerung bauen, die überwacht, ob Wasser in der Grube ist. Außerdem soll ein "Sensor" in ca. 5cm über dem Kellerboden installiert werden wodurch die Pumpe eingeschaltet wird.

Ich habe in letzter Zeit schon mal ein LCD 16*2 an einen Atmega8 angeschlossen und zum laufen gebracht.

Nun will ich als erstes da Menü realisieren was wie folgt aussehen soll:
- Wasserstand (10cm; 20cm; 30cm; 35cm) [Anzeige]
- Batteriezustand (0-100%) [Anzeige]
- Pumpe (Ein/Aus) [Damit wird die Pumpe Manuel geschaltet]
- Alarm (Ein/Aus) [Bei erreichen der 10cm-Marke soll ein Alarm ausgelöst werden]
- Automatikbetrieb (Ein/Aus) [Der Automatikbetrieb soll die Pumpe bei erreichen von 35cm automatisch einschalten und bei erreichen von 10cm wieder ausschalten.

Was Menü soll mit 2 Tastern bedient werden (Taster 1: nächster Menü-Punkt; Taster 2: Auswahl/Änderung)

Ich hoffe Ihr könnte mir helfen.

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: So 17.Okt 2010 17:49:15    Titel: Bauteile finden Antworten mit Zitat

Naja, so ein großes Problem stellt das nicht dar.

Du speicherst die Nummer des aktuellen Menüpunktes (1-5) in einer Variablen. Mit einer einem Taster springst du in eine SUB, in der diese Variable erhöht und das Display dementsprechen neu geschrieben wird (SELECT CASE).
Mit dem zeiten Taster springst du in eine zweite SUB in der per SELECT CASE geprüft wird in welchem Menüpunkt du bist und die entsprechende Variable umgeschrieben.

MfG Sam

_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: So 17.Okt 2010 18:01:48    Titel: Bauteile finden Antworten mit Zitat

Kannst Du da mal bitte ein kurzes Programmbeispiel posten.

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: So 17.Okt 2010 22:02:13    Titel: Bauteile finden Antworten mit Zitat

Hier mal ein kleines prinzipielles Beispiel ohne LCD und viel Ordnung:

Code:
Dim Menuepunkt As Byte
Dim Wasserstand As Byte
Dim Batterie
Dim Pumpe As Bit Bit
Dim Alarm As Bit
Dim Automatik As Bit

Menuepunkt = 1
Wasserstand = 0
Pumpe = 0
Alarm = 0
Automatik = 0


On Taster1 Menuepunkt
On Taster2 Umstellen


Do
Loop

End


Menuepunkt:
   inc menuepunkt
   If Menupunkt > 5 Then Menuepunkt = 1
   Select Case Menuepunkt
      Case 1
         Cls
         Locate 1 , 1
         Lcd "Wasserstand: "
         Lcd Wasserstand

      Case 2
         ...
      Case 3
         ...
      Case 4
         ...
      Case 5
         ...
   End Select
Return


Umstellen:
   Select Case Menupunkt
      Case 3
         inc pumpe
      Case 4
         inc alarm
      Case 5
         inc automatik
   End Select
Return

_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: Mo 18.Okt 2010 18:30:31    Titel: Bauteile finden Antworten mit Zitat

Vielen Dank für deinen Beitrag. Nur so richtig anfangen kann ich damit nicht. Rolling Eyes Ich bekomme das Programm nicht zum laufen.

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: Mo 18.Okt 2010 19:29:04    Titel: Bauteile finden Antworten mit Zitat

Das war auch nur ein Beispiel das so natürlich nicht lauffähig ist.

Wenn du mir präzise Fragen stellst kann ich sie auch beantworten.

Die andere Möglichkeit wäre, dass du mir den Schaltplan gibst und ich dir das Programm schreibe. Dann hätte ich aber was gut bei dir.

MfG Sam

_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: Mo 18.Okt 2010 20:17:41    Titel: Bauteile finden Antworten mit Zitat

Hallo,

Zitat:
Die andere Möglichkeit wäre, dass du mir den Schaltplan gibst und ich dir das Programm schreibe.
Das ist sehr nett von Dir, aber ich will eigentlich versuchen es mal selber hin zu bekommen, sonst lerne ich wieder nichts dabei.

Ich versuche jetzt mal Dein Code zu analysieren und Fragen aufzugreifen:

Code:
Dim Menuepunkt As Byte
Dim Wasserstand As Byte
Dim Batterie
Dim Pumpe As Bit
Dim Alarm As Bit
Dim Automatik As Bit

Wird "Batterie" als "Word" deklariert? Theoretisch müsste aber "Byte" auch reichen oder, wenn ich 0 bis 100% Anzeigen lassen will?

Code:
Menuepunkt = 1
Wasserstand = 0
Pumpe = 0
Alarm = 0
Automatik = 0

Code:
On Taster1 Menuepunkt
On Taster2 Umstellen

Hiermit kann ich ehrlich gesagt nicht viel Anfangen.

Code:
Menuepunkt:
   inc menuepunkt
   If Menupunkt > 5 Then Menuepunkt = 1
   Select Case Menuepunkt
      Case 1
         Cls
         Locate 1 , 1
         Lcd "Wasserstand: "
         Lcd Wasserstand

      Case 2
         ...
      Case 3
         ...
      Case 4
         ...
      Case 5
         ...
   End Select
Return

Die Funktion des Blocks ist klar. Was macht der Befehl "Inc" und "select case"?

Code:
Umstellen:
   Select Case Menupunkt
      Case 3
         inc pumpe
      Case 4
         inc alarm
      Case 5
         inc automatik
   End Select
Return

Hier soll sicherlich der Status des Menüpunkts geändert werden, aber wie sicht das genau aus? So?
Code:
 Select Case Menuepunkt
      Case 3
         Inc Pumpe
         If Pumpe > 2 Then Pumpe = 1
      Case 4
         Inc Alarm
         If Alarm > 2 Then Alarm = 1
      Case 5
         Inc Automatik
         If Alarm > 2 Then Alarm = 1
   End Select


Ich will ja erstmal nur, dass das Menü auf dem LCD angezeigt wird und ich über die Taster den Status ändern kann.

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: Mo 18.Okt 2010 20:30:57    Titel: Bauteile finden Antworten mit Zitat

Zitat:
Hallo,

Zitat:
Die andere Möglichkeit wäre, dass du mir den Schaltplan gibst und ich dir das Programm schreibe.
Das ist sehr nett von Dir, aber ich will eigentlich versuchen es mal selber hin zu bekommen, sonst lerne ich wieder nichts dabei.


Gut, das ist mir sowieso recht.


Zitat:
Code:
Dim Menuepunkt As Byte
Dim Wasserstand As Byte
Dim Batterie
Dim Pumpe As Bit
Dim Alarm As Bit
Dim Automatik As Bit

Wird "Batterie" als "Word" deklariert? Theoretisch müsste aber "Byte" auch reichen oder, wenn ich 0 bis 100% Anzeigen lassen will?


Entschuldigung, da habe ich den Datentyp vergessen. Den kannst du wählen wie du willst. Wenn du % anzeigen willst, dann genügt natürlich "Byte".

Zitat:
Code:
On Taster1 Menuepunkt
On Taster2 Umstellen

Hiermit kann ich ehrlich gesagt nicht viel Anfangen.


Mit "Taster1" und "Taster2" wollte ich die externen Interrupts beschreiben. Ich kenne deinen Aufbau schließlich nicht.

Zitat:
Code:
Menuepunkt:
   inc menuepunkt
   If Menupunkt > 5 Then Menuepunkt = 1
   Select Case Menuepunkt
      Case 1
         Cls
         Locate 1 , 1
         Lcd "Wasserstand: "
         Lcd Wasserstand

      Case 2
         ...
      Case 3
         ...
      Case 4
         ...
      Case 5
         ...
   End Select
Return

Die Funktion des Blocks ist klar. Was macht der Befehl "Inc" und "select case"?


Der Befehl "INC" erhöht die nachfolgende Variable um 1.
Die SLECT-CASE-Funktion liest eine Variable aus (hier: Menuepunkt) und führt je nach Wert Code aus ("Case 1", wenn Menuepunkt = 1 ...).


Zitat:
Code:
Umstellen:
   Select Case Menupunkt
      Case 3
         inc pumpe
      Case 4
         inc alarm
      Case 5
         inc automatik
   End Select
Return

Hier soll sicherlich der Status des Menüpunkts geändert werden, aber wie sicht das genau aus?


Da die dort zu ändernden Variablen BIT-Variablen sind können sie nur den Zustand 0 oder 1 haben. Wenn sie 0 ist und man sie erhöht wird sie zu 1. Wenn man sie nochmals erhöht läuft sie über und wird wieder zu 0 (Wie bei einem Byte über 255).


Zitat:
So?
Code:
 Select Case Menuepunkt
      Case 3
         Inc Pumpe
         If Pumpe > 2 Then Pumpe = 1
      Case 4
         Inc Alarm
         If Alarm > 2 Then Alarm = 1
      Case 5
         Inc Automatik
         If Alarm > 2 Then Alarm = 1
   End Select


So kann man es natürlich auch schreiben, dann benötigst du aber BYTE-Variablen.


MfG Sam[/quote]

_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: Mi 20.Okt 2010 20:23:22    Titel: Bauteile finden Antworten mit Zitat

Hallo Sam,

ich habe nun mal probiert nur das Menü zu erstellen, ohne den Status ändern zu können. Der Code funktioniert nicht, ich komme aber auch nicht weiter wo der Fehler ist.

Code:
$regfile = "M8def.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100


Mcucr = &B00001010
Gicr = &B11000000
Sreg.7 = 1

Taster_1 Alias Pind.2       'grau
Config Taster_1 = Input
Portd.2 = 1

Taster_2 Alias Pind.3       'grau
Config Taster_2 = Input
Portd.3 = 1

Taster_3 Alias Pinb.4       'orange
Config Taster_3 = Input
Portd.4 = 1


Led_1 Alias Portc.4       'rot
Config Led_1 = Output

Led_2 Alias Portc.5       'gelb
Config Led_2 = Output

Led_3 Alias Portc.3       'grün
Config Led_3 = Output

Led_4 Alias Portc.2       'rot
Config Led_4 = Output

Led_5 Alias Portc.1       'gelb
Config Led_5 = Output

Led_6 Alias Portc.0       'grün
Config Led_6 = Output


Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0
Config Lcd = 16 * 2


Dim Menuepunkt As Byte
Dim Wasserstand As Byte
Dim Batterie As Byte
Dim Pumpe As Bit
Dim Alarm As Bit
Dim Automatik As Bit

On Int0 Menuepunkt


Menuepunkt = 1
Wasserstand = 0
Pumpe = 0
Alarm = 0
Automatik = 0



Menuepunkt:
   Inc Menuepunkt
   If Menuepunkt > 5 Then Menuepunkt = 1
   Select Case Menuepunkt
      Case 1:
         Cls
         Locate 1 , 1
         Lcd "Wasserstand: "

      Case 2:
        Cls
         Locate 1 , 1
         Lcd "Batterie: "

      Case 3:
         Cls
         Locate 1 , 1
         Lcd "Pumpe: "

      Case 4:
         Cls
         Locate 1 , 1
         Lcd "Alarm: "

      Case 5:
         Cls
         Locate 1 , 1
         Lcd "Automatik: "

   End Select
Return


End


Wo liegt das Problem?

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: Do 21.Okt 2010 13:28:37    Titel: Bauteile finden Antworten mit Zitat

Du hast die Hauptschleife vergessen. Da war das LCD wohl ziemlich beschäftigt.

Ich kenne die Hardware nicht. Hast du den Taster auch an INT0.

MfG Sam

_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: Do 21.Okt 2010 17:33:22    Titel: Bauteile finden Antworten mit Zitat

Hallo,

Zitat:
Du hast die Hauptschleife vergessen.
In welchem Teil des Programms soll den die Hauptschleife sein?

Zitat:
Da war das LCD wohl ziemlich beschäftigt.
Das LCD zeigt garnichts an, Bascom kann das Programm ja nicht ohne Fehler übersetzen. Folgender Fehler wird angezeigt: Error:200 Line:70 .DEF not found [Menuepunkt [adddr]]

Zitat:
Ich kenne die Hardware nicht. Hast du den Taster auch an INT0.
PortD.2 sollte doch der Int0-Eingang sein (Atmega8).

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
pcprofi



Anmeldungsdatum: 17.02.2008
Beiträge: 1459
Wohnort: Düren

BeitragVerfasst am: Do 21.Okt 2010 17:58:18    Titel: Bauteile finden Antworten mit Zitat

Ohne jetzt dein Programm gelesen zu haben - hast du denn die Interrupts auch aktiviert?

Code:
Enable Interrupts


Gruß Rainer

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: Do 21.Okt 2010 18:29:01    Titel: Bauteile finden Antworten mit Zitat

Ok, ja, die Interupts solltest du auch noch aktivieren.

Nenne mal die Sub-Routine anstatt "Menuepunkt" lieber "Sub1" (zum testen).

Die Hauptschleife muss vor alle Sub-Routinen:
Code:
Do
Loop


MfG Sam

_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: Do 21.Okt 2010 18:52:56    Titel: Bauteile finden Antworten mit Zitat

Funktioniert immer noch nicht. Bascom hat ein Problem in der Zeile
Code:
INC Menuepunkt
bzw. neu
Code:
INC Sub1


LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: Do 21.Okt 2010 19:00:48    Titel: Bauteile finden Antworten mit Zitat

Nein nein, jetzt hast du den Namen der Variablen verändert. Ich meinte die Sub-Routine, das Teil mit dem ":", das mit Return abgeschlossen wird.
_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Anzeige






Verfasst am: Heute 06:12:36    Titel: Bauteile finden

Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> BASCOM Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2, 3, 4, 5, 6  Weiter
Seite 1 von 6

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen


Powered by phpBB 2.x © 2001, 2002 phpBB Group

Sie sind Besucher Nr. 1201794
©opyright by Markus Vohburger 2005 All Rights reserved