2. HW 기초
+로공급 -로 나가기
수도꼭지 물을 사용
하수도로 흘
려버리기
+ (*V) - (GND)LED 반짝반짝 아이 이쁘다
6.
2. HW 기초
전기,전자, 전압, 전류 전갈 촉! ?
전기 : 엄청 큰개념, 전자, 전압, 전류 다 포함하며 전자가 이동하며 생기는 에너지 자체를 전기라 칭함
전자 : 음전하 성질을 가진 - 극성을 띈 입자, 실질적으로 전기가 흐르는것은 전자가 -에서 +로 이동하기 때문에
- 모두들 +에서 -로 가는것으로 알고 있지만 나중에 밝혀진 연구결과 -에서 +으로 가는 것으로 밝혀졌지만
이미 많은 곳에서 + -> - 로 표기 해놔서 그냥 그대로 씀
전압 V : ‘압’ 전기가 흐르는 이유는 +극의 전압이 높고 -극의 전압이 낮기 때문
전류 A : 전하의 양
저항 I : 아힝 저항, 저항하는 힘
전력 W : 전압V * 전류A = 전력 W
4. 아두이노
포트(PORT)
마이크로컨트롤러 하드웨어포트를 사용하여 디지털 입출력을 구현한다.
pinMode() - 입출력 방향을 설정한다.
digtalRead(), digitalWrite() - 입출력 함수
하드웨어 시리얼 통신 (Serial,UART)
하드웨어 시리얼 함수는 마이크로컨트롤러의 내부 시리얼 하드웨어 모듈을 사용한다.
Serial 객체
begin(), print(), read(), write(), available(), serialEvent()
if (Serial), find(), findUntil(), flush(), parseFloat(), parseInt(), peek(), readBytes(), readBytesUntil()
readString(), readStringUntil(), setTimeout()
하드웨어 모듈을 사용하므로 보드에 따라 제한된다.
Arduino UNO - Serial(핀0 RX, 핀1 TX)
Arduino Mega - Serial(핀0 RX, 핀1 TX), Serial1(핀19 RX, 핀18 TX), Serial2(핀17 RX, 핀16TX), Serial3(핀15 RX,핀14 TX)
SPI
AVR SPI 동기식 시리얼 인터페이스 하드웨어 모듈을 사용한다.
MISO (Master In Slave Out) - 슬래이브(slave)에서 마스터(master)로 보내는 전송라인.
MOSI (Master Out Slave In) - 마스터(master)에서 출력장치로 전송하는 라인,
SCK (Serial Clock) - 마스터(master)에서 만들어 주는 데이터 동기 신호.
SS (Slave Select) - 각 장치를 선택할 수 있는 신호선으로 마스터에서 활성화(enable) 또는 비활성화(disable)할 수 있다. 아두이노
위의 3개의 신호는 하드웨어에 의해 동작하지만 이 칩선택 신호는 디지털 출력을 사용하여 별도로 디지털 출력을 사용하여 제어해야
다. 따라서 임의의 핀으로 설정이 가능하다.그러나 위의 3개 신호는 하드웨어와 연결되어 변경이 불가능하다.
SPI객체
25.
4. 아두이노
SPI
AVR SPI동기식 시리얼 인터페이스 하드웨어 모듈을 사용한다.
MISO (Master In Slave Out) - 슬래이브(slave)에서 마스터(master)로 보내는 전송라인.
MOSI (Master Out Slave In) - 마스터(master)에서 출력장치로 전송하는 라인,
SCK (Serial Clock) - 마스터(master)에서 만들어 주는 데이터 동기 신호.
SS (Slave Select) - 각 장치를 선택할 수 있는 신호선으로 마스터에서 활성화(enable) 또는 비활성화(disable)할 수 있다. 아두이노에서 위의 3개의 신호는 하드웨어에 의해 동
작하지만 이 칩선택 신호는 디지털 출력을 사용하여 별도로 디지털 출력을 사용하여 제어해야 한다. 따라서 임의의 핀으로 설정이 가능하다.그러나 위의 3개 신호는 하드웨어와
연결되어 변경이 불가능하다.
SPI객체
begin(), end() , beginTransaction(), transfer() , endTransaction(),usingInterrupt()
setBitOrder(),setClockDivider(),setDataMode()
I²C (TWI)
AVR I²C 동기식 시리얼 인터페이스 하드웨어 모듈을 사용한다.
SDA (data) - 데이터 전송 라인.
SCL (clock) - 데이터 동기신호 라인.
하드웨어 모듈을 사용하므로 각 보드에 따라 핀이 결정되어 있다.
Uno, Ethernet - A4 (SDA), A5 (SCL)
Wire 객체
begin(), beginTransmission(), endTransmission(), write(), read()
requestFrom(), available(), onReceive(), onRequest()
타이머(Timer)
시간 읽기 함수
millis(), micros()
시간 지연 함수
delay(), delayMicroseconds()
26.
4. 아두이노
SPI
AVR SPI동기식 시리얼 인터페이스 하드웨어 모듈을 사용한다.
MISO (Master In Slave Out) - 슬래이브(slave)에서 마스터(master)로 보내는 전송라인.
MOSI (Master Out Slave In) - 마스터(master)에서 출력장치로 전송하는 라인,
SCK (Serial Clock) - 마스터(master)에서 만들어 주는 데이터 동기 신호.
SS (Slave Select) - 각 장치를 선택할 수 있는 신호선으로 마스터에서 활성화(enable) 또는 비활성화(disable)할 수 있다. 아두이노에서 위의 3개의 신호는 하드웨어에 의해 동
작하지만 이 칩선택 신호는 디지털 출력을 사용하여 별도로 디지털 출력을 사용하여 제어해야 한다. 따라서 임의의 핀으로 설정이 가능하다.그러나 위의 3개 신호는 하드웨어와
연결되어 변경이 불가능하다.
SPI객체
begin(), end() , beginTransaction(), transfer() , endTransaction(),usingInterrupt()
setBitOrder(),setClockDivider(),setDataMode()
I²C (TWI)
AVR I²C 동기식 시리얼 인터페이스 하드웨어 모듈을 사용한다.
SDA (data) - 데이터 전송 라인.
SCL (clock) - 데이터 동기신호 라인.
하드웨어 모듈을 사용하므로 각 보드에 따라 핀이 결정되어 있다.
Uno, Ethernet - A4 (SDA), A5 (SCL)
Wire 객체
begin(), beginTransmission(), endTransmission(), write(), read()
requestFrom(), available(), onReceive(), onRequest()
타이머(Timer)
시간 읽기 함수
millis(), micros()
시간 지연 함수
delay(), delayMicroseconds()
27.
4. 아두이노
PWM
PWM을 만들기위해 타이머를 사용한다. 따라서 출력 핀은 해당 타이머 모듈에 의해 정해진 핀으로 제한된다.
analogWrite() - 특별한 설정없이 핀 번호 만을 가지고 자동으로 타이머를 할당한다. OCnA, OCnB핀을 사용하고, 여기서 n는 타이머 모
듈를 지정하는 숫자이고, 보통 각 타이머 마다 2개의 핀이 할당 되어있다. 마이크로컨트롤로 마다 내장 타이머의 숫자가 다르고 핀번호 역
시 다르므로 확인하여 사용하면 된다.
외장 타이머 라이브러리
마이크로컨트롤로의 디지털 하드웨어 회로에 의해 동작하는 타이머를 사용한다. 다음 함수는 아두이노 1.6.5버전에서 라이브러리에 내장
되지 않았다.
Timer 객체
Timer1 라이브러리 객체
Timer3 라이브러리 객체
ADC
AVR의 ADC 모듈 사용하고, 10비트가 내장되어 있다. ADC 모듈이 한개가 있기 때문에 여러 포트를 사용하려면 내부의 아날로그 MUX을
사용한다. 핀 번호에 의해 자동 설정된다.
함수
analogRead(), analogReference()
5. 아두이노? 회로만들어보지 뭐
LED 2초간격 깜빡이
int LED1 = 6; LED1 이라는 이름을 디지털 6번핀으로 저장
int LED2 = 5;
int LED3 = 4;
int BUTTON = 2; BUTTON 이라는 이름을 디지털 2번핀으로 저장
int STATUS = 0; STATUS 라는 이름을 0번이라는 변수명에 저장.
(버튼이 눌릴때 마다 증가하는 숫자값에 따라 어떤 램프를 켤지 결정하는데 사
용)
void setup() {
pinMode(BUTTON, INPUT); BUTTON을 입력(INOUT)장치로 사용
pinMode(LED1, OUTPUT); LED1을 출력(OUTPUT)장치로 사용
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
39.
void loop() {
if (digitalRead(BUTTON) == LOW) 만약 버튼이 HIGH와 같다면( ==는 비교를 나타냄) (버튼을 누른다면)
{
STATUS = STATUS + 1; STATUS 는 STATUS+1의 값이 되고,
if (STATUS >= 3 ) 만약 STATUS가 3보다 크거나 같다면
{
STATUS = 0; STATUS는 0
}
}
switch (STATUS)
{
case 0: STATUS가 0일경우
digitalWrite(LED1, HIGH); LED1에 HIGH(5V)가
digitalWrite(LED2, LOW); LED2에 LOW(0V)가
digitalWrite(LED3, LOW); LED3에 LOW(0V)가
break; 다음 명령 멈춤
case 1:
digitalWrite(LED1, LOW); STATUS가 1일경우
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
break;
case 2:
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
break;
}
delay(100);
}