21. GPIO – ½Ã¸®¾ó Åë½Å ½ÇÇè 2
ÀÌÀü °Á¿¡¼´Â ¶óÁ¸® ÆÄÀÌÀÇ ½Ã¸®¾ó Æ÷Æ®¸¦ ÄַܼΠÀÌ¿ëÇÏ´Â ½ÇÇèÀ» ÇØ º¸¾Ò´Ù. À̹ø °Á¿¡¼´Â ½Ã¸®¾ó ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ¿© ½Ã¸®¾ó Åë½Å ½ÇÇèÀ» ÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ ¾Ë¾Æ º¸µµ·Ï ÇÏ°Ú´Ù. À̹ø °Á¿¡¼µµ ¿ª½Ã GordonÀÇ wiringPi ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇϵµ·Ï ÇÏ°Ú´Ù.
wiringPiÀÇ ¿¹Á¦¸¦ ÅëÇؼ »ç¿ë¹ýÀ» ¾Ë¾Æ º¸µµ·Ï ÇÏÀÚ.
¿¹Á¦ ÆÄÀÏÀÌ ÀÖ´Â Æú´õ·Î À̵¿ ÈÄ¿¡
pi@raspberrypi ~/wiringPi/examples $
¿¹Á¦¸¦ ·Îµå ÇØ º¸ÀÚ.
$ nano serialRead.c
#include
#include
#include
#include
int main ()
{
int fd ;
if ((fd = serialOpen ("/dev/ttyAMA0", 115200)) < 0)
{
fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;
return 1 ;
}
// Loop, getting and printing characters
for (;;)
{
putchar (serialGetchar (fd)) ;
fflush (stdout) ;
}
}
|
½Ã¸®¾ó Åë½Å °ü·Ã ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ·Á¸é, ¾Æ·¡¿Í °°ÀÌ »ç¿ëÀÚÀÇ ÇÁ·Î±×·¥¿¡ ¹Ýµå½Ã Æ÷ÇÔÇϵµ
·ÏÇÑ´Ù.
#include
Áß¿äÇÑ ÇÔ¼ö ¸î °³¸¦ »ìÆ캸µµ·Ï ÇÏÀÚ.
l int serialOpen(char *device, int baud);
ÀÌ ½Ã¸®¾ó ¿ÀÇ ÇÔ¼ö´Â ½Ã¸®¾ó Æ÷Æ®¸¦ ¿°í(open) ÃʱâÈ Çϸç, ¼Óµµ(baud rate)¸¦ ¼³Á¤ÇÏ´Â ÇÔ¼ö
ÀÌ´Ù. device´Â ¡°/dev/ttyAMA0¡±·Î ¿ÀÇ ÇÒ ½Ã¸®¾ó Æ÷Æ®¸¦ ÁöÁ¤Çϸç, baud´Â Åë½Å ¼Óµµ·Ñ ÁöÁ¤
ÇÏ¸é µÈ´Ù. ¸®ÅÏ °ªÀ¸·Î´Â ÆÄÀÏ µð½ºÅ©¸³Åͳª ¿¡·¯°¡ ÀÖÀ» °æ¿ì -1À» ³Ñ°Ü ÁØ´Ù.
l int serialGetchar(int fd);
ÀÌ ÇÔ¼ö´Â ½Ã¸®¾ó Æ÷Æ®¿¡¼ ÇÑ ¹ÙÀÌÆ®¸¦ ¹Þ¾Æ¼ ¸®ÅÏ ÇØ ÁÖ´Â ÇÔ¼öÀÌ´Ù. fd´Â ½Ã¸®¾ó Æ÷Æ®¸¦ ¿ÀÇÂ
½Ã¿¡ ¸®ÅÏ µÈ ÆÄÀÏ µð½ºÅ©¸³ÅÍÀÌ´Ù.
$ gcc –o serialRead serialRead.c –I/usr/local/include –L/usr/local/lib –lwiringPi
$ sudo ./serialRead
À§¿Í °°ÀÌ ºôµå ÈÄ¿¡ ½ÇÇà ½ÃÄÑ º»´Ù.
º»ÀÎÀº Tera Term°ú °°Àº ½Ã¸®¾ó Åë½Å ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿©, µ¿ÀÛ ½ÇÇèÀÆ ÇØ º¼ ¼öÀÖ´Ù. ½ÇÇà ÈÄ
¿¡ Tera Term¿¡¼ ÀÓÀÇ·Î ¹®ÀÚ¸¦ ÀÔ·ÂÇØ º¸¸é, »ç¿ëÀÚÀÇ Äֿܼ¡ ÀÔ·ÂµÈ ¹®ÀÚ°¡ Ãâ·ÂµÇ´Â °ÍÀ» º¼
¼ö ÀÖ´Ù.
Á÷Á¢ ºôµå ÈÄ¿¡ ½ÇÇàÇØ º¸°í, È®ÀÎ ÇØ º¸µµ·Ï ÇÏÀÚ. ½Ã¸®¾ó Åë½Å ÇÁ·Î±×·¥Àº »ç¿ëÀÚ°¡ »ç¿ëÇÏ°í
ÀÖ´Â °ÍÀº ¹¹µç °¡´ÉÇÏ´Ù.
wiringPi¿¡¼ Áö¿øÇÏ´Â ´Ù¸¥ ÇÔ¼ö´Â ´ÙÀ½°ú °°´Ù. ÇÔ¼ö À̸§À¸·Î ±â´ÉÀ» ¾Ë ¼ö ÀÖÀ¸´Ï º°µµÀÇ ¼³
¸íÀº ¾È Çϵµ·Ï ÇÏ°Ú´Ù.
l void serialClose(int fd); // openÇß´ø ½Ã¸®¾ó Æ÷Æ®¸¦ ´Ý´Â´Ù.
l void serialPutchar(int fd, unsigned char c);
l void serialPuts(int fd, char *s);
l void serialPrintf(int fd, char *message, ¡¦.);
l void serialFlush(int fd); // ¼ö½ÅµÈ ¸ðµç µ¥ÀÌÅ͸¦ »èÁ¦ÇÑ´Ù.