Ein/Ausschaltung in C??

Gast #2082625
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
#2082632
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?
Gast #2082771
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....
Gast #2082779
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
Gast #2082833
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??
Gast #2082860
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"
Gast #2082871
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren