전체 글 110

구조체

내가 만든, 프로그래머가 정의하는 데이터 타입을 구조체라고 한다 관련 있는 데이터를 묶어서 처리할 수 있는 자료 구조이다 서로 다른 데이터 타입의 묶음 (배열은 똑같은 데이터 타입만 묶는 것) 배열은 같은 데이터 타입, 크기인 것만 묶는 것 구조체는 서로 다른 데이터 타입을 묶어서 처리할 수 있다 서로 다른 데이터 타입을 묶어서 처리할 수 있도록 사용자가 정의하는 데이터 타입이다 사용자가 만드는 새로운 데이터 타입이다 예) 성적처리를 하면 국어는 국어대로, 수학은 수학대로 성적만 묶어서 했다면 지금은 이름, 번호, 국어, 영어, 서로 다른 데이터 타입을 묶어서 처리 할 수 있게 하는게 구조체이다 구조체 정의 방법 구조체의 멤버로 일반 변수 뿐만 아니라 배열이나 포인터 선언 가능 구조체를 정의하면 새로운 ..

포인터

철수네 라고 알려주는 게 아니라 제대로 주소 (행복동 123번지) 라고 알려주면 찾아가기 더 쉽겠지? 포인터 특정 위치를 가리키는 주소 정보 포인터 변수 포인터(주소)를 저장하는 변수 포인터는 저장하는 데이터가 주소값이다 우린 지금까지 데이터 변수를 사용한 것(정수, 문자 등) 포인터 변수의 크기(주소의 크기)는 일반적으로 4바이트이지만 시스템에 따라 다르다 int a; 선언한 경우 임의의 메모리 공간, 현재 메모리 공간, 현재 사용하지 않은 비어있는 4바이트 공간 포인터 변수의 역할은 다른 변수를 가리키는 변수 포인터 변수의 데이터 타입은 포인팅하는 변수의 데이터 타입과 동일한 타입으로 선언 char* char형 변수의 주소 저장 int* double* 선언 방식 데이터타입 * 포인터 변수명; char..

[arduino] 조도센서

▶ 조도센서 photoresistor 빛의 세기에 따라 저항값이 변하는 전자부품 빛이 많이 들어오면 저항이 작아지고, 빛이 적게 들어오면 저항이 커지는 황화카드뮴이라는 화합물을 사용한다 빛이 많이 들어오면 저항이 약해지므로 왼쪽으로 흐르는 게 더 많고 a0로 가는 건 더 적게 들어온다 빛이 없으면 저항이 세지므로 a0로 빠지는 게 더 많아진다 포토레지스터(조도센서) 결과값을 a0로 받으려고 한다 1:35~

arduino 2022.09.14

[arduino] 아날로그 LED 막대

⊙ 실습 // C++ code //3,5,6,9,10,11 -> 아날로그 출력 가능 (PWM) 핀 모드를 배열로 만들기 const int led[6] = {3, 5, 6, 9, 10, 11}; const int analogPin = A0; void setup() { } void loop() { int sensorInput = analogRead(analogPin); // 0 ~ 1023 // 3번 핀 LED (led[0]) // 가변저항 값이 // 0 ~ 171 사이에선 서서히 밝아지고 // 171 이상이면 완전히 켜진 상태. // if(sensorInput / 171 >= 1+ 0) // analogWrite(led[0], 255); // 아날로그 값 0 ~ 255 // else if(sensorInp..

arduino 2022.09.14

[arduino] 가변저항 LED 깜빡임

⊙ 가변저항 LED 깜빡임 실습 가변저항의 신호값은 0 ~ 1023 이다 이 값을 0 ~ 2000 으로 매핑해서 나오는 값으로 delay를 하여 LED 깜빡이는 걸 보자 void setup() { Serial.begin(9600); pinMode(13, OUTPUT); // 디지털13번 핀 출력모드로 설정 } void loop() { // A0 단자에서 측정되는 아날로그 신홋값 int input = analogRead(A0); // 가변저항 입력값은 0 ~ 1023 // 위 값을 0 ~ 2000 사이의 값으로 변환 int output = (float)input / 1023 * 2000; Serial.print(input); Serial.print('\t'); Serial.println(output); d..

arduino 2022.09.14

[arduino] c언어

* 정수 / 정수 -> 정수 * 정수/ 실수 -> 실수 void setup() { //정수 //int, long, short //실수 //float, double int n; Serial.println(n); //초기화 안하면 쓰레기값(garbage value) : 메모리에 남아있는 쓰레기값 n = 100; Serial.println(n); int m = n / 3; // 정수 / 정수 => 정수 Serial.println(m); // 33.333.. 이 아니라 33 출력 (소수점 이하 절삭) m = n / 3.0; // 정수 / 실수 => 실수, 실수와의 연산 결과는 언제나 실수 하지만 m은 정수로 선언했기에 정수로 나온다 Serial.println(n / 3.0); // 드디어 소수점 33.33이 나..

arduino 2022.09.14

[arduino] 가변저항 - 아날로그 입력

▶ 디지털, 아날로그 신호 전기 신호는 '주는 시점'에 따라 디지털 신호와 아날로그 신호로 구분된다 디지털 신호 : 신호를 주는 시간의 흐름이 불연속적 아날로그 신호 : 신호를 주는 시간의 흐름이 연속적 ▷ 아두이노의 아날로그 입력 핀 A0 ~ A5 총 6개 항상 '입력' 을 위해 사용되는 핀 디지털핀에서 사용했던 pinMode() 함수를 사용할 필요가 없다 ▶ 가변저항 : potentiometer (분압기) 저항 물질이 발라져 있다 와이퍼가 오른쪽으로 갈수록 저항이 세지고 전류(신호값)가 약해진다 시계방향으로 와이퍼가 넘어갈수록 A와 W 사이의 저항은 세지고 W와 B 사이의 저항은 약해진다 A0에서 들어온 신호는 언제 세질까? 시계 방향으로 와이퍼가 갈때! why? 저항이 적으니까 전류가 많이 흐른다 ..

arduino 2022.09.14

[arduino] slide switch 버튼

스위치 왼쪽에 있으면 1, 2번 회로 연결, 스위치 오른쪽에 있으면 2, 3번 회로 연결된다 ⊙ 슬라이드 스위치 // C++ code // void setup() { Serial.begin(9600); //직렬 통신 초기화 9600bps pinMode(7, INPUT); //내부 풀업 저항 pinMode(8, OUTPUT); } void loop() { int readValue = digitalRead(7); //7번 핀의 입력 핀의 값을 읽어온다 정수타입으로 리턴 Serial.println(readValue); //출력 (직렬 모니터) if(readValue == HIGH) digitalWrite(8, HIGH); else digitalWrite(8, LOW); }

arduino 2022.09.14

[arduino] push 버튼

폐쇄 회로 : closed circuit (전류가 흐르는 회로) 개방 회로 : open circuit (전류가 흐르지 않는 회로) 단락 회로 : short circuit (전원과 접지가 직접 연결된 회로 - 발열, 화재 상황) * 플로팅 현상 (floating) HIGH, LOW 값 중 명확하게 한쪽을 정확히 정하지 못해 값이 계속 바뀌는 현상이다 따라서 한쪽에 정착할 수 있도록 핀을 '접지' 또는 '전원'에 연결해줘야 한다 그러나 핀에 직접 연결하면 핀에 보낼 신호를 원하는대로 조절할 수 없다 그래서 저항과 같이 연결한다 이 때 저항을 어디에 연결하느냐에 따라 종류가 나뉜다 풀업 저항 : 저항을 전원선에 연결 -> 버튼을 누를 때에만 전원 공급을 멈추고 싶으면! 풀다운 저항 : 저항을 접지선에 연결 -..

arduino 2022.09.14