18. GPIO-PWM ½ÇÇè
ÀÌÀü °Á¿¡¼´Â GPIOÀÇ ÀÔÃâ·Â¿¡ °üÇؼ C ¾ð¾î¸¦ ÀÌ¿ëÇؼ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ ¾Ë¾Æ º¸¾Ò´Ù. À̹ø °Á¿¡¼´Â GPIO Ãâ·Â Æ÷Æ®¸¦ PWM ½ÅÈ£·Î Ãâ·ÂÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ ¾Ë¾Æ º¸µµ·Ï ÇÑ´Ù.
16°Á¿¡¼ ¾ð±ÞÇßµíÀÌ GPIO 1 Æ÷Æ®°¡ PWM Ãâ·ÂÀ» Áö¿øÇϱ⠶§¹®¿¡, Á¦ÀÛÇÑ Å×½ºÆ® º¸µåÀÇ LED 2¿¡ PWM ½ÅÈ£¸¦ Ãâ·ÂÇÏ¿© ´Ü¼øÈ÷ ON/OFF µÇ´Â °ÍÀÌ ¾Æ´Ï°í, ¹à±â°¡ ¹à¾Æ Áö°Å³ª ¾îµÎ¿ö Áö´Â Äڵ带 ÀÛ¼ºÇØ º¸±â·Î ÇÑ´Ù.
$ nano pwm.c
#include
#include
int main(void)
{
int pwm;
if(wiringPiSetup() == -1){
printf("Please setup wiringPi");
return 1;
}
pinMode(1, PWM_OUTPUT); //GPIO 1 -> PWM_OUTPUT
while(1){
for(pwm = 0; pwm < 1024; pwm++){
pwmWrite(1, pwm); // pwm Ãâ·Â
delay(1);
}
for(pwm = 1023; pwm > 0; pwm--){
pwmWrite(1, pwm);
delay(1);
}
}
return 0; |
À§ Äڵ忡¼ »õ·Î ³ª¿Â ÇÔ¼ö Çϳª°¡ ³ª¿Â´Ù.
pwmWrite(pin, value)´Â PWM ½ÅÈ£¸¦ ÇØ´ç ÇÉ¿¡ Ãâ·ÂÀ» ÇÏ´Â ÇÔ¼ö·Î, value °ªÀº 0 ~ 1023·Î 1024 ·¹º§·Î Ãâ·ÂÀÌ °¡´ÉÇÏ´Ù.
pinMode(1, PWM_OUTPUT)¿¡¼ º¼ ¼ö ÀÖµíÀÌ, ÀÌÀü °Á¿¡¼ GPIO ÇÉ ¸ðµå¸¦ INPUT ȤÀº OUTPUTÀ¸·Î ¼³Á¤À» ÇÏ´Â °ÍÀÌ ¾Æ´Ï°í, PWM_OUTPUTÀ̶ó°í Á¤ÀÇÇØ ÁØ´Ù.
¿¡µðÅ͸¦ Á¾·áÇÏ¸é¼ ÀúÀåÀ» ÇÑ ÈÄ¿¡, ºôµå ÇØ º¸ÀÚ.
$ gcc pwm.c –o pwm –I/usr/local/include –L/usr/local/lib –lwiringPi
$ sudo ./pwm
º° ¹®Á¦ ¾ø´Ù¸é ºôµå°¡ Á¤»óÀûÀ¸·Î ¿Ï·áµÇ°í, ½ÇÇàÀ» ½ÃÄÑ º¸¸é LED 2(OUTPUT 1)°¡ ¹à¾Æ Á³´Ù°¡ ¾îµÎ¿ö Áö´Â µ¿ÀÛÀ» ¹Ýº¹ÇÒ °ÍÀÌ´Ù.
¾Æ·¡ µ¿¿µ»óÀ» Çѹø È®ÀÎÇØ º¸ÀÚ.