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


von Junglelist (Gast)


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

von Submarin (Gast)


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

von Rene K. (draconix)


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?

von Peter D. (peda)


Lesenswert?

1
  if( taste_a ){
2
     puls_rechts();
3
  }else if( taste_s ){
4
     puls_links();
5
  }else{
6
     puls_mitte();
7
  }


Peter

von Rene K. (draconix)


Lesenswert?

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

Hehe... 42 XD

von Junglelist (Gast)


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....

von nicht_eingeloggt (Gast)


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

von Peter D. (peda)


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

von Junglelist (Gast)


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??

von OnkelJim (Gast)


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"

von Junglelist (Gast)


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...

von Rene K. (draconix)


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?!

von Junglelist (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.