아두 이노 반복문 | 아두이노 강좌 – 1-2강 심화 (변수, For 문 이해하기) 24479 명이 이 답변을 좋아했습니다

당신은 주제를 찾고 있습니까 “아두 이노 반복문 – 아두이노 강좌 – 1-2강 심화 (변수, for 문 이해하기)“? 다음 카테고리의 웹사이트 https://you.charoenmotorcycles.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.charoenmotorcycles.com/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 박성준 이(가) 작성한 기사에는 조회수 120,056회 및 좋아요 596개 개의 좋아요가 있습니다.

아두 이노 반복문 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 아두이노 강좌 – 1-2강 심화 (변수, for 문 이해하기) – 아두 이노 반복문 주제에 대한 세부정보를 참조하세요

아두이노를 활용한 프로그래밍 방법입니다.
아두이노를 제작하기 위해서는 프로그래밍 지식이 필수적인데요.
이번시간에는 변수와 for문에 대해서 이해해 보도록 하겠습니다.

아두 이노 반복문 주제에 대한 자세한 내용은 여기를 참조하세요.

아두이노 강좌 #9 프로그래밍 기초 – 반복문 while, for 로 로또 …

아두이노 반복문 while문 for문 프로그램 작성시 순차 구조, 선택 구조, 반복 구조 의 3가지 구조가 있으면 대부분의 소프트웨어 동작 시나리오 구현이 가능합니다.

+ 여기에 표시

Source: juahnpop.tistory.com

Date Published: 11/8/2021

View: 4322

for – 아두이노 참조 – Arduino

for. [Control Structure]. 설명. for 문은 중괄호로 둘러싸인 문의 블록을 반복할 때 사용된다 증가 카운터 …

+ 자세한 내용은 여기를 클릭하십시오

Source: www.arduino.cc

Date Published: 7/16/2021

View: 4705

[아두이노 필수 이론] 아두이노 반복문 for 사용법 – 공대 박형

안녕하세요. 공대 박형입니다. 오늘은 아두이노 반복문 ( for )사용 방법을 학습하겠습니다. 반복문은 주어진 조건이 참일 때 for문 안의 코드를 반복 …

+ 자세한 내용은 여기를 클릭하십시오

Source: engineerparkbro.tistory.com

Date Published: 5/8/2021

View: 3038

반복문 : for문과 while문 – 기계치와 함께하는 슬기로운 기계생활

아두이노 우노는 D3, 5, 6, 9, 10, 11핀으로 핀 번호 위에 물결 모양의 표시가 있습니다. D12, D13 등 PWM 제어가 불가한 핀은 analogWrite( ) 함수로 …

+ 여기에 자세히 보기

Source: 3dplife.tistory.com

Date Published: 10/20/2021

View: 2120

아두이노 기초 11. 제어문(2) – 코딩런

반복문은 반복 사이클이 어떤식으로 돌아가는지 이해할 수 있어야 한다. 1. for문. for문은 초기값, 조건식, 증감식을 통해 지정된 …

+ 여기에 자세히 보기

Source: codingrun.com

Date Published: 7/3/2021

View: 5946

아두이노를 위한 프로그래밍 기초 7 – for (반복문)

이 문서는 아두이노 보드를 사용하기 위해 필요한 프로그래밍 기초 지식이 없는 … 지난 강좌에서 조건문과 반복문은 프로그램의 흐름을 파악하는데 …

+ 여기에 자세히 보기

Source: www.hardcopyworld.com

Date Published: 4/1/2021

View: 7131

주제와 관련된 이미지 아두 이노 반복문

주제와 관련된 더 많은 사진을 참조하십시오 아두이노 강좌 – 1-2강 심화 (변수, for 문 이해하기). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

아두이노 강좌 - 1-2강 심화 (변수, for 문 이해하기)
아두이노 강좌 – 1-2강 심화 (변수, for 문 이해하기)

주제에 대한 기사 평가 아두 이노 반복문

  • Author: 박성준
  • Views: 조회수 120,056회
  • Likes: 좋아요 596개
  • Date Published: 2014. 7. 21.
  • Video Url link: https://www.youtube.com/watch?v=jM-xj839Z04

아두이노 강좌 #9 프로그래밍 기초 – 반복문 while, for 로 로또 번호 생성

아두이노 반복문 while문 for문

프로그램 작성시 순차 구조, 선택 구조, 반복 구조 의 3가지 구조가 있으면 대부분의 소프트웨어 동작 시나리오 구현이 가능합니다. 본 포스트에서는 반복 구조에 사용되는 while문과 for문 do ~ while문 그리고 예제 코드 에 대해 작성하였습니다.

(왼) 순차구조, (중) 분기구조, (오) 반복구조 반복문

반복문은 주어진 조건식을 만족하는 동안 코드를 반복 실행하기 위해 사용됩니다. 반복해서 실행하는 것을 루프라고 표현합니다. 아두이노에 void loop() 함수는 계속해서 반복되어 실행하는 함수입니다. 이와 유사하게 프로그래밍에서 특정 조건에 따라 코드를 반복 수행 하도록 해주는 제어문을 반복문이라고 합니다. Arduino에서 제공하는 반복문은 while, do ~ while, for 문이 있습니다. 아래는 이 세 가지 반복문의 흐름도를 나타냅니다. while : 조건이 만족하는 경우 실행문A를 반복해서 실행

