私はRaspberry Piでプログラムを作成しようとしています。このプログラムはC言語で書かれています。このプロジェクトでは、2つのLEDがあります。第1は「EV1」、第2はポップ「P1」です。私がコンソールでchar "S"をクリックすると、プロジェクトはEV1で始まります。コンソール "g"をクリックすると、EV1停止とポップが60秒間始まります。 60年代にコンソールに "C"チャーを入れても、60年代後にはポップはまだ止まらずに動きます。そうでなければ、コンソールに何か文字を入れないか、 "C"と違うものを置いてしまえば、60年代後にはポップは動作を続行せず停止します。ラズベリーのCでクロックを使用する
print()
とscanf()
の引数をコンソールに入れても、ユーザーがcharを入力するのを待っているので、charを置いた後にpompが働くのが問題です。私の場合は、そのように同時に私はチャーを入れることができます。
だから、この私のコード:
#include <stdio.h>
#include <bcm2835.h>
#include <string.h>
#define FAN 16
#define P1 17
#define P2 27
#define GPP 22
#define GPN 20
#define EV1 21
#define EV2 13
#define LAN 19
void LampOn(int a)
{
bcm2835_gpio_set(a);
}
void LampDel(int a,int b)
{
unsigned int del=1000;
bcm2835_gpio_set(a);
bcm2835_delay(del * b);
bcm2835_gpio_clr(a);
}
void LampOff(int a)
{
bcm2835_gpio_clr(a);
}
void OUTPUT(int c)
{
bcm2835_gpio_fsel(c, BCM2835_GPIO_FSEL_OUTP);
}
char Taper()
{
char v;
printf("put a char: ");
scanf("%c",&v);
return v;
}
int main(int argc, char **argv)
{
if(!bcm2835_init())
return 1;
OUTPUT(17);
OUTPUT(27);
OUTPUT(22);
OUTPUT(13);
OUTPUT(19);
OUTPUT(20);
OUTPUT(21);
OUTPUT(16);
LampOff(EV1);
do
{
Taper();
}while(Taper()!='s');
while(1)
{
LampOn(EV1);
Taper();
if(Taper()=='g')
{
LampOff(EV1);
LampDel(P1,60);
}
}
while(1)
{
/* Infinite loop */
}
}
私はカウンターを追加すると思いますが、私はカウンターを使用する場合、プログラムカウンタが停止するまで停止するので、それはまだ悪いソリューションです。
これらの問題を解決するにはどうすればよいですか?
私は正直言ってあなたが何を言っているのか分かりません...いくつかの説明を加えてください。 – ForceBru
ようこそ。これは質問と回答のサイトですので、あなたの質問は何ですか? –
「盛り上がり」とは何ですか?英語では、それは形容詞です(Elgarの「Pomp and Occumstance March」、f'rinstance)。これは名詞として使用している場所では適用されません。あなたの言語から英語への翻訳を確認してください。 –