ตุลาคม 18, 2017, 11:41:43 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: สอบถาม การติดต่อสื่อสารระหว่างโมดูลสแกนนิ้วกับ PIC16F887 (มือใหม่)  (อ่าน 44 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Dear.Dear
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 2


| |
« เมื่อ: ตุลาคม 03, 2017, 05:38:50 pm »

สวัสดีค่ะ อยากจะรบกวนขอความรู้เกี่ยวกับการสื้อสารระหว่าง PIC16F887 กับโมดูลสแกนนิ้ว ว่าPIC มีไรเบอรี่ให้เรียกใช้งานแบบ อาดูโน่หรือป่าวค่ะ แล้วจะเขียนโค้ดติดต่อกับมันในลักษณะไหนดี เพื่อสั่งให้โมดูลทำงาน
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8267


ShadowWares


| |
« ตอบ #1 เมื่อ: ตุลาคม 11, 2017, 04:16:41 pm »

PIC มี Library เฉพาะกับอุปกรณ์บางตัวครับ ไม่มีหลากหลายเหมือน Arduino
การเขียนโปรแกรมติดต่อกับอุปกรณ์ใดๆ จะต้องทราบก่อนว่าอุปกรณ์ตัวนั้นต้องการการสื่อสารข้อมูลแบบไหน UART, I2C, SPI, ...
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
Dear.Dear
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 2


| |
« ตอบ #2 เมื่อ: ตุลาคม 13, 2017, 04:32:02 pm »

ขอบคุณค่ะ โมดูลติดต่อผ่านทางพร์อตอนุกรม UART ตอนนี้เขียนคำสั่งติดต่อสื่อสารกับตัวมันได้แล้ว แต่ยังติดปัญหาตรงข้อมูลที่โมดูลสแกนนิ้วส่งกลับมา PIC ไม่สามารถรับได้อ่ะค่ะลักษณะเหมือนรับข้อมูลมาไม่ครบ
Code: (c)
#include <16F887.H>
#include "lcd.c"
#fuses HS,NOLVP,NOWDT,NOPROTECT

#define TX PIN_C6
#define RX PIN_C7

#use delay (clock = 20M)
#use rs232(baud=57600, xmit=TX,rcv=RX)
#use fast_io(A)
#use fast_io(C)
#use fast_io(D)

int OpenLED[12]={0xEF,0x01,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x03,0x50,0x00,0x54};

int CloseLED[12]={0xEF,0x01,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x03,0x51,0x00,0x55};

int FBuf[50];
int i,Time,Step;


int FOpenLED(void)
{
   
   for(i=0;i<12;i++)
         {
            putc(OpenLED);
           
            FBuf=0;
         }

       while(!kbhit())
          {delay_us(10);}


         Time=0; Step=0;
         
        while(Time<200)
         {
         
        if(kbhit())
        {
           
           FBuf[Step] = getc();
           output_high(PIN_B0);
           lcd_gotoxy(1,1);
           printf(lcd_putc,"%X%X%X%X%X%X%X%X\n%X%X%X%X%X%X%X%X"FBuf[0],FBuf[1],FBuf[2],FBuf[3],FBuf[4],FBuf[5],FBuf[6],FBuf[7],FBuf[8],FBuf[9],FBuf[10],FBuf[11],FBuf[12],FBuf[13],FBuf[14],FBuf[15]);
           Step++;
           
         
        }
         Time++; delay_ms(5);
       
         }
         
         
}

int FCloseLED(void)
{
   
   for(i=0;i<12;i++)
         {
            putc(CloseLED);
            FBuf=0;
         }
}

 void main()
{
 
set_tris_a(0B11111111);
set_tris_c(0B10000000);
set_tris_d(0B00000000);
set_tris_b(0B11111110);
lcd_init();
delay_ms(100);
output_low(PIN_B0);
lcd_gotoxy(1,1);
printf(lcd_putc,"Hello My Finger");
while(true)
  {
if(input(PIN_A0)==0)
   {
 
   FOpenLED();
 
  delay_ms(5);
 FCloseLED();
  /
   }
  }
}
 
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8267


ShadowWares


| |
« ตอบ #3 เมื่อ: ตุลาคม 15, 2017, 05:15:28 pm »

ถ้ายังไม่สามารถรับข้อมูลได้ ยังไม่ต้องทดสอบกับ module ครับ ให้ทดสอบกับ computer ก่อน (ใช้โปรแกรม ใดๆ เช่น TeraTerm, RealTerm, HTerm, PuTTY,...) เมื่อได้แล้ว ค่อยต่อกับ module
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป: