Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4263872
  • 博文数量: 776
  • 博客积分: 13014
  • 博客等级: 上将
  • 技术积分: 10391
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-22 17:00
文章分类

全部博文(776)

文章存档

2015年(55)

2014年(43)

2013年(147)

2012年(20)

2011年(82)

2010年(429)

分类: LINUX

2013-10-17 15:26:50



代码:(key.rar)

点击(此处)折叠或打开


  1. //ADKeyboard Module
  2. //Developed by DFRobot.com
  3. //Last modified 30/11/2011
  4. //Version 1.0
  5. int adc_key_val[5] = {50, 200, 400, 600, 800 };
  6. int NUM_KEYS = 5;
  7. int adc_key_in;
  8. int key = -1;
  9. int oldkey = -1;


  10. // Convert ADC value to key number
  11. int get_key(unsigned int input)
  12. {
  13.     int k;
  14.     for (k = 0; k < NUM_KEYS; k++)
  15.     {
  16.         if (input < adc_key_val[k])
  17.             return k;
  18.     }
  19.     if (k >= NUM_KEYS)k = -1; // No valid key pressed
  20.     return k;
  21. }

  22. void setup()
  23. {
  24.     pinMode(13, OUTPUT); //we'll use the debug LED to output a heartbeat
  25.     Serial.begin(9600); // 9600 bps
  26. }

  27. void loop()
  28. {
  29.     adc_key_in = analogRead(0); // read the value from the sensor
  30.     digitalWrite(13, LOW);
  31.     key = get_key(adc_key_in); // convert into key press

  32.     if (key != oldkey) // if keypress is detected
  33.     {
  34.         delay(50); // wait for debounce time
  35.         adc_key_in = analogRead(0); // read the value from the sensor
  36.         key = get_key(adc_key_in); // convert into key press
  37.         if (key != oldkey)
  38.         {
  39.             oldkey = key;
  40.             if (key >= 0)
  41.             {
  42.                 digitalWrite(13, HIGH);
  43.                 switch(key)
  44.                 {
  45.                 case 0:Serial.println("S1 OK");
  46.                     break;
  47.                 case 1:Serial.println("S2 OK");
  48.                     break;
  49.                 case 2:Serial.println("S3 OK");
  50.                     break;
  51.                 case 3:Serial.println("S4 OK");
  52.                     break;
  53.                 case 4:Serial.println("S5 OK");
  54.                     break;
  55.                 }
  56.             }
  57.         }
  58.     }
  59.     delay(100);
  60. }

阅读(5103) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~