mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom Motor mit Taster steuern


Autor: (unknown) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich möchte mir mit einem ATmega32 eine Steuerung für ein Fahrgeschäft 
bauen. den Avr programmiere ich mit Bascom. Jetzt möchte ich, dass ich 
mit einem Taster den Motor so lange laufen lassen kann, wie ich den 
Taster drücke oder bis der Motor einen Endschalter schaltet.
Ich habe scho versucht mit einer while-wend Schleife, dass hat aber 
nicht richtig funkioniert.

Hat jemand einen Denkanstoss oder ein Programmschnipsel für mich??

Vielen Dank!

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Taster, Motor, Bascom... - Habe ich hier mal gesehen:
Beitrag "Re: Eine kleine Frage zur Programmierung"

MfG

Autor: (unknown) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für den Link. Aber da ich noch blutiger Anfänger in diesen 
Thema bin, hilft mir das nicht viel weiter...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Chris B. schrieb:

> Taster drücke oder bis der Motor einen Endschalter schaltet.
> Ich habe scho versucht mit einer while-wend Schleife, dass hat aber
> nicht richtig funkioniert.
>
> Hat jemand einen Denkanstoss oder ein Programmschnipsel für mich??

Poste deinen Code!

Im Prinzip ist dein Gedankengang ja gar nicht schlecht.
Der Motor soll laufen, solange nicht gilt ( Taster ist losgelassen oder 
Endschalter ist erreicht )

Wahrscheinlich hast du dich irgendwo bei den UND ODER NICHT vertan.
Das passiert schon mal, weil wir Menschen im täglich Leben bei 
derartigen Dingen sehr schlampig agieren.

In diesem Zusammenhang ist auch der De'Morgan wichtig


    ( NICHT A ) UND ( NICHT B )  <==>  NICHT( A ODER B )

Autor: (unknown) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oke underdessen habe ich es selber geschafft.... Habe den Fehler selber 
gefunden. Habe vergessen den Endschalter ausserhalb der While-Wend 
Schleife vergessen abzufragen


Hier der funktionierende Code
Aufsteigen:

Do

While Taster_auf = 0                            'Taster abfrage
Motor_start = 1
If Stop_auf = 0 Then                            'Endschalter abfrage
Motor_start = 0
return
End If
Wend

Motor_start = 0

If Stop_auf = 0 Then                            'Endschalter abfrage
Motor_start = 0
return
End If
If Stop_auf = 1 Then Exit Do
Loop

Return

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zumindest solltest du den Code einrücken, damit man besser sieht, wie 
die einzelnen Verschachtelungsebenen sind:
Aufsteigen:

Do

  While Taster_auf = 0                            'Taster abfrage
    Motor_start = 1
    If Stop_auf = 0 Then                            'Endschalter abfrage
      Motor_start = 0
      return
    End If
  Wend

  Motor_start = 0

  If Stop_auf = 0 Then                            'Endschalter abfrage
    Motor_start = 0
    return
  End If
  If Stop_auf = 1 Then Exit Do
Loop

Return

den letzten Teil deiner Funktion solltest du dir noch einmal genauer 
ansehen. Und auch die do - Loop ist ein wenig sinnlos, wenn sowieso auf 
jeden Fall aus der Loop ausgestiegen wird.

  M

was spricht gegen
Aufsteigen:

  if Stop_auf = 0 then                ' Wenn das Rollo schon oben ist
    return                            ' kann der Benutzer drücken soviel er will
  endif                               ' wir kümmern uns nicht darum

  if Taster_auf = 0 then              ' will der Benutzer nach oben?
    Motor_start = 1                   ' dann erfüllen wir ihm den Wunsch
  else
    Motor_start = 0                   ' Nein? dann eben nicht
  endif

return

Die Funktion ist so ausgelegt, (wie deine auch) dass sie von einer 
anderen Stelle regelmässig aufgerufen werden muss.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.