久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4940|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于arduino的紅外遙控比賽記分器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

和朋友們一起打球會不會經(jīng)常遇到忘記分?jǐn)?shù)的情況,能夠?qū)P拇蚯蚨挥梅中氖且患嗝磹芤獾氖虑,有一塊屬于自己場地的記分牌在吸引眼球的同時也能讓朋友們更專心認(rèn)真的打球。那就讓我們來發(fā)揚(yáng)極客精神,自己動手做一個吧!



這臺“基于arduino的紅外遙控比賽記分器”采用arduino UNO 、四塊8*8紅色點(diǎn)陣模塊和紅外遙控接收模塊組成,可以通過紅外線遙控器更新比賽分?jǐn)?shù)和設(shè)置發(fā)球方,遙控有效距離不小于10米,可由一個隨身電源供電。


硬件使用MAX7219點(diǎn)陣模塊作為顯示輸出,采用級聯(lián)接法,使用Max72xxPanel和Adafruit_GFX庫驅(qū)動,輕松實(shí)現(xiàn)多種組合輸出。具體接線方法在附件的代碼中有描述,或請參考論壇內(nèi)其它相關(guān)帖子。




此記分器經(jīng)過羽毛球場地測試,性能穩(wěn)定,霸氣實(shí)用,獲得一致好評,希望愛折騰的你能將它應(yīng)用于其它運(yùn)動,謝謝。

全部制作資料及源碼下載: score.rar (83.43 KB, 下載次數(shù): 11)


