www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ein/Ausschaltung in C??


Autor: Junglelist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich habe mal eine Frage. Undzwar möchte ich einen Servomotor über eine 
Tastertur schalten. Istzustand : wenn ich Taste a der Tastertur drücke 
läuft der Servo rechts herum, bei drücken der Taste s links herum, und 
das dann dementsprechend dauerhaft. Ich würde das ganze gerne so lösen 
das der Servo nur solange läuft wie ich die Taste a bzw. s gedrückt 
halte. Das heisst wenn keine der Tasten gedrückt ist soll sich der Servo 
auch nicht drehen. Was sollte da im Quellcode vorhanden sein?? bzw wie 
muss der Quellcode dafür aussehen. Mein Quellcode ist in C geschrieben. 
Leider bin ich da noch nicht so erfahren. Ich hoffe jemand kann mir da 
weiterhelfen. Vielen Dank jetzt schonmal. Ich hoffe ihr Versteht mein 
vorhaben.

Viele Grüße

Autor: Submarin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um zu sehen was Du ändern könntest muss man erst mal sehen was Du 
gemacht hast. Also erst mal zeig uns deinen Code

Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Junglelist schrieb:
> Mein Quellcode ist in C geschrieben.

Dann zeig schonmal her...

Im Grunde ist die Geschichte schon recht einfach... Auf dem PC läuft 
deine Software welche die Tastatur auswertet und via UART / RS232 ein 
Befehl sendet dieser wird entweder von einem µC ausgerwertet - die 
leichtere Alternative - oder machst das über Bitbanging (geht auch, 
jedoch würde ich alleine schon wegen der Erweiterbarkeit davon 
abraten)... Der µC werdet das RS232 Paket aus (z.b. ne 1 für rechts und 
ne 0 für links) und gibst dann über einen Motortreiber ala TA7257P den 
Befehl den Motor links oder Rechtsrum zu drehen...

Was für einen Motor setzt du denn ein?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
  if( taste_a ){
     puls_rechts();
  }else if( taste_s ){
     puls_links();
  }else{
     puls_mitte();
  }


Peter

Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> if( taste_a ){
>      puls_rechts();
>   }else if( taste_s ){
>      puls_links();
>   }else{
>      puls_mitte();
>   }
>
>
> Peter

Hehe... 42 XD

Autor: Junglelist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hihi, erstmal danke für die schnelle Antwort. Un die erklärungen!!! 
Anbei ein kleiner Ausschnitt. Das steht in meinem Programm (Serielle 
Schnittstelle). Es ist wie gesagt das der scheiss Motor endlos 
weiterläuft.... nur mit taste 6 geht alles aus, dass funst so auch. Ist 
aber nicht das was ich will(bisl umständlich). Extra da noch eine dritte 
Taste zu belegen....



while(1)
  {
    if (RI == 1)
    {

    Zeichen = getchar();
    Zeichen = SBUF;
    RI = 0;

if (Zeichen == a) Set_Kanal(0, 15);  //Taste a Motor rechtslauf
if (Zeichen == s) Set_Kanal(0, -15); //Taste s Motor linklauf
if (Zeichen == 6) Set_Kanal(0, 0);   //Taste 6 Motor aus

Ausserdem wollte ich noch 1  Lampe schalten das so aussieht:
if (Zeichen == q) P2_0 = 1;       // Lampe  ein
if (Zeichen == w) P2_0 = 0;    // Lampe  aus

geht die ein aus schaltung auch über nur eine taste zb taste Q?? Sollte 
ich da vl auch die Hex Werte der Tasten eintragen??Weil irgendwie is das 
alles komisch, weil wenn ich zum teil noch andere Tasten der Tastertur 
drücke regt sich da zum teil auch noch etwas....

Autor: nicht_eingeloggt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, wenn es mit der Taste 6 funktioniert, dann setze mal deine ganzen 
Buchstaben in hochkommas:

Junglelist schrieb:
> if (Zeichen == 'a') Set_Kanal(0, 15);  //Taste a Motor rechtslauf
> if (Zeichen == 's') Set_Kanal(0, -15); //Taste s Motor linklauf
> if (Zeichen == 6) Set_Kanal(0, 0);   //Taste 6 Motor aus

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da nun die Tastatur an einem PC zu hängen scheint, brauchst Du erstmal 
ein PC-Programm, welches auch das Keyboard release event sendet.

Dein MC kann ja nicht hellsehen, wann Du losläßt.


Peter

Autor: Junglelist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Schrieb:
Da nun die Tastatur an einem PC zu hängen scheint, brauchst Du erstmal
ein PC-Programm, welches auch das Keyboard release event sendet.


Das Versteh ich jetzt net so ganz.. wie muss das aussehen??

Autor: OnkelJim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast irgend einen Aufbau, den dir jemand vorgesetzt hat. Denn nach 
deinen Äußerungen zu schließen, würdest du das nicht alleine 
hinbekommen.

Das klingt doch wieder verdammt nach Hausaufgaben und "ich hab keinen 
Bock und keine Ahnung, macht ihr mal"

Autor: Junglelist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ OnkelJim:

wenn du meinst. Ich dachte Foren sind dazu da um anderen zu helfen?? das 
jetzt doch wieder son unnötiger Spruch kommt hät ich mir ja denken 
können... lasses sowas doch einfach stecken...

Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Tastatur sendet zwei Events bei einem Tastendruck:

KeyPress   - Der Zustand wenn du deine Taste reindrückst.
KeyRelease - Der Zustand wenn du deine Taste losläßt.

Wie sieht denn deine externe Beschaltung aus? Mit was steuerst du den 
Motor an?!

Autor: Junglelist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah okay stimmt ja !! Danke Rene. Der Servo bzw. der Regler wird mit 
einem Puls angesteuert. (PWM)

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.