17. GPIO-ÀÔ·Â ½ÇÇè
À̹ø °Á¿¡¼´Â Àú¹ø °Á¿¡ À̾î C ¾ð¾î¸¦ ÀÌ¿ëÇÑ GPIO ÀÔ·Â ½ÇÇè¿¡ ´ëÇؼ ¾Ë¾Æ º¸µµ·Ï ÇÑ´Ù
ÄÚµå ÀÔ·ÂÀº ¸¶Âù°¡Áö·Î nano¸¦ ÀÌ¿ëÇÏÁö¸¸, ¿¡µðÅÍ´Â »ç¿ëÀÚ°¡ »ç¿ëÇϱ⿡ Æí¸®ÇÑ °ÍÀ» »ç¿ëÇصµ µÈ´Ù.
ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº µ¿ÀÛÀ» Çϵµ·Ï ÀÛ¼ºÇØ º»´Ù.
SW1(GPIO 4) -> LED1(GPIO 0)
SW2(GPIO 5) -> LED2(GPIO 1)
SW3(GPIO 6) -> LED3(GPIO 2)
SW4(GPIO 7) -> LED4(GPIO 3)
$ cd gpio
$ sudo nano sw_led.c
int main(void)
{
int value = 0;
if(wiringPiSetup() == -1){
printf("Please Setup wiringPi");
return 1;
}
pinMode(0, OUTPUT); // GPIO ¸ðµå ¼³Á¤
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
while(1){
value = digitalRead(4); // SW1(GPIO4)¸¦ Àоî¼
digitalWrite(0, value); // LED1(GPIO0)¿¡ Ãâ·Â
value = digitalRead(5);
digitalWrite(1, value);
value = digitalRead(6);
digitalWrite(2, value);
value = digitalRead(7);
digitalWrite(3, value);
}
return 0;
}
|
ÀÛ¼ºÀÌ ´Ù ³¡³µÀ¸¸é, Ctrl+X ÈÄ¿¡ ÀúÀåÀ» ÇÏ°í ¿¡µðÅ͸¦ Á¾·áÇÏ¸é µÈ´Ù. À§ Äڵ带 º¸¸é, óÀ½ ³ª¿Â ÇÔ¼ö°¡ º¸ÀδÙ.
digitalRead(pin)Àº ÇØ´ç pin °ªÀ» Àоî¼, LOW³ª HIGH(0, 1)À» ¸®ÅÏÇØ ÁÖ´Â ÇÔ¼öÀÌ´Ù
±× ¿ÜÀÇ ÇÔ¼ö´Â ÀÌÀü °Á¿¡¼ ´Ù·ð±â ¶§¹®¿¡, º°µµ·Î ¼³¸íÀ» ÇÏÁö ¾Ê´Â´Ù. ±â¾ïÀÌ ³ªÁö ¾ÊÀ¸¸é ÀÌÀü °Á¸¦ Âü°íÇϱ⠹ٶõ´Ù.
´Ù½Ã Çѹø °Á¶ÇÏÁö¸¸, ¿©±â¿¡ »ç¿ëµÇ´Â API´Â GordonÀ̶ó´Â »ç¶÷ÀÌ ¸¸µç ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇؼ ½ÇÇèÇÏ´Â °ÍÀ̱⠶§¹®¿¡ ¹Ýµå½Ã wiringPi ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ°í ÀÖ´Ù´Â °ÍÀ» ±â¾ïÇϱ⠹ٶõ´Ù.
Âü°í https://projects.drogon.net/raspberry-pi/wiringpi/
±×·³, À§ Äڵ带 ºôµå ÇØ º¸ÀÚ.
$ gcc sw_led.c –o sw_led –I/usr/local/include –L/usr/local/lib –lwiringPi
$ sudo ./sw_led
ºôµå ÈÄ¿¡ ½ÇÇà ÆÄÀÏÀ» ½ÇÇà ÇÑ ÈÄ¿¡, SW1 ~ SW4±îÁö ´·¯ º¸¸é °¢°¢ LED1 ~ LED4°¡ ½ºÀ§Ä¡ÀÇ »óÅ¿¡ µû¶ó ON/OFFµÇ¸é ¹®Á¦¾øÀÌ µ¿ÀÛÇÏ´Â °ÍÀÌ´Ù.
¾Æ·¡ µ¿¿µ»óÀ» È®ÀÎ ÇØ º¸µµ·Ï ÇÑ´Ù.
À̹ø °Á´ ½ºÀ§Ä¡¸¦ ÀÌ¿ëÇÑ GPIO ÀԷ¿¡ ´ëÇÑ C ¾ð¾î Äڵ带 ÀÛ¼ºÇØ º¸¾Ò´Ù. ´Ù¼Ò °£´ÜÇÑ ÄÚµåÀ̱⠶§¹®¿¡ ÀÌÇØ¿¡´Â ¹®Á¦°¡ ¾øÀ» °ÍÀ¸·Î »ý°¢µÈ´Ù.
´ÙÀ½ °Á¿¡¼´Â PWM Ãâ·Â¿¡ ´ëÇؼ ¾Ë¾Æ º¸µµ·Ï ÇÏÀÚ.