티스토리 뷰
아두이노를 이용해
사용자가 원하는 특정한 주파수를 갖는 GPIO 출력을 갖도록 하는 코드
[예제 코드]
// 설정할 GPIO 핀
const int outputPin = 18; // 원하는 출력 핀 번호로 설정
// PWM 채널 설정
const int pwmChannel = 0;
const int resolution = 8; // 8-bit (0~255)
int dutyCycle = 128; // 50% 듀티사이클 (8-bit 기준)
// 초기 주파수
int currentFrequency = 1000; // Hz
void setup() {
Serial.begin(115200);
// 초기 PWM 설정
ledcSetup(pwmChannel, currentFrequency, resolution);
ledcAttachPin(outputPin, pwmChannel);
ledcWrite(pwmChannel, dutyCycle);
Serial.println("PWM 시작. 주파수를 시리얼로 입력하세요 (예: 1000)");
}
void loop() {
if (Serial.available()) {
String input = Serial.readStringUntil('\n');
int newFreq = input.toInt();
if (newFreq > 0 && newFreq <= 40000) { // ESP32에서 안정적으로 가능한 범위
currentFrequency = newFreq;
// PWM 다시 설정
ledcSetup(pwmChannel, currentFrequency, resolution);
ledcWrite(pwmChannel, dutyCycle);
Serial.print("주파수 변경됨: ");
Serial.print(currentFrequency);
Serial.println(" Hz");
} else {
Serial.println("올바른 주파수를 입력하세요 (1~40000Hz)");
}
}
// loop에서 별다른 작업 없음. PWM은 하드웨어에서 유지됨.
}
[설명]
- ESP32의 경우 총 16개의 PWM 채널을 가지며
- 각 채널은 독립적으로 운용되며
- 1Hz에서 40kHz까지 광범위한 주파수 대역의 출력 생성 가능
반응형
'SWDesk > Firmware' 카테고리의 다른 글
[Arduino] 클래스(Class) 활용 예제 (0) | 2025.03.16 |
---|---|
[Arduino] ESP32 nano, FreeRTOS 실행 시 메모리 충돌 방지 대책 (0) | 2025.03.14 |
[Arduino] ESP32 nano에서 WiFi 전송과 GPIO 컨트롤을 동시에 하는 방법 (0) | 2025.03.13 |
[Arduino] JSON Transfer through RS-485 (0) | 2025.03.12 |
[Arduino] 실수형 계산 테스트(float, double) (2) | 2024.10.11 |
반응형
250x250
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 둎
- 전압전류모니터링
- Hurdles
- 치매
- ServantClock
- 아두이노
- 혁신
- 전압
- 허들
- 배프
- image
- 심심풀이치매방지기
- Video
- 티스토리챌린지
- arduino
- Innovations&Hurdles
- Decorator
- Innovations
- badp
- 오블완
- 전류
- BSC
- bilient
- Innovation&Hurdles
- 혁신과허들
- 심심풀이
- 치매방지
- 절연형
- DYOV
- 빌리언트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함