2014-12-11 3 views
0

while 루프와 if 루프가 적절한 상황의 예를 들려 줄 수 있습니까?while 루프 또는 if 문을 사용하는 경우?

저는이 프로젝트에서 Arduino가 가변 저항기에서 아날로그 입력을 읽는 중입니다. 내가 비율을 0에서 100 사이의 숫자로 원시 입력 변환 다음

int intputValue = analogRead(A0); 

:

double percentValue = inputValue * (1.0/10.23); 

을 그럼 내가 결정이 percentValue를 사용 이 나는 ​​그것이 원시 입력을 읽도록하는 방법이다 Arduino가 디지털 핀 중 몇 개를 통해 신호를 보낼 필요가 있는지 여부 신호가 4 채널 릴레이 모듈로 전송됩니다. 기본적으로 내 생각에 percentValue가 0-25 사이 일 경우 릴레이 중 하나가 켜지므로 단 하나의 디지털 핀만 활성화해야합니다. 26-50 사이, 두 개의 핀, 51-75, 세 개의 핀 및 76-100, 네 개의 핀. 여기

내 질문 : 나는 if 문 사용해야합니다

if(percentValue >=0 && percentValue <=25){ 
    digitalWrite(pin1, HIGH);  //turns on pin 1 
} 

또는 while 루프를 사용 : 나는 나머지 비슷한 일을 할거야 그런

while(percentValue >= 0 && percentValue <=25){ 
    digitalWrite(pin1, HIGH);  //turns on pin 1 
} 

을 percentValue 범위. 이 경우 "if"와 "while"을 사용하는 것에 차이가 있습니까?

도움 주셔서 감사합니다.

+0

한 번만 작동하는 동안 여러 번 작동합니다. –

+0

은 루프가 아니지만 while은 있습니다. – newday

+0

단지 하나의 작은 질문입니다. 왜 그 불쌍한 아두 이노를 싫어하니? 값을 읽고 16 바이트 변수에 저장하고 있습니다. 맞습니다. 그러나 그 다음 그것을 double (심지어 float이 아닌)으로 변환합니다. 왜? 부동 소수점 변수는 마이크로 컨트롤러 (FP 유닛이 없으므로 소프트웨어에서 처리해야하므로)에 적합하지 않습니다. 그리고 그 전환은 무엇을위한 것입니까? 4로 나눌 때 ....'if (inputValue> = 0 && inputValue <= 255)'라고 써주세요. 귀하의 마이크로 컨트롤러는 당신을 감사 할 것입니다 .... – frarugi87

답변

0

"그렇다면 나머지 percentValue 범위에서 비슷한 작업을 수행 할 것입니다."

이는 특히 장치로 다른 작업을 수행하려는 경우 if 문을 사용하고 while 루프는 사용하지 말아야 함을 의미합니다.

아마도이 코드는 반복적으로 호출되는 Arduino loop() 함수에 배치되어 루프를 제공합니다. 너는 Arduino가 너의 자신의 while 루프에 갇히는 것을 원하지 않는다.

독서에 따라 다른 LED가 켜지는 것처럼 보입니다. if 문장의 본문에있는 다른 LED도 꺼야합니다. 그렇지 않으면 Arduino는 결국 결국 4 개의 LED가 모두 켜지 게됩니다.

if(percentValue >=0 && percentValue <=25){ 
    digitalWrite(pin1, HIGH);  //turns on pin 1 
    digitalWrite(pin2, LOW); 
    digitalWrite(pin3, LOW); 
    digitalWrite(pin4, LOW); 
} 
// etc. 
+0

고마워요, 결국 그것이 작동하도록했습니다. 루프 함수에서 if 문을 사용하는 위치를 생각하지 않았습니다. 반복적으로 반복 할 것입니다. 나머지 백분율 숫자도 같은 결과를 보였습니다. – user3211857

1

while 루프은 특정 매개 변수가 충족되는 한 특정 코드 블록을 실행하는 데 사용됩니다. 문은 과 유사하지만이 코드 블록은 한 번만 실행되지만 while 문은 달리 전달 될 때까지 실행됩니다.

그래서 효과적으로 :

while(1 == 1) 
{ 
    System.out.println("Hello World"); 
} 

안녕하세요 무기한를 인쇄합니다. 반면에 :

if(1 == 1) 
{ 
    System.out.println("Hello World"); 
} 

안녕하세요 한 번 인쇄됩니다.

당신의 삼가면서 말하는 루프가 그늘지기 때문에 Funnzies를 위해 다만; 루프에 대한 은 지정된 횟수를 실행합니다 :

for(int i = 0; i < 3; i++) 
{ 
    System.out.println("Hello World"); 
} 

안녕하세요 3 번 인쇄겠습니까.

가 참조 :

While loop

For loop

If statement

General Java Tutorials

+0

for 루프를 두 번 또는 세 번 인쇄 하시겠습니까 ... – JonH

+0

@jonH 다른 사람이 편집했습니다 ... – SemperAmbroscus

+0

for 루프를 3 번 ​​실행하면됩니다. 0, 1, 2. – user3211857

0

이 코드에서 setuploop 기능이 있어야합니다, 당신은을 넣을 수 있습니다 loop 함수의

void setup() { 
    // put your setup code here, to run once: 
    int intputValue = analogRead(A0); 
} 

void loop() { 
    // put your main code here, to run repeatedly: 
    double percentValue = inputValue * (1.0/10.23); 
    if(percentValue >= 0 && percentValue <= 25){ 
    digitalWrite(pin1, HIGH);  //turns on pin 1 
    } 
}