部分源碼預(yù)覽:


  1. int RECV_PIN = A0;
  2. IRrecv irrecv(RECV_PIN);
  3. decode_results results;

  4. int pinCS = 10; // Attach CS to this pin, DIN to MOSI and CLK to SCK (cf [url]http://arduino.cc/en/Reference/SPI[/url] )
  5. int numberOfHorizontalDisplays = 4;
  6. int numberOfVerticalDisplays = 1;

  7. int pinRightPlus = 4;
  8. int pinRightReduce = 5;
  9. int pinLeftPlus = 6;
  10. int pinLeftReduce = 7;

  11. unsigned long leftPlusCode = 0xFD807F;
  12. unsigned long LeftReduceCode = 0xFDA05F;
  13. unsigned long rightPlusCode = 0xFD40BF;
  14. unsigned long rightReduceCode = 0xFD609F;
  15. unsigned long resetCode = 0xFD00FF;
  16. unsigned long fireChg = 0xFD20DF;

  17. Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

  18. int leftScore=0;
  19. int rightScore=0;
  20. uint8_t whoFire = 0; //0:none,1:left,2:right

  21. void setup() {
  22.   pinMode(pinRightPlus, INPUT);
  23.   pinMode(pinRightReduce, INPUT);
  24.   pinMode(pinLeftPlus, INPUT);
  25.   pinMode(pinLeftReduce, INPUT);

  26.   matrix.setIntensity(1); // Use a value between 0 and 15 for brightness

  27.   //Serial.begin(9600);
  28.   irrecv.enableIRIn(); // Start the receiver
  29. }

  30. void checkIR()
  31. {
  32.   if (irrecv.decode(&results)) {
  33.     //Serial.println(results.value, HEX);
  34.    
  35.     if (results.value==leftPlusCode)
  36.     {
  37.       leftScore++;
  38.       if(leftScore>99)
  39.       {
  40.         leftScore=99;
  41.       }
  42.       whoFire=1;
  43.     }
  44.     else if(results.value==fireChg)
  45.     {
  46.       //0:none,1:left,2:right
  47.       if(whoFire==0)
  48.       {
  49.         whoFire=1;
  50.       }
  51.       else if(whoFire==1)
  52.       {
  53.         whoFire=2;
  54.       }
  55.       else if(whoFire==2)
  56.       {
  57.         whoFire=1;
  58.       }
  59.     }
  60.     else if(results.value==LeftReduceCode )
  61.     {
  62.       leftScore--;
  63.       if(leftScore<0)
  64.       {
  65.         leftScore=0;
  66.       }
  67.     }
  68.     else if(results.value==rightPlusCode )
  69.     {
  70.       rightScore++;
  71.       if(rightScore>99)
  72.       {
  73.         rightScore=99;
  74.       }
  75.       whoFire=2;
  76.     }
  77.     else if(results.value==rightReduceCode )
  78.     {
  79.       rightScore--;
  80.       if(rightScore<0)
  81.       {
  82.         rightScore=0;
  83.       }
  84.     }
  85.     else if(results.value==resetCode )
  86.     {
  87.       leftScore=0;
  88.       rightScore=0;
  89.       whoFire=0;
  90.     }

  91.     irrecv.resume(); // Receive the next value
  92.   }
  93. }

  94. void loop() {

  95.   checkIR();
  96.   drawScreen();

  97.   delay(400);
  98. }

  99. void drawScreen()
  100. {
  101.   matrix.fillScreen(LOW);

  102.   drawLeftScore();
  103.   drawRightScore();
  104.   drawArr();

  105.   matrix.write(); // Send bitmap to display
  106. }

  107. void drawArr()
  108. {
  109.   //0:none,1:left,2:right
  110.   if(whoFire == 1)
  111.   {
  112.     matrix.drawPixel(0, 3, HIGH);
  113.     matrix.drawLine(1, 2, 1, 4, HIGH);
  114.     matrix.drawLine(2, 1, 2, 5, HIGH);
  115.   }
  116.   else if(whoFire == 2)
  117.   {
  118.     matrix.drawPixel(31, 3, HIGH);
  119.     matrix.drawLine(30, 2, 30, 4, HIGH);
  120.     matrix.drawLine(29, 1, 29, 5, HIGH);
  121.   }
  122. }

  123. void drawLeftScore()
  124. {
  125.   uint8_t score10 = leftScore/10;
  126.   uint8_t score1 = leftScore%10;

  127.   matrix.drawChar(4, 0,score10+48, HIGH, LOW, 1);
  128.   matrix.drawChar(10, 0,score1+48, HIGH, LOW, 1);
  129. }

  130. void drawRightScore()
  131. {
  132.   uint8_t score10 = rightScore/10;
  133.   uint8_t score1 = rightScore%10;

  134.   matrix.drawChar(17, 0,score10+48, HIGH, LOW, 1);
  135.   matrix.drawChar(23, 0,score1+48, HIGH, LOW, 1);

  136. }

復(fù)制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区三区在线 | 欧美一级片在线 | 在线看一区二区三区 | 久久久性色精品国产免费观看 | 国产亚洲一区二区三区在线观看 | 日韩喷潮 | 国内精品久久久久久久 | 亚洲成人国产精品 | 国产精品资源在线 | 在线视频中文字幕 | 日本精品一区二区在线观看 | 91资源在线| 日韩色视频 | 国产成人精品一区二区在线 | 日韩精品1区2区3区 爱爱综合网 | 麻豆一区二区三区精品视频 | 国产精品国产a | 色综合天天综合网国产成人网 | 欧美成人激情 | 国产亚洲精品久久久优势 | 国产精品99视频 | 日韩在线日韩 | 午夜男人天堂 | 三级成人在线观看 | 成人欧美一区二区三区黑人孕妇 | 手机看片1 | 午夜视频免费 | 国产精品久久久久免费 | 99精品久久久久久久 | 网址黄 | 亚洲欧洲中文 | 亚洲国产成人精品女人久久久 | 99久久精品国产一区二区三区 | 中文字幕国产精品 | 草草在线观看 | 国产精品视频免费观看 | 国产欧美精品一区二区三区 | 国产精品久久久久久吹潮 | 999久久久| 伊人超碰 | www.97国产 |