디지털 컨버전스/Arduino

[아두이노] 시뮬레이터

gimyeondong 2020. 6. 16. 10:08

아두이노란 무엇인가?

- 초소형 컴퓨터 ( 마이크로 컨트롤러 )

- 아주 제한적인 처리장치 / 메모리 / 저장공간 / 입출력장치를 가짐

- 이탈리아의 이브레아 마을에서 마시모 반지라는 아키텍트에 의해서 개발되었음.

 

아두이노는 다양한 버전이 존재한다.

- 전문가들이 사용하는 Mega 보드

- 초급자들이 사용하는 Explora 보드

- Wearable 목적의 Lily pad

- 가장 Basic 하고 범용성 있는 UNO

 

아두이노 동작까지의 절차

1> 물리적 아두이노 보드에 부품를 연결한다.

2> 어떤 부품에 어떤 신호와 명령을 보낼지 소스코드를 작성한다. ( C언어 )

3> 작성 완료된 소스코드를 컴파일하여 아두이노 메모리에 로딩해서 실행

 

임베디드 시스템에 적용

- 임베디드 시스템이란? ( 내장시스템 )

- 전자기기 내에 탑재되어서 정해진 일정 행동을 수행하는 목적의 시스템

- ex) 냉장고 / 에어컨


아두이노 시뮬레이팅 사이트

 

https://www.tinkercad.com/joinclass/5GBQYGHH59Z6

 

Classroom login

 

www.tinkercad.com

 

 


V = I * R

아두이노 기본 전압 5 V 

LED 필요 전압 3V

필요전류 10A

제품 구성중 비슷한 것 : 330옴

1초씩 깜박거리게

 

12번 포트에서 11번으로 변경시, 코드에서 일일히 찾아 변경하기 번거로움

 

전역 변수로 만들기 (C언어 개념, 자바로는 public static)



출력을 위한 세팅

int led = 11;

void setup()
{
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

void loop()
{
  Serial.println("Hello");
}


AnalogWrite

 

PWM pin : 디지털값을 아날로그로 변경

 

 

REG 최대값 255

void loop()
{
  analogWrite(led,100);
}

 

디지털 핀( ~이 없는 번호 )으로 옮기면 정상 동작하지 않음

 


LED RGB

 

PW로 연결했으므로 AnalogWrite 가능


난수 생성

(C 언어에서는 난수값의 패턴이 존재, 완전한 난수라고 보기 어려움)

 

void setup()
{
	Serial.begin(9600);
}

void loop()
{
  randomSeed(analogRead(0));
  int randVal = random(255); // 0~255 사이의 난수
  Serial.println(randVal);
  delay(1000);
}

randomSeed와 random 함께 사용


1초에 한번씩 랜덤한 밝기값을 가지는 LED 만들기

 


RANDOM RGB

int pin[3] = {11,10,9};

void setup()
{
  for(int i = 0; i<3; i++){
  	pinMode(pin[i],OUTPUT);
  }
	Serial.begin(9600);
}

void loop()
{
  for(int i=0; i<3; i++){
  randomSeed(analogRead(0));
  int randVal = random(255); // 0~255 사이의 난수
  Serial.println(randVal);
  analogWrite(pin[i],randVal);
  }
  delay(1000);
}

3개의 LED 중 하나가 랜덤하게 켜지는 프로그램

 

int pin[3] = {11,10,9};

void setup()
{
  for(int i = 0; i<3; i++){
  	pinMode(pin[i],OUTPUT);
  }
	Serial.begin(9600);
}

void loop()
{
  
  randomSeed(analogRead(0));
  int randVal = random(3); // 0~2 사이의 난수
  Serial.println(randVal);
  digitalWrite(pin[randVal],HIGH);
  delay(1000);
  digitalWrite(pin[randVal],LOW);
  
}


보드가 깔려있는 부품을 쉴드라고 한다.

 

와이파이 쉴드 이더넷 쉴드 (칩셋위에 있는 부품)