佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2586|回复: 25

IR RX(CCSC)

[复制链接]
发表于 11-3-2009 11:35 AM | 显示全部楼层 |阅读模式
1。 应用 :Rolling Code security system
2。用途:
学校FYP
3。需要效果 :
当我成功transmit一个code, 这个code就会变. 所以我是要做双向的.. transmitter send code to RX. 接收器会再send一个signal回去TX告诉它"现在可以变你的Code" 了..暂时想要用LCD..
4。遇到的问题:
不知道RX有没成功received我的Code
5。经过什么试验/检查 :
breadboard .. 不成功.. 暂时不想出PCB先.
6. 电路图 :
7。 对于问题的头绪/见解:就是不懂什么问题.
.8。对于问题需要的解决方案:
9。资金/资源
全部 Max RM500

[ 本帖最后由 蒙恩健太 于 11-3-2009 05:13 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 11-3-2009 11:43 AM | 显示全部楼层
原帖由 蒙恩健太 于 11-3-2009 11:35 AM 发表
请帮帮忙, 我已经爬完这里所有关于IR的贴。 但是,我就是找不到解决方法。 我的FYP 就要截止了。。 但是,在Coding还是有很多问题。 我的东西是这样。 我自己做TX 和RX 。 在TX那边会send 8 bits data.然后用built  ...

这个看了吗?

【教学】简易IR 遥控电路
http://cforum3.cari.com.my/viewthread.php?tid=1159631
回复

使用道具 举报

 楼主| 发表于 11-3-2009 12:10 PM | 显示全部楼层
原帖由 pic 于 11-3-2009 11:43 AM 发表

这个看了吗?

【教学】简易IR 遥控电路
http://cforum3.cari.com.my/viewthread.php?tid=1159631

是,版主。看过好多边。我明白。。但是你后面说的什么rising time 什么的就不明白。。.但是,我还是想不到。 这里说的是一个signal(一个"bit" ) .但是我是send data. 加start bit 共有9个bits.. 我知道可以用timer辅助, 但是,我没有idea怎样写。。 我检查了我的TSOP1138,成功收到了。。但是,要怎样去capture 那个data,我就没idea.还有。。 我还要compare我的security code.我做的就像是send一个password去on我的东西。。唉。。 真的不知道该怎么办。。

[ 本帖最后由 蒙恩健太 于 11-3-2009 12:14 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 11-3-2009 12:14 PM | 显示全部楼层
我知道其实是很简单的东西。。但是。。我就是想不到了。。 而且。。 时间要到了。。 没那么多时间去研究。 我的报告还没开始。。 我已经死在 RX 这里很久了。。 对不起大家了。。
回复

使用道具 举报

发表于 11-3-2009 12:35 PM | 显示全部楼层
原帖由 蒙恩健太 于 11-3-2009 12:14 PM 发表
我知道其实是很简单的东西。。但是。。我就是想不到了。。 而且。。 时间要到了。。 没那么多时间去研究。 我的报告还没开始。。 我已经死在 RX 这里很久了。。 对不起大家了。。


要别人帮你, 你就要让别人明白你要做的。。。
现在只知道你要用UART 送Data, 但是过后要做什么?
你现在只是拆一个问题来讲, 但我们希望知道你的整个应用, 不要隐瞒什么的。。
因为方法有很多种, 你可能知道其中一种, 但我们可以建议其他的方法。。。

要自救, 按 【指南】开帖格式发过你的问题。
请不要省略任何一项, 如果不适用于你请放"N.A." (not applicable)
回复

使用道具 举报

 楼主| 发表于 11-3-2009 05:05 PM | 显示全部楼层
这是我暂时能想到的TX的Code
  1. #include <16F877A.h>
  2. #fuses HS,NOWDT,NOBROWNOUT,PUT,NOPROTECT,NOLVP
  3. #use delay(clock=20000000)
  4. #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
  5. #BYTE PORTB = 0x06
  6. #BYTE PORTC = 0x07
  7. #BYTE PORTD = 0x08

  8. void send_data(char code)
  9. {
  10.       char temp, whichbit;
  11.       setup_ccp1(CCP_PWM);
  12.       set_pwm1_duty(263L); //38kHz,50%duty
  13.       delay_us(800);
  14.       whichBit = 0;
  15.       while(whichBit<8)
  16.          {
  17.             temp = 1 << whichBit;
  18.             if ((code & temp)==0)
  19.             {
  20.                setup_ccp1(CCP_PWM);
  21.                set_pwm1_duty(263L);
  22.                delay_us(800);
  23.             }
  24.             
  25.             else
  26.             {
  27.                setup_ccp1(CCP_OFF);
  28.                delay_us(800);
  29.             }
  30.       
  31.             whichBit++;
  32.          }
  33.    
  34.       setup_ccp1(CCP_OFF);
  35.       delay_us(800);
  36. }
  37.       

  38. void main(){
  39. //initialize variables
  40. char code,cmd;
  41. int  z, CAcode,x=5;

  42. //initialize timer2 for PWM use
  43. setup_timer_2(T2_DIV_BY_1,132,1);

  44. printf("Enter the Command\n\r");
  45. printf("O - Open the Door\n\r");
  46. printf("C - Close the Door\n\r");
  47. printf("R - Reset the system\n\r");

  48. while (1)
  49. {   
  50.    
  51.    //cyclic algorithm equation   
  52.    z = (x*x*x + x*x + 1);
  53.    CAcode = z % 256;  
  54.    
  55.    //get inputs from PC
  56.    cmd=getc();
  57.       
  58. if ((cmd=='O')||(cmd=='o'))
  59. {
  60.    code = (CAcode | 0b00000001);
  61.     do
  62.     {
  63.        send_data(code);
  64.        delay_ms(50);
  65.     }while(input(pin_B0));
  66.     x++;
  67. }

  68.   if ((cmd=='C')||(cmd=='c'))
  69. {
  70.     code = (CAcode & 0b11111110);

  71.     do
  72.     {
  73.        send_data(code);
  74.        delay_ms(50);
  75.     }while(input(pin_B0));
  76.     x++;
  77. }

  78.   if ((cmd=='R')||(cmd=='r'))
  79. {
  80.     code = 0b11001011;
  81.     do
  82.     {
  83.        send_data(code);
  84.        delay_ms(10);
  85.     }while(input(pin_B0));
  86.     x = 5;
  87. }               
  88. }
  89. }
复制代码

[ 本帖最后由 pic 于 11-3-2009 07:05 PM 编辑 ]
回复

使用道具 举报

Follow Us
 楼主| 发表于 11-3-2009 05:10 PM | 显示全部楼层
我暂时能想到的RX...
  1. #include <16F877A.h>
  2. #fuses HS,NOWDT,NOBROWNOUT,PUT
  3. #use delay(clock=20000000)
  4. #BIT PIRTMR2IF = 0x0c.1
  5. #BYTE PORTD = 0x08
  6. #use fast_io(B)



  7. //LCD Program
  8. struct lcd_pin_map {                 // This structure is overlayed
  9.            BOOLEAN enable;           // on to an I/O port to gain
  10.            BOOLEAN rs;               // access to the LCD pins.
  11.            BOOLEAN rw;               // The bits are allocated from
  12.            BOOLEAN unused;           // low order up.  ENABLE will
  13.            int     data : 4;         // be pin B0.
  14. } lcd;
  15.         
  16. #locate lcd = getenv("sfrORTD")    // This puts the entire structure over the port
  17. #define set_tris_lcd(x) set_tris_d(x)
  18. #define lcd_type 2           // 0=5x7, 1=5x10, 2=2 lines
  19. #define lcd_line_two 0x40    // LCD RAM address for the second line

  20. BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
  21.                              // These bytes need to be sent to the LCD
  22.                              // to start it up.


  23.                              // The following are used for setting
  24.                              // the I/O port direction register.

  25. struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; // For write mode all pins are out
  26. struct lcd_pin_map const LCD_READ = {0,0,0,0,15}; // For read mode data pins are in

  27. BYTE lcd_read_byte() {
  28.       BYTE low,high;
  29.       set_tris_lcd(LCD_READ);
  30.       lcd.rw = 1;
  31.       delay_cycles(1);
  32.       lcd.enable = 1;
  33.       delay_cycles(1);
  34.       high = lcd.data;
  35.       lcd.enable = 0;
  36.       delay_cycles(1);
  37.       lcd.enable = 1;
  38.       delay_us(1);
  39.       low = lcd.data;
  40.       lcd.enable = 0;
  41.       set_tris_lcd(LCD_WRITE);
  42.       return( (high<<4) | low);
  43. }

  44. void lcd_send_nibble( BYTE n ) {
  45.       lcd.data = n;
  46.       delay_cycles(1);
  47.       lcd.enable = 1;
  48.       delay_us(2);
  49.       lcd.enable = 0;
  50. }

  51. void lcd_send_byte( BYTE address, BYTE n ) {

  52.       lcd.rs = 0;
  53.       while ( bit_test(lcd_read_byte(),7) ) ;
  54.       lcd.rs = address;
  55.       delay_cycles(1);
  56.       lcd.rw = 0;
  57.       delay_cycles(1);
  58.       lcd.enable = 0;
  59.       lcd_send_nibble(n >> 4);
  60.       lcd_send_nibble(n & 0xf);
  61. }

  62. void lcd_init() {
  63.     BYTE i;
  64.     set_tris_lcd(LCD_WRITE);
  65.     lcd.rs = 0;
  66.     lcd.rw = 0;
  67.     lcd.enable = 0;
  68.     delay_ms(15);
  69.     for(i=1;i<=3;++i) {
  70.        lcd_send_nibble(3);
  71.        delay_ms(5);
  72.     }
  73.     lcd_send_nibble(2);
  74.     for(i=0;i<=3;++i)
  75.        lcd_send_byte(0,LCD_INIT_STRING);
  76. }

  77. void lcd_gotoxy( BYTE x, BYTE y) {
  78.    BYTE address;

  79.    if(y!=1)
  80.      address=lcd_line_two;
  81.    else
  82.      address=0;
  83.    address+=x-1;
  84.    lcd_send_byte(0,0x80|address);
  85. }

  86. void lcd_putc( char c) {
  87.    switch (c) {
  88.      case '\f'   : lcd_send_byte(0,1);
  89.                    delay_ms(2);
  90.                                            break;
  91.      case '\n'   : lcd_gotoxy(1,2);        break;
  92.      case '\b'   : lcd_send_byte(0,0x10);  break;
  93.      default     : lcd_send_byte(1,c);     break;
  94.    }
  95. }

  96. char lcd_getc( BYTE x, BYTE y) {
  97.    char value;

  98.     lcd_gotoxy(x,y);
  99.     while ( bit_test(lcd_read_byte(),7) ); // wait until busy flag is low
  100.     lcd.rs=1;
  101.     value = lcd_read_byte();
  102.     lcd.rs=0;
  103.     return(value);
  104. }

  105. void feedback()
  106. {
  107.    
  108.    setup_ccp1(CCP_PWM);
  109.    set_pwm1_duty(263L);
  110.    delay_ms(10);
  111. }

  112. void main(){

  113. //initialize variables
  114. char whichBit, temp, total,test;
  115. int code,z,x=5;

  116. //Setup PortB
  117. set_tris_b(0xff);
  118. port_b_pullups (TRUE);


  119. setup_timer_2(T2_DIV_BY_1,132,1);

  120. while(1)
  121. {  output_low(pin_D0);
  122.    whichBit = 0;
  123.       total = 0;
  124.    lcd_init();
  125.    lcd_putc("\f");
  126.    lcd_gotoxy(1,1);
  127.    lcd_putc("Standby Mode");
  128.    delay_ms(100);*/
  129.    
  130.      while(!input(Pin_B0)){
  131.   
  132.       delay_us(1000);
  133.       
  134.       while(whichBit<8)
  135.       {  
  136.        if(!input(PIN_B0))
  137.        {
  138.           temp = 1 << whichBit;
  139.           total += temp;
  140.        }
  141.           whichBit++;
  142.           delay_us(800);
  143.       }   

  144.       z = (x*x*x + x*x + 1);
  145.       code = z % 256;
  146.       test = (code & 0b11111110);
  147.      
  148.      if((total&0b11111110) == test)
  149.          {
  150.             if((total&0b00000001)==1)
  151.             {   output_high(Pin_D0);
  152.                
  153.                lcd_putc("\f");
  154.                lcd_gotoxy(1,1);
  155.                lcd_putc("Signal Received");
  156.                lcd_gotoxy(1,2);
  157.                lcd_putc("Please Wait!");
  158.                delay_ms(5000);
  159.                lcd_putc("\f");
  160.                lcd_gotoxy(1,1);
  161.                lcd_putc("Opening..");
  162.                delay_ms(5000);
  163.                lcd_putc("\f");
  164.                lcd_gotoxy(1,1);
  165.                lcd_putc("done");
  166.                delay_ms(5000);
  167.                feedback();
  168.                x++;
  169.             }
  170.            if((total&0b00000001)==0)
  171.             {output_high(Pin_D1);

  172.             lcd_putc("\f");
  173.             lcd_gotoxy(1,1);
  174.             lcd_putc("Signal Received");
  175.             lcd_gotoxy(1,2);
  176.             lcd_putc("Please Wait!");
  177.             delay_ms(5000);
  178.             lcd_putc("\f");
  179.             lcd_gotoxy(1,1);
  180.             lcd_putc("Closing..");
  181.             delay_ms(5000);
  182.             lcd_putc("\f");
  183.             lcd_gotoxy(1,1);
  184.             lcd_putc("done");
  185.             delay_ms(5000);
  186.             feedback();
  187.             x++;
  188.             }
  189.         }
  190.       if (total == 0b11001011)
  191.       {
  192.          x=5;
  193.          feedback();
  194.       }*/  
  195.    }
  196. }   




复制代码

[ 本帖最后由 pic 于 11-3-2009 07:04 PM 编辑 ]
回复

使用道具 举报

发表于 11-3-2009 06:12 PM | 显示全部楼层

回复 7# 蒙恩健太 的帖子

请看 5# 吧。
回复

使用道具 举报


ADVERTISEMENT

发表于 11-3-2009 07:02 PM | 显示全部楼层
原帖由 蒙恩健太 于 11-3-2009 11:35 AM 发表
1。 应用 :Rolling Code security system
2。用途:
学校FYP
3。需要效果 :
当我成功transmit一个code, 这个code就会变. 所以我是要做双向的.. transmitter send code to RX. 接收器会再send一个signal回去TX告诉它"现在可以变你的Code" 了..暂时想要用LCD..

唉·~~
可怜~理论都错了。。如果不说出应用, 继续错下去。。。

滚码(Rolling code )不是这样搞的。。。
(也有可能我错啦。。。)

建议:
1. 它是单向的, 并不是双向。。。
2. 你要有自己的运算法(algorithm),这就是你的秘密。
3. 滚码TX, 每次送出不一样的码
4. 但是RX 就是知道怎样解码。。。
5. 运算法, 你自己先想想。。可能像checksum 那种算法, 或自由发挥

以上是简单的版本, 或你要复杂的吗?
复杂的版本要学习TX 的counter, 好像汽车用的, 但是, 有一个要注意的,
就是每一次 RX 都一定能解码?会不会解不到?呵呵。。。
听不懂? 不要紧, 不要管他, 你用简单版本, 上面是给其他人看的。

理论要先对, 然后我们才谈电路设计,好吗?
回复

使用道具 举报

 楼主| 发表于 11-3-2009 07:18 PM | 显示全部楼层
原帖由 pic 于 11-3-2009 07:02 PM 发表 唉·~~可怜~理论都错了。。如果不说出应用, 继续错下去。。。滚码(Rolling code )不是这样搞的。。。(也有可能我错啦。。。)建议:1. 它是单向的, 并不是双向。。。2. 你要有自己的运 ...
好.. 谢谢版主. 你的耐心教导,我真的很感动.. 因为我真的想要放弃了..
我会自己再去找简单的计算法.. 好好思考我的理论.. 谢谢... 我只要最简单的方法.. 等结束后再去研究...
回复

使用道具 举报

发表于 11-3-2009 11:57 PM | 显示全部楼层
原帖由 pic 于 11-3-2009 07:02 PM 发表
复杂的版本要学习TX 的counter, 好像汽车用的, 但是, 有一个要注意的,
就是每一次 RX 都一定能解码?会不会解不到?呵呵。。。


汽车用的是不是有限定次数的?比如说如果你吃饱没事做,在接收范围之外按 Tx,超过一定次数后,你就开不道车门了。得拿回去给人 reset。
回复

使用道具 举报

发表于 12-3-2009 12:10 AM | 显示全部楼层
原帖由 蒙恩健太 于 11-3-2009 07:18 PM 发表
我会自己再去找简单的计算法

所谓简单的运算法, 可以很简单很简单, 不一定要做到像KeeLoq 那么强。
只要不重复就可以了, 可以结合随机数字, 如timer 产生的16bit 号码, 然后算出一个或几个数字, 方法是你定的, 只要接收机能解, 能还原就可以了。 你也可能可以用查表(lookup table)的方式来做。

滚码是单向的, 如汽车遥控, 他只是发射而已, 而接收机懂得解。 真正的是用KeeLoq 的技术, 我们不会知道他的Algorithm, 到目前好像也没人可以破解。


1. 电路方面, 你可以利用PIC MCU 的USART (TX)来发射和接收, 就好象RS232那样, 你根本不用理那么多, 不用理那些什么Start bit , data bit 之类的, 最难的问题解决了。

2. 用IR 发射, 你需要carrier 载波, 也就是38Khz, 如果你用的是TSOP1138.
38Khz 用PWM 来做,这个38Khz 你就开着, 不要管他。 第二个问题又解决了。

3. 再来, 然后你要送一个bit 1, 你就要在那个bit的时间里把IR 开关38千次。
如何呢? 你可以用AND gate , 也就是PWM “AND”  MCU TX 的bit, 来开关控制你的IR LED, 第三个问题又解决了。 当然更简单, 你也可以用Transistor, 然后transistor开关那个PWM。

4. 要确保成功, 你可以用很慢的baud rate 如1200bps。

5. 接收的部分, 更简单, TSOP 接去MCU 的RX 就可以了。

你能理解吗? 不理解我明天补上图你就懂了。
祝你成功。



我只要最简单的方法.. 等结束后再去研究...

关于这句“等结束后再去研究...”, 我不以为然,你还是收回这句话吧。。。
结束后, 你99.9% 是不会再去研究的。, 包挂我自己, 都有这个毛病。
回复

使用道具 举报

发表于 12-3-2009 12:13 AM | 显示全部楼层
原帖由 waiweng83 于 11-3-2009 11:57 PM 发表
汽车用的是不是有限定次数的?比如说如果你吃饱没事做,在接收范围之外按 Tx,超过一定次数后,你就开不道车门了。得拿回去给人 reset。

对, 没有错。那个次数, 好像是256次。
回复

使用道具 举报

 楼主| 发表于 12-3-2009 09:33 AM | 显示全部楼层
原帖由 pic 于 12-3-2009 12:10 AM 发表

所谓简单的运算法, 可以很简单很简单, 不一定要做到像KeeLoq 那么强。
只要不重复就可以了, 可以结合随机数字, 如timer 产生的16bit 号码, 然后算出一个或几个数字, 方法是你定的, 只要接收机能解, 能还原 ...

对我现在的程度, 有点点的复杂.. 不过.. 我想我明白你说的.. 让我再花点时间来消化...谢谢噢...

在这个Project..其实有点激发我继续研究PIC的兴趣咯.. 觉得很好玩.. 只是...我太笨了.. 很多东西不懂.. 希望能继续学习更多的东西.. 谢谢指导..

[ 本帖最后由 蒙恩健太 于 12-3-2009 09:51 AM 编辑 ]
回复

使用道具 举报

发表于 12-3-2009 11:35 AM | 显示全部楼层
原帖由 蒙恩健太 于 12-3-2009 09:33 AM 发表
在这个Project..其实有点激发我继续研究PIC的兴趣咯.. 觉得很好玩.. 只是...我太笨了.. 很多东西不懂.. 希望能继续学习更多的东西..


欢迎加入这个家庭 我相信你并不笨,只是经验不足。但是只要你真的有兴趣,而且不是“得个讲字“而已,多多上来这里交流,将来一定不简单。
回复

使用道具 举报

发表于 13-3-2009 12:08 PM | 显示全部楼层
原帖由 pic 于 12-3-2009 12:13 AM 发表

对, 没有错。那个次数, 好像是256次。


哦哦? 256 次? 总数还是会reset 如果之后有开到?
找别人的车来试
回复

使用道具 举报


ADVERTISEMENT

发表于 13-3-2009 12:45 PM | 显示全部楼层
原帖由 chan1314 于 13-3-2009 12:08 PM 发表
哦哦? 256 次? 总数还是会reset 如果之后有开到?
找别人的车来试

不会reset,过后RX 就不懂得如何解TX的rolling code了。

PIC12F635, 16F636 有内建 KEELOQ
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2074&redirects=keeloq

回复

使用道具 举报

 楼主| 发表于 16-3-2009 05:45 PM | 显示全部楼层
我试了几天还是不行.. 我太笨了... @.@"关于那个计算的 ,我还在努力的消化中..

目前我找到的是 CRC-8, 什么x^8 + X^2 +X^1+1.. 关于这个还蛮复杂的.. 还在学习中..

不过, 我现在还是transmit不到..我的TSOP 是一直send high de..当detect到38Khz的时候就会output low..所以.. TX那边是不是要用 NOR gate?? 我之前有试过用AND gate..但是还是不能.. 可能我太笨了.. code 那边有问题吧...@.@" 希望哪位高人能帮忙检查下..谢谢噢..


#include <16F876A.h>
#fuses HS,NOWDT,NOBROWNOUT,PUT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=1200, xmit=PIN_C6, rcv=PIN_C7)
#BYTE PORTB = 0x06
#BYTE PORTC = 0x07
#BYTE PORTD = 0x08

void main()
{
   char try;
   
   //initialize timer2 for PWM use
   setup_timer_2(T2_DIV_BY_1,132,1);
  
   set_tris_b(0xff);
   while (1){
   
   if(input(pin_B0)){
   
   setup_ccp1(CCP_PWM);
   set_pwm1_duty(263L); //38kHz,50%duty
   putc(try);
   
   }

   setup_ccp1(CCP_OFF);
   }

   }

RXcode
#include <16F877A.h>
#fuses HS,NOWDT,NOBROWNOUT,PUT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=1200, xmit=PIN_C6, rcv=PIN_C7)
#BYTE PORTB = 0x06
#BYTE PORTC = 0x07
#BYTE PORTD = 0x08

void main()
{
   char try;
  
   set_tris_d(0x00);
   
   while (1){
   output_low(pin_D0);
   delay_ms(1000);
   if(kbhit()){
   try = getc();
   
   if(try =='a')
   {
      output_high(pin_D0);
      delay_ms(5000);
      output_low(pin_D0);
      delay_ms(5000);
   }
   }
   }
}

[ 本帖最后由 蒙恩健太 于 16-3-2009 08:57 PM 编辑 ]
回复

使用道具 举报

发表于 16-3-2009 11:19 PM | 显示全部楼层
原帖由 蒙恩健太 于 16-3-2009 05:45 PM 发表
我试了几天还是不行.. 我太笨了... @.@"关于那个计算的 ,我还在努力的消化中..

目前我找到的是 CRC-8, 什么x^8 + X^2 +X^1+1.. 关于这个还蛮复杂的.. 还在学习中..

不过, 我现在还是transmit不到..我的TSOP 是 ...

你不是笨, 只是在钻牛角尖。。。

【教学】简易IR 遥控电路  (16/03/2009 新增4ch 遥控概念)
http://cforum3.cari.com.my/viewthread.php?tid=1159631&page=1&extra=#pid40194642

我不直接给你答案, 但你看明白我上面的教学后, 你的疑惑应该可以立即解50%, 另50% 就看你的运算法吧。。。
其实不要想那么复杂, 可能只是简单的加减乘除, 比如x=x+2×3/2之类的,你还真的要做到像KEELOQ那样, 你就发达咯。。。呵呵。。

大家也来帮楼主想运算法吧, 就当作是练习好了。。
回复

使用道具 举报

 楼主| 发表于 16-3-2009 11:25 PM | 显示全部楼层
原帖由 pic 于 16-3-2009 11:19 PM 发表 你不是笨, 只是在钻牛角尖。。。【教学】简易IR 遥控电路  (16/03/2009 新增4ch 遥控概念)http://cforum3.cari.com.my/viewthread.php?tid=1159631&amp;page=1&extra=#pid40194642我不直接给你答案, 但你 ...

版主.. 我真的很感动.. 你为了我另外再写个教学(明眼人看到都知道你是为我写的..,因为所有的东西都是我需要的.. ) 谢谢噢..我会努力的.. 谢谢..我现在就去消化你的教学..谢谢..&#160;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 1-2-2025 04:19 PM , Processed in 0.173831 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表