반응형
LED Bar는 직접 PCB를 제작하여 밝은 LED 3개를 병렬로 연결하여 전등 효과를 내기 위한 액츄에이터다. LED chip에 대한 기술적 스펙은 아래와 같다.
ENG. No 120203002 | 120203002 |
Shape | 8MM Round 5.0*5.4*1.6mm Surface Mount LEDs |
Emitting Color | White |
Lens Color | Yellow |
Viewing Angle | 117° |
Chip Material | InGaN |
led bar를 설계한 회로도는 아래 이미지를 참고한다.
- 파일 이름: lightcontrol.c
- 소스코드: 할당된 gpio 번호는 예고 없이 변경할 수 있습니다.
led 전등 테스트 코드
#include <signal.h> //Signal 사용 헤더파일
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h> //exit() 사용 헤더파일
#include <wiringPi.h>
#define LEDBAR 26 // BCM_GPIO 12
void sig_handler(int signo); // 마지막 종료 함수
int main (void)
{
signal(SIGINT, (void *)sig_handler); //시그널 핸들러 함수
if (wiringPiSetup () == -1)
{
fprintf(stdout, "Unable to start wiringPi: %s\n", strerror(errno));
return 1 ;
}
pinMode (LEDBAR, OUTPUT) ;
for (;;)
{
printf("here - Led Bar on on\n");
digitalWrite (LEDBAR, 1) ; // On
delay (200) ; // ms
printf("here - Led Bar on on\n");
digitalWrite (LEDBAR, 0) ; // Off
delay (200);
}
return 0 ;
}
void sig_handler(int signo)
{
printf("process stop\n");
digitalWrite (LEDBAR, 0) ; // Off
exit(0);
}
아래 코드는 PWM 방식으로 led bar를 제어하는 코드이다. thread를 사용하므로 컴파일할 때 반드시 thread 라이브러리를 추가해주어야 한다. pwm 제어 설명은 아래 이미지를 참고한다.
파일 이름: ledbarsoftpwm
컴파일 명령은
$gcc –o ledbarsoftpwm ledbarsoftpwm .c –l wiringPi –lpthread
소스코드
#include <signal.h> //Signal 사용 헤더파일
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h> //exit() 사용 헤더파일
#include <wiringPi.h>
#include <softPwm.h>
//#define MOTORCONTROL 22 //GPIO 6 - Motor
#define LEDCONTROL 26// LED Bar
//const int LEDCONTROL 21 //
void sig_handler(int signo); // SIGINT 핸들러 함수
int main (void)
{
if(wiringPicheck()) printf("Fail\n");
signal(SIGINT, (void *)sig_handler);
pinMode (LEDCONTROL, OUTPUT);
softPwmCreate(LEDCONTROL, 0, 100);
int i;
int delaytime = 300;
while(1)
{
printf("here \n");
softPwmWrite(LEDCONTROL, 10);
delay(delaytime);
softPwmWrite(LEDCONTROL, 20);
delay(delaytime);
softPwmWrite(LEDCONTROL, 30);
delay(delaytime);
softPwmWrite(LEDCONTROL, 40);
delay(delaytime);
softPwmWrite(LEDCONTROL, 50);
delay(delaytime);
softPwmWrite(LEDCONTROL, 60);
delay(delaytime);
softPwmWrite(LEDCONTROL, 70);
delay(delaytime);
softPwmWrite(LEDCONTROL, 80);
delay(delaytime);
softPwmWrite(LEDCONTROL, 90);
delay(delaytime);
softPwmWrite(LEDCONTROL, 100);
delay(delaytime);
softPwmWrite(LEDCONTROL, 0);
delay(delaytime);
}
return 0 ;
}
int wiringPicheck(void)
{
if (wiringPiSetup () == -1)
{
fprintf(stdout, "Unable to start wiringPi: %s\n", strerror(errno));
exit(1) ;
}
}
void Bpluspinmodeset(void)
{
pinMode (LEDCONTROL, OUTPUT);
}
void sig_handler(int signo) // ctrl-c 로 종료시 실행되는 함수
{
printf("process stop\n");
digitalWrite(LEDCONTROL, 0);
exit(0);
}
고생하셨습니다. ^^
반응형
'개발자 > 라즈베리파이4' 카테고리의 다른 글
라즈베리파이 부저 제어 (0) | 2022.08.29 |
---|---|
라즈베리파이 음성 녹음 재생 모듈 (1) | 2022.08.26 |
Raspberry Pi PICO 사용 방법 (1) | 2022.08.02 |
라즈베리파이4 액츄에이터 7종 제어 C 언어 (0) | 2022.06.29 |
라즈베리파이4 rgb led 코드 (1) | 2022.06.23 |
라즈베리파이 4 서보 모터 실습 코드 (1) | 2022.06.22 |
라즈베리파이4 오디오 Jack 설정 (2) | 2022.06.21 |
라즈베리파이4 부저 buzzer 실습 코드 (1) | 2022.06.20 |
더욱 좋은 정보를 제공하겠습니다.~ ^^