본문 바로가기

라즈베리파이

라즈베리파이 3 B+ RGB Led 구현 with C

반응형

 

 

 

센서 이미지

 

 

연결도

 

 

소스코드 1 - red, green, blue 순차적으로 켜고 끄기

 

#include <signal.h> //Signal 사용 헤더파일
#include <unistd.h>
#include <stdio.h> 
#include <string.h> 
#include <errno.h>
#include <stdlib.h> //exit() 사용 헤더파일

#include <wiringPi.h>

#define RGBLEDPOWER  24 //BCM_GPIO 19

#define RED	7 //27
#define GREEN	3 //28
#define BLUE	4 //29

void sig_handler(int signo); // SIGINT 사용 마지막 종료 함수

int main (void)
{
	signal(SIGINT, (void *)sig_handler);	//시그널 핸들러 함수
	
	if (wiringPiSetup () == -1)
	{
		fprintf(stdout, "Unable to start wiringPi: %s\n", strerror(errno));
		return 1 ;
	}
  
	pinMode(RGBLEDPOWER, OUTPUT);
	pinMode(RED, OUTPUT);
	pinMode(GREEN, OUTPUT);
	pinMode(BLUE, OUTPUT);

	int i;

	for (i =0; i<10 ;i++)
	{
 
		digitalWrite(RGBLEDPOWER, 1);
		
		printf("R E D \n");
		digitalWrite(RED, 0);
		digitalWrite(GREEN, 1);
		digitalWrite(BLUE, 1);
		
		
		delay(1000);
		printf("G R E E N \n");
		digitalWrite(RED, 1);
		digitalWrite(GREEN, 0);
		digitalWrite(BLUE, 1);
		
		
		delay(1000);
		printf("B L U E \n");
		digitalWrite(RED, 1);
		digitalWrite(GREEN, 1);
		digitalWrite(BLUE, 0);
		
		
		delay(1000);		
	}
	
  return 0 ;
}

void sig_handler(int signo)
{
    printf("process stop\n");
	
	digitalWrite(RED, 1);
	digitalWrite(GREEN, 1);
	digitalWrite(BLUE, 1);
	digitalWrite(RGBLEDPOWER, 0); //Off
	
	exit(0);
}

 

소스코드 2 - cyan - yellow - magenta  순차 점등

 

#include <signal.h> //Signal 사용 헤더파일
#include <unistd.h>
#include <stdio.h> 
#include <string.h> 
#include <errno.h>
#include <stdlib.h> //exit() 사용 헤더파일

#include <wiringPi.h>

#define RED	7 //27
#define GREEN	3 //28
#define BLUE	4 //29

void sig_handler(int signo); // SIGINT 사용 마지막 종료 함수

int main (void)
{
	signal(SIGINT, (void *)sig_handler);	//시그널 핸들러 함수
	
	if (wiringPiSetup () == -1)
	{
		fprintf(stdout, "Unable to start wiringPi: %s\n", strerror(errno));
		return 1 ;
	}
  
	pinMode(RED, OUTPUT);
	pinMode(GREEN, OUTPUT);
	pinMode(BLUE, OUTPUT);

	int i;

	for (i =0; i<10 ;i++)
	{

		printf("cyan \n");
		digitalWrite(RED, 1);
		digitalWrite(GREEN, 0);
		digitalWrite(BLUE, 0);		
		
		delay(1000);
		
		printf("yellow \n");
		digitalWrite(RED, 0);
		digitalWrite(GREEN, 0);
		digitalWrite(BLUE, 1);		
		
		delay(1000);
		
		printf("magenta \n");
		digitalWrite(RED, 0);
		digitalWrite(GREEN, 1);
		digitalWrite(BLUE, 0);		
		
		delay(1000);		
	}
	digitalWrite(GREEN, 0);
  return 0 ;
}

void sig_handler(int signo)
{
    printf("process stop\n");
	
	digitalWrite(RED, 1);
	digitalWrite(GREEN, 1);
	digitalWrite(BLUE, 1);
		
	exit(0);
}

 

 

 

 

 

반응형