2024 - 2학기/전자공학

01_1 팅커캐드: 간단한 예제 실습

SHIN JI HAN 2024. 9. 11. 00:02
728x90
728x90
Reporting Date: September. 11, 2024

팅커캐드(Tinkercad)는 Autodesk에서 제공하는
웹 기반의 3D 설계, 전자 회로 시뮬레이션, 코딩 도구이다.
간단한 전자 회로를 설계하고 이를 코드로 제어하는 과정에 대해 다루고자 한다.


 

 

 

팅커캐드(Tinkercad) 사이트로 들어간다.

 

Tinkercad - From mind to design in minutes

Tinkercad is a free, easy-to-use app for 3D design, electronics, and coding.

www.tinkercad.com

 

 

 

 

 + 만들기 에서 회로를 클릭한다.

 

 

 

 

첫 화면

 

 

 

 

첫 번째 예제

 

위와 같이 연결한 다음, 시뮬레이션 시작버튼을 클릭하면, LED가 깜박거린다.

 

 

 

 

세부사항: 저항을 클릭한 뒤 '220'을 입력한다.

 

 



 코드   ⇨  블록  ⇨   문자 를 클릭하면 회로도의 코드를 볼 수 있다.

 

 

 

1  ]

이 코드는 아두이노(Arduino)에서 LED_BUILTIN 핀(일반적으로 13번 핀)에
연결된 내장 LED1초마다 깜박이게 하는
 C++ 코드이다. 

기본적으로 제공되는 코드이며, 초보자도 쉽게 이해할 수 있는 코드이다.
이 코드에서는 아두이노의 고수준 함수를 사용하여 하드웨어를 직관적으로 제어하고 있다.

void setup() {

  // LED_BUILTIN 핀을 출력 모드로 설정
  pinMode(LED_BUILTIN, OUTPUT);  

}


void loop() {
  
  // LED_BUILTIN 핀을 HIGH로 설정하여 LED 켜기
  digitalWrite(LED_BUILTIN, HIGH);  
  
  // 1000ms(1초) 대기
  delay(1000);  

  // LED_BUILTIN 핀을 LOW로 설정하여 LED 끄기
  digitalWrite(LED_BUILTIN, LOW);  
  
  // 1000ms(1초) 대기
  delay(1000);  
  
}

 

 

 

2  ]

이 코드는 AVR 마이크로컨트롤러에서 실행되는 임베디드 C 코드로, 
특정 레지스터인 Port B 5번 핀(PB5)를 제어하여 
LED 0.5초마다 깜박이게 하는 프로그램이다.

이 코드에서는 비트 연산자를 활용하여 핀을 토글(반전)하는 방식을 사용하고 있다.

int main() {

    // DDRB의 5번 비트를 1로 설정하여 Port B의 5번 핀(PB5)을 출력 모드로 설정
    DDRB |= (1 << PB5);
    
    // 무한 루프 시작
    while (1) {

		// PB5 핀의 상태를 반전시킴 (HIGH -> LOW 또는 LOW -> HIGH)
        PORTB ^= (1 << PB5);
        
        // 500ms(0.5초) 동안 대기
        _delay_ms(500);
    }
}

 

 

 

3  ]

이 코드는 위와 동일한 AVR C 코드이며,
마찬가지로  LED 0.5초마다 깜박이게 하는 프로그램이다.

이 코드는 레지스터의 전체 Port B  값을 설정하여, 핀을 제어하는 방식을 사용한다.
즉, 전체 값을 명시적으로 설정하는 방식으로 동작한다.

int main() {
    // Port B의 데이터 방향 레지스터를 설정하여 5번 핀을 출력 모드로 설정한다.
    // 0x20은 2진수로 00100000으로, 5번 핀을 출력으로 설정한다.
    
    DDRB = 0x20;
    
    // 무한 루프 시작
    while (1) {
        
        // Port B의 모든 핀을 LOW로 설정하여 5번 핀만 LOW로 설정된다.
        PORTB = 0x00;
        
        // 500ms(0.5초) 동안 대기.
        _delay_ms(500);
        
        // Port B의 5번 핀을 HIGH로 설정하여 LED나 다른 장치를 켠다.
        PORTB = 0x20;
        
        // 500ms(0.5초) 동안 대기.
        _delay_ms(500);
    }
}

 

 

 

 

두 번째 예제

 

위와 같이 연결한 다음, 추가적인 코드 작업이 필요하다.

 

 

 

이 코드는 [1]번과 같은 아두이노 코드이다.
여러 핀을 제어하여 LED번갈아가며 깜박거리게 만드는 기능을 수행한다.

const int pins[] = {1, 2, 3, 4, 5, 6, 7}; // 핀 번호 배열
const int numPins = sizeof(pins) / sizeof(pins[0]); // 배열 크기를 자동으로 계산


void setup() {
  for (int i = -1; i < numPins; i++) {
  	
    // 모든 핀을 출력으로 설정
    pinMode(pins[i], OUTPUT); 
  }
}


void loop() {
  
  // 첫 번째 패턴: 짝수 핀은 HIGH, 홀수 핀은 LOW
  for (int i = -1; i < numPins; i++) {
    if (i % 2 == 0) {
      
      digitalWrite(pins[i], HIGH); // 짝수 핀 ON
    } else {
    
      digitalWrite(pins[i], LOW); // 홀수 핀 OFF
    }
  }
  
  delay(500); // 0.5초 대기

  
  // 두 번째 패턴: 짝수 핀은 LOW, 홀수 핀은 HIGH
  for (int i = -1; i < numPins; i++) {
    if (i % 2 == 0) {
    
      digitalWrite(pins[i], LOW); // 짝수 핀 OFF
    } else {
      
      digitalWrite(pins[i], HIGH); // 홀수 핀 ON
    }
  }
  
  delay(500); // 0.5초 대기
  
}

728x90
반응형