C Raspberry Pi PWM驱动LED停止按钮

C Raspberry Pi PWM驱动LED停止按钮,c,loops,raspberry-pi,pwm,C,Loops,Raspberry Pi,Pwm,我对raspberry Pi编程还不熟悉,我的任务是构建一个“警报”,用一个按钮激活,用同一个按钮停止。 现在我想包括一个PWM驱动的LED,从高到低衰减。我的问题是,我不知道如何通过按下按钮来摆脱循环 while(1) { // Wenn das erste mal gedrückt führe schleife aus if(digitalRead(5)==1 && alarm==0) { //warte 300ms d

我对raspberry Pi编程还不熟悉,我的任务是构建一个“警报”,用一个按钮激活,用同一个按钮停止。 现在我想包括一个PWM驱动的LED,从高到低衰减。我的问题是,我不知道如何通过按下按钮来摆脱循环

while(1)
{
    // Wenn das erste mal gedrückt führe schleife aus
    if(digitalRead(5)==1 && alarm==0)
    {
        //warte 300ms
        delay(300);
        //setze flag auf eins (Schleife war aktiv)
        alarm=1;
    }
    //Wenn die Taste vorher schon einmal gedrückt wurde, stoppe LED
    else if (digitalRead(5)==1 && alarm==1)
    {
        //warte 300ms
        delay(300);
        // Schalte den Alarm wieder aus
        alarm=0;
        // Schalte LED aus
        digitalWrite(0, 0);
    }
    //Solange Alarm eingeschaltet, führe Schleife aus
    while (alarm==1 && digitalRead(5)==0)
    {
        for(up = 1; up <= 100 | digitalRead(5)==1; up++)
        {
            softPwmWrite (0, up);
            delay(10);
        }

        delay(1000);



        for(down = up; down >= 0 | digitalRead(5)==1; down--)
        {
            softPwmWrite (0, down);
            delay(10);

        }

        delay(1000);

    }

}
while(1)
{
//这是我的生日礼物
如果(数字读取(5)=1和报警==0)
{
//疣状300毫米
延迟(300);
//塞兹旗(施莱夫战争)
报警=1;
}
//在斯多普的带领下,我们品尝了一顿丰盛的晚餐
否则如果(数字读取(5)=1和报警==1)
{
//疣状300毫米
延迟(300);
//雪尔特报警系统
报警=0;
//沙尔特领导的澳大利亚
数字写入(0,0);
}
//索兰热警报系统,führe Schleife aus
同时(报警==1&&digitalRead(5)==0)
{
对于(向上=1;向上=0 |数字读取(5)==1;向下--)
{
软写入(0,向下);
延迟(10);
}
延迟(1000);
}
}

我实际上来自德国,所以我的评论很不幸是德国的。但我希望你们能帮我:/

bool shouldbarkflag=0//然后在某个点读取按钮并设置该标志,检查while循环中的标志,如果设置了则中断。在停止中断之前,请确保将其关闭;还是我错过了什么。。。。。。