Language/Linux

리눅스 BSP : 스위치 LED 제어

짱도르딘 2024. 6. 11. 17:15
728x90

이번에는 스위치를 활용하여 3개의 LED를 순차적으로 점등시키는 동작을 구현해보려고 한다.

 

코드를 동작 시키면 LED는 순차적으로 점등된다. 하지만, 스위치를 작동시키면 LED는 방향을 바꾸어 점등을 진행한다.

 

스위치 관련 동작은 코드상에 맨 밑에 if문에서 동작되며, 스위치가 눌릴 때 마다 mode는 Toggle되어 변경된다.

 

구현된 코드는 아래와 같다.

#include <wiringPi.h>
#include <stdio.h>

int ps[40]; // ps(pin state) : default 0, pin number : 40

void Toggle(int pin)
{
	ps[pin] = !ps[pin];
	digitalWrite(pin,ps[pin]);
}

int main()
{
	wiringPiSetup();	// Pin number use case (wPi)
	pinMode(8, OUTPUT); // 8,9,7 : OUT   2 : IN
	pinMode(9, OUTPUT);
	pinMode(7, OUTPUT);
	pinMode(2, INPUT);
	int mode = 0;
	
	for(;;) // while(1)
	{ 
		if(mode)
		{
			Toggle(8);	delay(200);
			Toggle(9);	delay(200);
			Toggle(7);	delay(200);
		}
		else
		{
			Toggle(7);	delay(200);
			Toggle(9);	delay(200);
			Toggle(8);	delay(200);			
		}

		if(digitalRead(2) == 0) // Switch Pushed
		{
			mode = !mode; //++;
		}
	}
	return 0;
}

 

 


다음은 스위치를 활용하여 LED 점등 속도가 점점 증가하는 코드를 구현해보았다.

 

속도 증가를 위하여 interval 변수를 활용하였고, 스위치가 눌릴 때 마다 intv 변수는 1 씩 값이 증가한다.

따라서, 버튼을 누를 때 마다 증가 된 intv은 for문 내에 tim 변수에 저장이 되며,

9까지 증가하였을 때에 초기화되어 다시 처음 속도로 진행된다.

 

 

#include <wiringPi.h>
#include <stdio.h>

#define RED 	8
#define GREEN 	9
#define YELLOW 	7
#define SW 		2

int ps[40]; // ps(pin state) : default 0, pin number : 40

void Toggle(int pin)
{
	ps[pin] = !ps[pin];
	digitalWrite(pin,ps[pin]);
}

int main()
{
	wiringPiSetup();	// Pin number use case (wPi)
	pinMode(RED, OUTPUT); // 8,9,7 : OUT   2 : IN
	pinMode(GREEN, OUTPUT);
	pinMode(YELLOW, OUTPUT);
	pinMode(SW, INPUT); //Switch 
	int mode = 1;
	int intv = 2;
	int tim; // delay time interval(ms)
	
	for(;;) // while(1)
	{ 
		tim = (9-intv) * 100;
		if(mode)
		{
			Toggle(RED);	delay(tim);
			Toggle(GREEN);	delay(tim);
			Toggle(YELLOW);	delay(tim);
		}

		if(digitalRead(2) == 0) // Switch Pushed
		{
			intv++;
			if(intv > 8) 
			{
				intv = 1;
			}
		}
	}
	return 0;
}

 

 

728x90

'Language > Linux' 카테고리의 다른 글

리눅스 BSP : LED 점등  (2) 2024.06.11
리눅스 BSP : Raspberry Pi 코드 구현  (0) 2024.06.10