Ich verwende Linux und habe eine .c-Datei geschrieben. Ich möchte einige Funktionen des Typs void verwenden, um die Bewegung eines Motors durchzuführen. Ich strebe an, es für 2 Sekunden vorwärts zu bewegen, dann nach rechts für weitere 2 usw. zu drehen. Wie kann ich es erreichen? Die Funktionen MOVE_FORW, MOVE_RIGHT usw. sind ungültig.Ausführen einer Void-Funktion für eine bestimmte Zeit
Die Funktion hat den Rückgabetyp void. Mein Problem ist, wie ich das System dazu bringen soll, die Aufgabe, die ich möchte, für eine Echtzeit von 2 Sekunden auszuführen. Welche Art von Verzögerung sollte ich verwenden?
Hier ist der Code: Ich möchte zwei Räder über einen Motor steuern. Die Namen sind symbolisch:
void MOVE_FORW(){
LEH();
LCH();
LDL();
REH();
RCH();
RDL();
system("sleep 3");
}
void MOVE_BCKW(){
LEH();
LCL();
LDH();
REH();
RCL();
RDH();
system("sleep 3");
}
void MOVE_RIGHT(){
LEH();
LCH();
LDL();
REH();
RCL();
RDH();
system("sleep 3");
}
void MOVE_LEFT(){
LEH();
LCL();
LDH();
REH();
RCH();
RDL();
system("sleep 3");
}
Vielen Dank für Ihre Versuch und Gedanken einen Weg:
/*
DEFINITIONS
FLEN FILE LEFT ENABLE GPIO177
FREN FILE RIGHT ENABLE GPIO168
FLC FILE LEFT C GPIO166
FRC FILE RIGHT C GPIO169
FLD FILE LEFT D GPIO167
FRD FILE RIGHT D GPIO170
LEH LEFT ENABLE HIGH
LEL LEFT ENABLE LOW
LCH LEFT C HIGH
LCL LEFT C LOW
LDH LEFT D HIGH
LDL LEFT D LOW
REH RIGHT ENABLE HIGH
REL RIGHT ENABLE LOW
RCH RIGHT C HIGH
RCL RIGHT C LOW
RDH RIGHT D HIGH
RDL RIGHT D LOW
*/
FILE *FLEN,*FREN,*FLC,*FRC,*FLD,*FRD;
FILE *DIR_FLEN,*DIR_FREN,*DIR_FLC,*DIR_FRC,*DIR_FLD,*DIR_FRD;
//LEFT WHEEL
#define LEH() fprintf(FLEN,"1")
#define LEL() fprintf(FLEN,"0")
#define LCH() fprintf(FLC,"1")
#define LCL() fprintf(FLC,"0")
#define LDH() fprintf(FLD,"1")
#define LDL() fprintf(FLD,"0")
//RIGHT WHEEL
#define REH() fprintf(FREN,"1")
#define REL() fprintf(FREN,"0")
#define RCH() fprintf(FRC,"1")
#define RCL() fprintf(FRC,"0")
#define RDH() fprintf(FRD,"1")
#define RDL() fprintf(FRD,"0")
void MOVE_FORW(){
LEH();
LCH();
LDL();
REH();
RCH();
RDL();
}
void MOVE_BCKW(){
LEH();
LCL();
LDH();
REH();
RCL();
RDH();
}
void MOVE_RIGHT(){
LEH();
LCH();
LDL();
REH();
RCL();
RDH();
}
void MOVE_LEFT(){
LEH();
LCL();
LDH();
REH();
RCH();
RDL();
}
int main(void){
//HANDLING FILES - opening files fow writing (overwriting)
//EXPORTING AS OUTPUT - DEFINING DIRECTION (out)
system("echo 177 > /sys/class/gpio/export");
printf("FINE\n");
DIR_FLEN=fopen("/sys/class/gpio/gpio177/direction","w+"); //GPIO 177
fprintf(DIR_FLEN,"out");
FLEN=fopen("/sys/class/gpio/gpio177/value","w+"); //GPIO 177
system("echo 168 > /sys/class/gpio/export");
DIR_FREN=fopen("/sys/class/gpio/gpio168/direction","w+"); //GPIO 168
fprintf(DIR_FREN,"out");
FREN=fopen("/sys/class/gpio/gpio168/value","w+"); //GPIO 168
system("echo 166 > /sys/class/gpio/export");
DIR_FLC=fopen("/sys/class/gpio/gpio166/direction","w+");
fprintf(DIR_FLC,"out");
FLC=fopen("/sys/class/gpio/gpio166/value","w+");
system("echo 169 > /sys/class/gpio/export");
DIR_FRC=fopen("/sys/class/gpio/gpio169/direction","w+");
fprintf(DIR_FRC,"out");
FRC=fopen("/sys/class/gpio/gpio169/value","w+");
system("echo 167 > /sys/class/gpio/export");
DIR_FLD=fopen("/sys/class/gpio/gpio167/direction","w+");
fprintf(DIR_FLD,"out");
FLD=fopen("/sys/class/gpio/gpio167/value","w+");
system("echo 170> /sys/class/gpio/export");
DIR_FRD=fopen("/sys/class/gpio/gpio170/direction","w+");
fprintf(DIR_FRD,"out");
FRD=fopen("/sys/class/gpio/gpio170/value","w+");
MOVE_FORW();
_Bitte klären Sie Ihr spezifisches Problem oder fügen Sie weitere Details hinzu, um genau das hervorzuheben, was Sie benötigen. Wie es derzeit geschrieben wird, ist es schwer zu sagen, was genau Sie fragen. Weitere Informationen zur Klärung dieser Frage finden Sie auf der Seite "Fragen stellen". –
Es ist nicht klar, was Sie fragen. Mit "Funktionen vom Typ void" meinen Sie, dass die Funktionen den Rückgabetyp "void" oder die Parameter "void" haben. In jedem Fall, warum ist die "Leere" ein Problem? Ruf es einfach an. Bitte klären Sie Ihre Frage. Am besten, wenn Sie einen konkreten Code zeigen, um es klarer zu machen. – kaylum
Es gibt eine massive Lücke in Ihrer Frage - der Raum, wo der Code sein sollte :( –