[아두이노] 시뮬레이터
아두이노란 무엇인가?
- 초소형 컴퓨터 ( 마이크로 컨트롤러 )
- 아주 제한적인 처리장치 / 메모리 / 저장공간 / 입출력장치를 가짐
- 이탈리아의 이브레아 마을에서 마시모 반지라는 아키텍트에 의해서 개발되었음.
아두이노는 다양한 버전이 존재한다.
- 전문가들이 사용하는 Mega 보드
- 초급자들이 사용하는 Explora 보드
- Wearable 목적의 Lily pad
- 가장 Basic 하고 범용성 있는 UNO
아두이노 동작까지의 절차
1> 물리적 아두이노 보드에 부품를 연결한다.
2> 어떤 부품에 어떤 신호와 명령을 보낼지 소스코드를 작성한다. ( C언어 )
3> 작성 완료된 소스코드를 컴파일하여 아두이노 메모리에 로딩해서 실행
임베디드 시스템에 적용
- 임베디드 시스템이란? ( 내장시스템 )
- 전자기기 내에 탑재되어서 정해진 일정 행동을 수행하는 목적의 시스템
- ex) 냉장고 / 에어컨
아두이노 시뮬레이팅 사이트
https://www.tinkercad.com/joinclass/5GBQYGHH59Z6
Classroom login
www.tinkercad.com
아두이노 기본 전압 5 V
LED 필요 전압 3V
필요전류 10A
제품 구성중 비슷한 것 : 330옴
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);
}
보드가 깔려있는 부품을 쉴드라고 한다.
와이파이 쉴드 이더넷 쉴드 (칩셋위에 있는 부품)