: 조건이 만족하는 경우 실행문A를 반복해서 실행 do~while : 일단 실행문A를 한번 실행하고, 조건을 만족하는 경우 실행문A를 반복해서 실행

: 일단 실행문A를 한번 실행하고, 조건을 만족하는 경우 실행문A를 반복해서 실행 for : 조건에 사용되는 변수가 지정된 증감식에 따라 조건식을 비교하여 참일 경우 실행문 A를 반복해서 실행 (왼) while문, (중) do ~ while 문, (우) For문 while

while문은 가장 간단한 사용법을 가지고 있는 반복문의 형태로, 입력된 조건이 true 일 동안 while 문의 실행코드를 반복해서 실행하고, 조건이 false 인 경우 while 문을 빠져 나옵니다. while문의 조건이 처음부터 false 인 경우 while문 내의 코드를 한번도 실행하지 않을 수 있습니다.

while문 구조

while문은 조건이 참일 경우 { } 내부의 코드가 동작합니다. 조건은 boolean 데이터 타입으로 변수, 반환 값이 있는 함수, 연산자 등이 올 수 있습니다.

1 2 3 while (조건){ // 조건이 참일 경우 수행 } cs

while() 문을 이용하여 영원이 빠져나오지 못하는 코드 입니다. 프로그램이 반복적으로 실행되는 것이 아니라, 1회만 특정한 기능을 수행하고, 하지 말아야 하는 경우 사용 할 수 있습니다. 실제로 쓰일 일은 없지만, 간단한 테스트용도로 사용하는 경우가 있습니다.

1 2 3 while ( 1 ){ // 영원히 돌아가는 함수 } cs

if 문과 break 명령을 이용하여 특정 조건일 때 while 문을 빠져 나오는 코드입니다.

1 2 3 4 5 6 7 8 9 while ( 조건 ){ // 조건이 참일 경우 수행 코드 if ( 세부조건 ){ // 세부조건 참일 경우 수행 break ; } } cs

continue 명령을 이용해서 특정 조건일 때 continue 명령 이하 코드를 건너뛰고, 다음 루프로 진행하는 코드 입니다.

1 2 3 4 5 6 7 8 9 while ( 조건 ){ // 조건이 참일 경우 수행 코드 if ( 세부조건 ){ // 세부조건 참일 경우 수행 continue; } } cs

break 명령과 continue 명령을 이용해서 특정 조건에 따라 while 문을 빠져 나오거나, 그 다음 루프로 진행 할 수 있습니다. 아래 코드에서 ‘세부조건2’를 만족하는 경우 수행코드2는 건너 띄고, 다음 루프로 진행하여 수행코드1 부터 진행합니다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 while ( 조건 ){ // 조건이 참일 경우 수행 코드1 if ( 세부조건 ){ // 세부조건1 참일 경우 수행할 코드 break ; // 세부 조건이 참일 경우 while 문 빠져 나감 } if ( 세부조건2 ){ // 세부조건2 참일 경우 수행 할 코드 continue; // 세부조건2가 참일 경우 아래의 수행코드2를 패스하고 다음 루프로 진행 } // 조건이 참일 경우 수행코드2 } Colored by Color Scripter cs

예제 : 시리얼 통신으로 카운트 출력

시리얼 통신으로 ‘1’이 입력되는 경우 0.5초 간격 카운트 시작

시리얼 통신으로 ‘0’이 입력되는 카운트 멈춤

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 int iUartRecvData; int iCount = 0 ; boolean flag; void setup (){ Serial . begin ( 9600 ); } void loop (){ checkRxBuffer(); // 시리얼 통신 확인 함수 호출 // flag가 true 일 떄 중괄호의 코드를 실행 // flag 값은 시리얼로 0 수신시 false, 1 수신시 true while (flag){ Serial . println (iCount); delay ( 500 ); iCount + + ; checkRxBuffer(); // 시리얼 통신 확인 함수 호출 } } // 시리얼 수신된 데이터에 따라 flag 변경 // 1 수신시 true, 0 수신시 false void checkRxBuffer(){ if ( Serial . available () > 0 ){ iUartRecvData = Serial . read (); if (iUartRecvData = = ‘1’ ){ flag = true ; } else if (iUartRecvData = = ‘0’ ) { iCount = 0 ; flag = false ; } } } Colored by Color Scripter cs

checkRxBuffer(); 는 시리얼 수신 데이터가 1일 때 flag 를 true, 0일 떄 false 를 반환하는 함수입니다. 함수에 대한 설명은 추후 포스트에서 작성할 예정입니다. checkRxBuffer(); 코드가 수행되면 맨 아래의 void checkRxBuffer() { } 가 호출된다고 생각하시면 됩니다.

실행 화면은 아래와 같습니다.

시리얼로 카운트 실행화면 예제

do while문

do ~ while 과 while 문의 차이는 딱 하나입니다. do ~ while 은 중괄호 안의 코드를 무조건 한 번 반복한 후에 조건을 검사합니다. 대조적으로, while문은 중괄호 안의 코드를 수행하기 전에 조건을 검사합니다. 기본적인 do ~ while 문의 구조는 아래와 같습니다.

1 2 3 do { // 수행코드 } while (조건); cs

for문

for문 구조

기본적인 for문의 구조입니다.

1 2 3 for ( 변수초기값 ; 조건 ; 증가치 ){ // 변수의 값이 조건을 만족하는 경우 수행 } cs

continue 명령을 이용하여 특정 조건에 다음 루프로 건너 뛸 수 있습니다. 다음 루프로 넘어 갈 경우 변수 증가치를 반영 합니다.

1 2 3 4 5 6 for ( 변수초기값 ; 조건 ; 증가치 ){ if ( 세부조건 ) { continue; } // 변수의 값이 조건을 만족하는 경우 수행 } cs

break 명령을 이용하여 특정 조건에 for문을 빠져 나올 수 있습니다.

1 2 3 4 5 6 for ( 변수초기값 ; 조건 ; 증가치 ){ // 변수의 값이 조건을 만족하는 경우 수행 if ( 세부조건 ) { break ; } } cs

for문은 변수 초기값, 조건, 증가치의 영역이 정해져있지만, 생략이 가능합니다. 아래 코드는 증가치를 생략하고 증가치를 for 문 내에 작성한 코드입니다.

1 2 3 4 for ( int i = 0 ; i < 10 ; ){ // 동작 코드 i = i + 1 ; } cs 아래는 특정 조건일 때만 증가치를 적용 하는 코드 입니다. 1 2 3 4 5 6 for ( int i = 0 ; i < 10 ; ){ // 동작 코드 if (조건){ i = i + 1 ; // 조건을 만족을 때 증가치 반영 } } Colored by Color Scripter cs 아래는 for문을 while문 처럼 사용 하는 코드 입니다. 1 2 3 4 5 for (;;){ if (조건){ break ; } } cs 예제 : for문으로 로또 번호 출력 0.5초 간격으로 로또 번호를 출력하는 예제 입니다. 📌 21/05/05 수정 : 아래 코드의 9번 줄을 추가하였습니다. random() 함수가 정상적으로 난수를 발생시키기 위해 randomSeed() 코드를 추가하였습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 byte iLottoNumber[ 6 ] = { 0 , 0 , 0 , 0 , 0 , 0 }; void setup (){ Serial . begin ( 9600 ); Serial . println ( "Finish Serial Initialize.." ); Serial . println ( "Program Start.." ); Serial . println ( "" ); randomSeed( analogRead (A0)); } void loop (){ Serial . println ( "Lotto Number Collecting.." ); // 로또 번호 6개 출력을 위해 6step 의 for문 실행 for ( int i = 0 ; i < 6 ;){ boolean duplecateflag = false ; int temp = random ( 1 , 45 ); // 중복 값이 발행하는 경우 중복 발생을 알리고, for문 빠져 나옴 for ( int j = 0 ; j < i; j + + ){ if (iLottoNumber[i] = = temp){ duplecateflag = true ; break ; } } // 중복이 발생하지 않은 경우 추첨된 로또 번호를 출력 if ( ! duplecateflag){ duplecateflag = false ; iLottoNumber[i] = temp; Serial . print (iLottoNumber[i]); Serial . print ( " " ); i + + ; } } Serial . println ( "" ); delay ( 500 ); } Colored by Color Scripter cs 실행 결과는 아래와 같습니다. for문으로 로또 번호 출력 while() for() 선택 가이드 언제 while()문을 쓰고 언제 for()문을 쓸지 정답은 없습니다. 하지만, 무엇을 선택해야 할지 고민하는 시간을 줄이기 위해 아래의 내용을 참고해주시면 감사하겠습니다. 사실 while()도 for()처럼 사용이 가능하고 for()도 while()처럼 사용이 가능합니다. 마무리 이전 3포스트 동안 프로그래밍 기초에 관련된 포스트를 진행하였습니다. 변수,데이터 타입을 알아보고, 제어문, 반복문 등의 제어 흐름 구조에 대해 알아보았습니다. 다음 포스트는 이 기초 프로그래밍 내용을 응용할 수 있도록 이전에 진행했던 Arduino Peripheral 와 관련된 내용을 이어서 포스트를 작성할 예정입니다. 끝까지 읽어주셔서 감사합니다.^^

아두이노 참조

// Dim an LED using a PWM pin int PWMpin = 10; // LED in series with 470 ohm resistor on pin 10 void setup() { // no setup needed } void loop() { for (int i = 0; i <= 255; i++) { analogWrite(PWMpin, i); delay(10); } }

[아두이노 필수 이론] 아두이노 반복문 for 사용법

안녕하세요. 공대 박형입니다.

오늘은 아두이노 반복문 ( for )사용 방법을 학습하겠습니다.

반복문은 주어진 조건이 참일 때 for문 안의 코드를 반복해서 실행시켜주는 방법입니다. 주로 똑같은 동작을 반복하거나 여러 동작을 순차적으로 동작시키기위해 사용합니다.

아두이노에서 사용되는 void loop도 무한 반복문입니다. setup문을 한번 동작한 다음에 loop문을 무한으로 동작시키는 방식인데 for문 같은 경우는 동작하기 위한 조건을 제시하며 사용합니다.

for문 사용 방법입니다.

for ( 초기 처리 부문; 조건 부문; 변화 처리 부문)

실제로 코드를 작성하고 동작을 확이하며 학습해보겠습니다.

저번시간에 실습했던 예제를 for문을 사용하는 코드로 변환하며 실습해보겠습니다.

const int sw = 7; const int led_1 = 11; const int led_2 = 12; const int led_3 = 13; void setup() { Serial.begin(9600); pinMode(sw, INPUT); pinMode(led_1, OUTPUT); pinMode(led_2, OUTPUT); pinMode(led_3, OUTPUT); } void loop() { int value = digitalRead(sw); // Serial.println(value); // 화면을 가려서 주석 if ( value == 1){ // 버튼을 누르면 if문 입장 Serial.println(“Press Button”); for (int count=0;count<6;count++){ Serial.print(count); Serial.println(" Second..."); if ( count < 2 ) { // count가 2 미만이면 실행 digitalWrite(led_1, HIGH); //Serial.print("RED LED ON"); } else if ( count < 4 ){ // count가 2 미만이 아니고 4미만이면 실행 digitalWrite(led_2, HIGH); //Serial.print("GREEN LED ON"); } else{ digitalWrite(led_3, HIGH); // count가 2 미만이 아니고 4미만도 아니면 실행 //Serial.print("BLUE LED ON"); } delay(1000); // for문 마지막에 1초 딜레이 } Serial.print("OUT for"); // for문을 나옴 } delay(100); } 구분별로 설명 해드리겠습니다. for (int count=0;count<6;count++){ Serial.print(count); Serial.println(" Second..."); int count=0 : 초기 for문을 제어하기위한 정수형 count 변수를 정의하고 0을 입력합니다. count<6 : count값이 6미만이라면 이 for문을 계속 동작시킵니다. count++ : for문이 한번 실행될 때마다 count값을 1증가시킵니다. 즉 이 반복문은 count값이 6미만이 아닐 때까지 0, 1, 2, 3, 4, 5일 때 동작하므로 총 6번 동작합니다. if ( count < 2 ) { // count가 2 미만이면 실행 digitalWrite(led_1, HIGH); //Serial.print("RED LED ON"); } else if ( count < 4 ){ // count가 2 미만이 아니고 4미만이면 실행 digitalWrite(led_2, HIGH); //Serial.print("GREEN LED ON"); } else{ digitalWrite(led_3, HIGH); // count가 2 미만이 아니고 4미만도 아니면 실행 //Serial.print("BLUE LED ON"); } 저번 시간에 학습했던 if문을 숫자만 바꿔서 조건을 변경했습니다. 이처럼 조건 제어문은 어떻게 사용하느냐에따라 다양한 결과 초래할 수 있습니다. 반복문도 제어문과 마찬가지로 프로그램 개발시 필수적으로 등장하는 코딩 방법입니다. 더 좋은 프로그램을 만들기 위해서 제어문과 반복문을 잘 사용하는 능력이 요구됩니다. 다음 시간에는 초음파 센서를 사용하는 방법에대해 공부해보겠습니다. 궁금한 부분 질문해주시면 성심성의껏 답변해드리겠씁니다. 읽어주셔서 감사합니다.

반복문 : for문과 while문

반응형

안녕하세요. 메카럽입니다.

이번 포스팅에서는 반복문에 대해 알아보려 합니다. C언어의 세계로 들어오니 외워야할 것도 많고 이해해야할 것도 많은 것이 사실입니다. 물론 이해를 하면서 외운다는 것이 쉽지만은 않은 것도 알고 있습니다. 하지만 처음 마음 먹은 것처럼 끝까지 가봐야 죽인지 된장인지를 아는 것처럼 끝까지 해서 노력의 결실을 맺어보려 합니다.

그럼 본론으로 들어가 보도록 하겠습니다.

■ for문

반복문은 크게 for문과 while문 두 가지로 나뉘며, 동이레한 작업을 원하는 횟수만큼 반복할 때 적용하게 됩니다.

for문의 형태는 아래와 같습니다. 조건문과 같이 for 이후에 소괄호 ( )가 위치하고, 그 안에 세 가지 요소를 지정합니다. 사용할 변수의 초기화, 조건, 증분을 지정한 후 중괄호 { }에 반복할 내용을 기입합니다.

for문의 형태

초기화 이후 for 루프 내에서 증가(또는 감소)를 카운트하여 해당 조건이 거짓이 될 때까지 반복하는 구조입니다. 다시 말해서, 초기화(또는 초기식)는 한 번만 실행되고, 이어지는 조건이 참이면 중괄호 내의 “반복할 내용”을 수행합니다(조건이 거짓이면 종료).

실행과정은 아래와 같습니다.

1. 초기화 수행

2. 조건 검사

3. 조건이 참이면 이어지는 증분(또는 반복) 구문을 수행, 거짓이면 종료.

4. 증분(증감)을 수행

5. 조건을 확인하여 참이면 반복할 내용을 수행하고, 거짓이면 반복 종료.

LED 하나의 밝기를 점진적으로 올리는 코드를 작성한다고 생각해보겠습니다. 아주 간단하게는 다음과 같이 analogWrite( ) 함수값과 analogRead( ) 함수를 이용해서 디지털 신호를 아날로그 신호처럼 활용하는 방법입니다. PWM제어라고도 합니다. 하지만 이 방법은 아래의 코드처럼 너무 번거롭고 코드가 길어진다는 단점이 있습니다. analogWrite( ) 함수를 통해 0에서 255까지 255번 반복해야 밝기 제어가 완성됩니다. 반면, for문을 활용하면 이런 반복적 기능을 짧고 간단하게 구현할 수 있습니다.

int LED_1 = 3;

void setup ( )

{

// 시리얼 모니터를 활용해서 디스플레이하지 않으므로 Serial.begin( ) 함수는 필요하지 않습니다.

}

void loop ( )

{

analogWrite(LED_1, 0);

delay(100);

analogWrite(LED_1, 1);

delay(100);

analogWrite(LED_1, 2);

delay(100);

analogWrite(LED_1, 3);

delay(100);

analogWrite(LED_1, 4);

delay(100);

중략

analogWrite(LED_1, 255);

delay(100);

}

다음은 D3 핀에 LED가 연결되어 있고, 전원이 연결되면 100ms 단위로 D3 핀에 연결된 LED의 밝기가 점점 올라가는 예제입니다. 앞선 예제와 같은 기능이지만, 코드 길이가 아주 짧습니다. PWM 제어를 활용하여 D3 핀에 연결된 LED에 100ms 단위로 0V에서 5V까지 1/255 간격으로 높아지는 전압이 공급되어 밝기가 증가합니다. 참고로 PWM 제어를 위한 핀이 별도로 있습니다. 아두이노 우노는 D3, 5, 6, 9, 10, 11핀으로 핀 번호 위에 물결 모양의 표시가 있습니다. D12, D13 등 PWM 제어가 불가한 핀은 analogWrite( ) 함수로 밝기 제어가 되지 않고 오직 켜지거나 꺼지는 현상만 확인할 수 있습니다.

int LED_1 = 3;

void setup ( )

{

}

void loop ( )

{

for (int i=0; i <= 255; i++) // 초기값(i)=0, 값이 255가 될 때까지 매번 반복 { analogWrite(LED_1, i); delay(100); } } 앞선 예제에서 loop( )문 내에 있는 for문은 다음과 같이 구성되어 있습니다. 1. int i=0, 정수형 변수 i가 만들어진 후 초기화 됩니다. 2. i<=255, 변수 i의 조건(255 이하가 될 때까지)을 검사합니다. 3. i++, i를 1씩 증가시키며, 다시 2번항을 검사하여 255를 초과하면 for 반복문에서 빠져나옵니다. 한가지 for문 예제를 더 살펴보겠습니다. 이번에는 여러개의 LED를 순차적으로 켜고 꺼보는 것입니다. D3, D4, D5 단자에 저항과 LED를 연결하고 각각 차례로 제어해보겠습니다. for문이 아니라면 다음과 유사한 코드로 구성될 것입니다. 0.5초 간격으로 3,4,5번 포트에 연결된 LED를 켜고 끕니다. void setup ( ) { pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); } void loop ( ) { digitalWrite(3, HIGH); delay(500); digitalWrite(4, HIGH); delay(500); digitalWrite(5, HIGH); delay(500); digitalWrite(3, LOW); delay(500); digitalWrite(4, LOW); delay(500); digitalWrite(5, LOW); delay(500); } 위 내용을 아래와 같이 for문으로 구성해보겠습니다. void setup ( ) { pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); } void loop ( ) { for(int i=0; i<4; i++) { digitalWrite(3+i, HIGH); delay(500); } for(int i=0; i<4; i++) { digitalWrite(3+i, LOW); } } 3개의 LED를 사용했기 때문에 코드 길이는 큰 차이가 없어 보이지만, 그 보다 많은 수의 LED를 제어해야 한다고 생각해보면 for문을 사용하는 것이 훨씬 효율적입니다. ■ while문 while문은 for문 보다 구조가 더 간단합니다. while 루프는 소괄호( )내의 조건이 거짓이 될 때까지 중괄호 { } 내의 내용을 계속 반복합니다(무한대로). for 문과는 달리 초기화, 증분 조건이 없고 조건만으로 구성되어 있습니다. while문의 형태 다음은 앞선 for문 예제와 같은 D3 핀에 연결된 LED의 밝기를 100ms 단위로 증가시키는 예제입니다. int LED_1 = 3; int i = 0; void setup ( ) { pinMode(LED_1, OUTPUT); } void loop ( ) { while (i<=255) { analogWrite(LED_1, i++); delay(100); } } while문은 for문에 비해 초기화, 변수 증분 관련 코드가 없고 while 뒤 소괄호 내의 조건만 검사합니다. 앞의 코드에서 정수형 변수 i를 초기화해주고, i를 중괄호 { } 내에서 증가시켜 255가 될 때까지 반복하는 예제입니다. for문보다 조금 더 간단하게 구성되어 있는 것을 확인하실 수 있을 겁니다. 728x90 반응형

아두이노 기초 11. 제어문(2)

반복문

같은 작업을 여러 번 반복할 때 사용하는 명령문으로 for문 while문 do-while문이 있다. 반복문은 반복 사이클이 어떤식으로 돌아가는지 이해할 수 있어야 한다.

1. for문

for문은 초기값, 조건식, 증감식을 통해 지정된 횟수만큼 반복하는 반복문이다. 초기, 반복, 탈출 조건을 한번에 표현할 수 있으므로 반복문의 대표적인 명령문이다. 초기값과 조건식 증감식은 각각 세미콜론(;)으로 구분한다. for문도 if문과 마찬가지로 문장이 한 줄일 경우 중괄호는 생략이 가능하다.

for문의 반복 사이클을 살펴보면,

1. 초기값을 정한다.

2. 조건을 따져본다. (참일 경우 3번으로 거짓일 경우 반복문을 종료하고 5번으로 이동한다.)

3. 조건이 참이라면 문장을 실행한다.

4. 증감식을 이용하여 초기값을 증가하거나 감소한 후 2번으로 다시 돌아간다.

5. 조건식이 거짓이 되면 반복문을 종료하고 다음 문장을 실행 한다.

위 사이클은 for문의 가장 기본적인 사이클 이므로 꼭 숙지하기 바란다.

ex) for문 1부터 10까지 더하기

for문을 이용하여 1부터 10까지 더하고 시리얼 모니터에 찍어 보았다. 1~10까지 더하는건 암산이나 손으로 계산이 가능하지만 1~만 혹은 1~3422등등 암산이나 손으로는 계산하기 힘든 작업들을 반복문을 이용하면 빠르게 구할 수 있다.

위 예제의 반복 사이클을 한번 살펴보면,

초기값 설정을 위한 변수 선언(선언과 동시에 초기화도 가능) i, 더한 값을 저장할 변수 선언 sum.

for문에서 초기값은 i=1로 설정, 조건식은 10보다 작거나 같을 때까지 i<=10, 증감식은 한 번에 1씩 증가 i++(i=i+1, i+=1과 같은 표현이다.) 1번 째 사이클에서 i는 1(초기값)이고 sum은 0이다. i는 10보다 작으므로 조건은 참이 된다. 조건이 참이므로 for문 안에 문장을 실행하면, print문을 이용해 i값을 찍어주고, sum += i는 sum = sum + i와 같은 뜻이므로 sum에는 1이 저장된다. 조건이 참이었으므로 증감식(i++)을 적용시켜 i를 2로 만든다. 2번 째 사이클에서 i는 2이고 sum은 1이다. 조건이 참이므로 문장을 실행시켜 i가 2임을 찍어주고 sum += i를 실행하면 sum은 3이된다. 조건이 참이었으므로 증감식(i++)을 실행하면 i는 3이 된다. 3번 째 사이클에서 i는 3이고 sum은 3이다. 조건이 참이므로 i가 3임을 찍어주고 sum에 더하면 sum은 6이 된다. 증감식을 실행하면 i는 4가 된다. ...... 10번 째 사이클에서 i는 10이고 sum은 45이다. 조건이 10보다 작거나 같다였으므로 조건은 참이 된다. 조건이 참이므로 i가 10임을 찍어주고 sum에 더해주면 sum은 55가 된다. 조건이 참이었으므로 증감식을 실행하면 i는 11이 된다. 다시 for문으로 돌아가면 i가 11이므로 조건은 거짓이 된다. 그러므로 for문 내부에 있는 문장은 실행하지 않고 for문을 빠져나온다. 빠져나오고 다음 문장을 실행하면 sum과 after i를 print문으로 찍어준다. 최종적으로 i는 11이 되고, sum은 55가 된 것을 알 수 있다. 2. while문 while문은 조건식이 거짓이 될 때까지 반복되는 반복문이다. 조건식이 거짓이 되면 반복문을 빠져나간다. 조건식이 거짓이 되는 조건이 없으면 무한루프에 빠질 수 있으니 조건을 빠져나올 수 있도록 조건식의 종료조건을 꼭 넣어주어야 한다. while문도 중괄호를 생략할 수 있으나 거의 사용되지 않으므로 while문을 쓸 때에는 꼭 중괄호를 넣도록 하자. ex) while문 1~10까지 더하기 while문으로 for문과 동일하게 1~10까지 더하는 프로그램을 구현해 보았다. 구현하는 방법은 여러가지이지만 for문을 이해하고 보면 훨씬 이해하기 쉽기 때문에 for문과 비슷하게 코딩을 하였으니 이해하기 더욱 수월할 것이다. while문도 무한루프를 돌릴 것이 아니라면, 초기값 조건식 증감식이 있어야 한다. for문과 마찬가지로 초기값은 1, 조건식은 i가 10보다 작거나 같을 때까지, 증감식은 i++로 적어주었다. 여기서 코딩을 하는 위치가 중요한데 초기값은 반드시 while문 밖에 적어줘야하며 조건식은 while(조건식)으로 증감식은 while문 내부에 적어줘야 한다. 반복 사이클은 for문과 동일하기 때문에 생략하도록 하겠다. (직접 손으로 공책에 적어보면서 분석하는 것을 추천한다.) 3. do-while문 while문과 비슷하지만 do-while문은 우선 문장을 무조건 한번은 실행을 한 다음 조건식을 따진다. 즉, 조건이 거짓이라면 while문의 경우에는 문장을 한번도 실행을 하지 않지만, do-while문은 조건이 거짓이라 하더라도 문장을 한번은 실행한다는 차이가 있다. ex) while문과 do-while문 비교 초기값은 i가 1이고 조건식은 i가 2와 같으냐 물어봤으니 조건은 거짓이므로 while문은 실행하지 않는다. 그러므로 바로 while end라는 문장을 시리얼 모니터에 찍어준다. do-while문으로 작성한 모습이다. while문과 같이 실행 해야할 문장은 Serial.println("false!!!");로 동일하다. i가 1이고 조건은 i가 2냐고 물어봤으므로 거짓이다. do-while문은 무조건 한번은 문장을 실행하기 때문에 참, 거짓 여부에 상관없이 결과값에 false!!가 찍히고 조건이 거짓이므로 do-while문을 빠져나오게 된다. 무한루프 무한루프는 말 그대로 프로그램을 강제로 종료하지 않는 이상 무한으로 반복하는 것을 말한다. 의도한 것이라면 상관없지만 의도치 않은 무한루프는 프로그램을 마비시킬 수 있으니 반복문을 사용할 때에는 항상 이 무한루프를 조심해야 한다. 이미 우리는 계속해서 반복하는 void loop()문을 통해 무한루프를 사용하고 있었다. 무한루프가 오류를 초래하기도 하지만 사용해야 할 상황이 있으므로 무한루프를 사용하는 방법을 짧게나마 소개한다. 1. for문을 이용한 무한루프 for( ; ; ){ } 초기값 조건식 증감식을 비우고 세미콜론만 2개를 찍어주면 된다. 2. while문을 이용한 무한루프 while(1){ }, while(true){ } while(조건식)에서 조건식을 1이나 true로 넣으면 무한루프를 돌릴 수 있다. 3. do while문을 이용한 무한루프 do{ }while(1), do{ }while(true) while문과 마찬가지로 조건식을 1이나 true로 하면 무한루프를 돌릴 수 있다. 기타 제어문 기타 제어문은 조건문이나 반복문을 사용할 때 도움을 주는 제어문이다. 1. break switch문에서 썼던 break문으로 특정 블록을 빠져나올 때 사용하는 제어문이다. 반복문을 사용중에 특정 값에서 탈출해라! 할 때 break를 사용하면 된다. 2. continue break문과 비슷하지만 계속이라는 의미로 반복문을 실행 중에 continue문을 만나면 continue문 아래의 문장은 실행하지 않고 반복한다. 예로들자면, while(조건){ 문장1; if(특정 조건) continue; 문장2; } while 조건내에서 반복을 하고 if문이 거짓이라면, 문장1과 문장2가 반복해서 실행된다. 이 때 if가 참일 경우 continue문을 실행하므로 문장2는 실행하지 않고 다시 반복을 시작한다. break문은 블록을 탈출하지만, continue문은 블록은 빠져 나가지 않고 아래 문장을 실행하지 않는다는 점이 가장 큰 차이점이다. 3. goto 프로그램을 실행중에 지정한 레이블로 강제로 이동하기 위한 제어문이다. goto문을 사용하면 편리한 점도 있지만 논리적이지 않기 때문에 너무 남발해서 사용하면 프로그램을 이해하기가 어렵고, 프로그램이 꼬여버릴 수도 있다. 초보자들은 가급적 사용하지 말고 코딩이 숙련되고 필요한 시점이 올 때 사용하기 바란다. 4. return return은 호출된 함수가 수행을 마치고 결과 값을 호출한 함수 쪽으로 반환하는 제어문 이다. return문은 함수부분에서 많이 나오므로 함수 강의부분에서 다루도록 한다.

아두이노를 위한 프로그래밍 기초 7 – for (반복문)

이 문서는 아두이노 보드를 사용하기 위해 필요한 프로그래밍 기초 지식이 없는 분들을 위한 가이드 문서입니다. 따라서 이미 프로그래밍에 대한 경험이 있다면 이 강좌 시리즈는 넘어가셔도 좋습니다.

=============================================================

.

지난 강좌에서 조건문과 반복문은 프로그램의 흐름을 파악하는데 중요한 요소라고 말씀 드렸습니다. 조건문은 살펴봤으니 반복문의 활용에 대해서 살펴보겠습니다.

1. LED 차례로 점멸하기 예제

이번에 살펴볼 예제는 LED를 여러개 연결한 다음 차례로 on/off 시켜서 마치 빛이 좌우로 움직이는 듯한 느낌을 주도록 하는 예제입니다. 여기에서는 6개의 LED를 사용합니다. 소스코드 및 세부내용은 아두이노 공식 사이트에서 확인하실 수 있습니다.

http://arduino.cc/en/Tutorial/ForLoop

아래처럼 회로를 꾸미면 됩니다. LED 6개를 똑같이 배치하고 각각의 + 라인을 아두이노의 6개 핀에 연결해줍니다. 제어가 편하도록 연속된 핀을 사용합니다. 여기서는 2번~7번 핀을 사용.

자 그럼 우리가 원하는 대로 차례대로 LED가 켜지게 하려면? 아래과정을 반복하면 되겠죠.

2번 핀 5v 출력 -> 잠시 대기 -> 2번 핀 0V 출력

3번 핀 5v 출력 -> 잠시 대기 -> 3번 핀 0V 출력

…..

7번 핀 5v 출력 -> 잠시 대기 -> 7번 핀 0V 출력

이러면 빛이 2번 LED부터 7번까지 이동하는 것처럼 보이겠죠. 이걸 역순으로 다시 실행하면 빛이 7번에서 2번으로 돌아오구요.

2. 예제 코드

/* For Loop Iteration Demonstrates the use of a for() loop. Lights multiple LEDs in sequence, then in reverse. The circuit: * LEDs from pins 2 through 7 to ground created 2006 by David A. Mellis modified 30 Aug 2011 by Tom Igoe This example code is in the public domain. http://www.arduino.cc/en/Tutorial/ForLoop */ int timer = 100; // The higher the number, the slower the timing. void setup() { // use a for loop to initialize each pin as an output: for (int thisPin = 2; thisPin < 8; thisPin++) { pinMode(thisPin, OUTPUT); } } void loop() { // loop from the lowest pin to the highest: for (int thisPin = 2; thisPin < 8; thisPin++) { // turn the pin on: digitalWrite(thisPin, HIGH); delay(timer); // turn the pin off: digitalWrite(thisPin, LOW); } // loop from the highest pin to the lowest: for (int thisPin = 7; thisPin >= 2; thisPin–) { // turn the pin on: digitalWrite(thisPin, HIGH); delay(timer); // turn the pin off: digitalWrite(thisPin, LOW); } }

3. 반복문

먼저 setup 함수부터 보죠. 앞선 강좌에서와는 다르게 setup 안에 for 반복문이 나오면서 pinMode 함수를 호출하고 있습니다.

void setup() { // use a for loop to initialize each pin as an output: for (int thisPin = 2; thisPin < 8; thisPin++) { pinMode(thisPin, OUTPUT); } } 이건 6개의 아두이노 핀을 반복문을 이용해서 초기화하는 겁니다. for 반복문은 아래와 같은 형태로 사용합니다. for( 변수를 선언하고 초기값을 지정; 이 조건에 부합하면 반복; 매 반복이 끝날때마다 하는 작업) { 반복할 작업 } ‘변수를 선언하고 초기값을 지정’ 하는 부분을 보죠. int thisPin = 2 라고 되어 있습니다. thisPin 이라는 변수를 선언하고 여기에 초기값 2를 줬습니다. 여기서 선언된 thisPin 변수는 for {} 중괄호 블럭 안에서만 유용한 변수입니다. for 반복문이 끝나면 저 변수는 사라져요. ‘이 조건에 부합하면 반복’ 하는 부분에 조건을 걸어둡니다. 여기서는 2번 핀부터 7번 핀까지 반복할거니까 thisPin < 8 이라고 조건을 걸었습니다. thisPin을 1씩 증가하면서 초기화 하면 2~7번 핀을 초기화 할 수 있겠죠. ‘반복이 끝날때마다 하는 작업’ 부분은 for {} 중괄호 안의 작업을 한번 처리할 때 마다 실행됩니다. 보통 사용된 변수의 값을 변화시킵니다. 여기서는 thisPin 을 1 증가시켜야겠죠. thisPin++ 이 그걸 의미합니다. 간편하기 적기 위해서 프로그래밍 할 때 쓰는 표현입니다. thisPin = thisPin + 1; 이걸 축약해서 쓰는 표현이죠. 이제 setup 안의 for 반복문이 하는 작업을 아시겠죠. 2부터 7까지 값을 하나씩 변화시키면서 숫자에 해당하는 핀을 pinMode 함수로 초기화하는 겁니다. 그럼 이제 loop 함수안에서 하는 작업도 어느정도 이해가 되실겁니다. for (int thisPin = 2; thisPin < 8; thisPin++) { // turn the pin on: digitalWrite(thisPin, HIGH); delay(timer); // turn the pin off: digitalWrite(thisPin, LOW); } loop 함수안에서 처음 나오는 for 반복문은 2번부터 7번 핀까지 차례대로 [5V 전압 출력 -> timer에 지정돈 시간만큼 잠시 대기 -> 0V 출력] 과정을 반복하는 겁니다. 2->7번 LED가 순서대로 켜지도록 하는거죠.

// loop from the highest pin to the lowest: for (int thisPin = 7; thisPin >= 2; thisPin–) { // turn the pin on: digitalWrite(thisPin, HIGH); delay(timer); // turn the pin off: digitalWrite(thisPin, LOW); }

loop 함수안에서 2번째로 등장하는 for 반복문도 비슷합니다. 다만 7번 핀부터 2번 핀까지 역순으로 on/off 과정을 반복하는 겁니다. 그러기 위해서 조건이 조금 다르게 쓰여졌습니다.

for (int thisPin = 7; thisPin >= 2; thisPin–)

초기화 할 때 thisPin 에 7을 대입해서 시작 LED를 바꿨고, 조건에서 thisPin 이 2보다 크거나 같다는 조건을 줬습니다. 조건을 thisPin > 1 이렇게 줘도 똑같은 결과가 나오겠지요. 그리고 1회 반복할 때마다 thisPin– 를 실행합니다. thisPin– 는 thisPin++ 처럼 값을 1 감소시키는 표현입니다. thisPin = thisPin – 1; 과 같은 표현입니다.

4. 실행 결과

코드가 정확히 작성되었다면 LED가 순서대로 켜지면서 왔다갔다 할겁니다.

# 강좌의 내용이 명확하지 않거나 이해가 힘든 부분이 있으시면 댓글로 말씀해 주세요. 해당 부분을 지속적으로 업데이트 하겠습니다.

=============================================================

이 문서는 작성자의 동의없이 개인적인 목적 외의 상업적인 목적으로 활용되어서는 안됩니다.

이 문서의 일부 혹은 전체를 수정, 삭제, 재배포 하여서는 안됩니다.

작성자 : GodsTale ([email protected])

키워드에 대한 정보 아두 이노 반복문

다음은 Bing에서 아두 이노 반복문 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

See also  어묵 유통 기한 | 유통기한이 지나도 섭취가 가능한 식품 Top 10 11 개의 가장 정확한 답변
See also  테슬라 리퍼럴 코드 | 테슬라 모델Y 주문했습니다. 모델Y 주문 방법과 리퍼럴 코드 적용 방법 19509 좋은 평가 이 답변

See also  휘슬러 압력솥 추천 | 휘슬러솔라임압력밥솥 3가지 사이즈 구성 정보 빠른 답변

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 아두이노 강좌 – 1-2강 심화 (변수, for 문 이해하기)

  • 아두이노
  • arduino

아두이노 #강좌 #- #1-2강 #심화 #(변수, #for #문 #이해하기)


YouTube에서 아두 이노 반복문 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 아두이노 강좌 – 1-2강 심화 (변수, for 문 이해하기) | 아두 이노 반복문, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment