Arduino, 아날로그 입출력

이도현·2023년 8월 9일
0

아두이노 학습

목록 보기
10/34

1. 가변저항기

  • 1번다리에 가까워 질수록 1, 2번 사이의 저항 감소, 2,3번 사이 저항 증가

2. 아날로그 입력함수

// A/D 변환 결과 값 시리얼 모니터 창 표시

const int var_pin = A0; // 가변저항 연결핀
int analog_val; // 아날로그 값 저장 변수

void setup(){
	Serial.begin(115200)
}

void loop(){
	int digital_val;
	float ff;
	
	digital_val = analogRead(var_pin); //아날로그 값 디지털 변환
	ff = (float)digital_val / 1023. * 5.0; //입력 전압값 출력(0~5V)

	Serial.print("Input Voltage(0~5) = ");
	Serial.println(ff);//입력 전앖 값 출력
	
	Serial.print("Digital Value(0~1023) = ");
	Serial.println(digital_val); //디지털 변환 값 출력
	Serial.println("----------------------------------");
	
	delay(2000);
}

3. LED에 PWM 신호 출력하기

// PWMLed.h
#pragma once

#include <Arduino.h>
#include <Led.h>

class PWMLed: public Led{
protected:
	int value;

public:
	PWMLed(int pin, int value = 0);
	void setValue(int value);
};
//PWMLed.cpp
#include "PWMLed.h"

PWMLed::PWMled(int pin, int value): Led(pin), value(value){
	analogWrite(pin,value);
}

void PWMLed::setValue(int value){
	this -> value = value;
	analogWrite(pin, value);
} 
//app.ino
#include "PWMLed.h"

const int var_pin = A0;
PWMLed led(9);

void setup(){
}

void loop(){
	int analog_val, pwm_val;

	analog_val = analogRead(var_pin);
	pwm_val = map(analog_val, 0, 1023, 255, 0);

	led.setValue(pwm_val);
}

4. Analog클래스로 PWM 신호 출력하기

// Analog.h
#pragma once

#include <Arduino.h>

calss Analog{
protected:
	int pin;
	int from_min;
	int from_max;
	int to_min;
	int to_max;

public:
	Analog(int pin, int to_min=0, int to_max=255);
	void setRange(int to_min, in to_max)
	int read();
};
//Analog.cpp
#include "Analog.h"

Analog::Analog(int pin, int to_min, int to_max):
	pin(pin),
	from_min(0), from_max(1023);
	to_min(to_min), to_max(to_max){
}

void Analog::setRange(int to_min, int to_max)
	this -> to_min = to_min;
	this -> to_max = to_max;
}

int Analog::Read(){
	int value = analogRead(pin);
	return map(value, from_min, from_max, to_min, to_max);
}
// app.ino
#include "Analog.h"
#include <PWMLed.h>

Analog sensor(A0, 255, 0);
PWMLed led(9);

void setup(){
}

void loop()
{
	int pwm_val = sensor.read();
	led.setValue(pwm_val);
}
profile
좋은 지식 나누어요

0개의 댓글