RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用Arduino寫個(gè)搶答器

汽車電子技術(shù) ? 來(lái)源:嵌入式悅翔園 ? 作者:李斌 ? 2023-02-17 11:25 ? 次閱讀

1前言

事情是這樣的,本來(lái)在準(zhǔn)備公眾號(hào)文章,想著用tinkercad模擬一下自己寫的程序,結(jié)果無(wú)論自己如何調(diào)整程序,都無(wú)法達(dá)到預(yù)期的效果,后來(lái)經(jīng)過(guò)層層排查發(fā)現(xiàn)是被一個(gè)按鍵整破防了。

圖片

這種四腳按鍵的四個(gè)引腳在按下之前是兩兩相通的原理圖如下:

圖片

我在之前一直認(rèn)為這種按鈕的四個(gè)腳都是獨(dú)立的,并且在按下后四個(gè)腳都會(huì)相通,經(jīng)過(guò)查詢資料發(fā)現(xiàn)原來(lái)自己認(rèn)為的一直都是錯(cuò)的,這里把錯(cuò)誤分享給大家,希望大家引以為戒(應(yīng)該也不會(huì)有人像我一樣傻吧)

2效果演示

所需材料:

  • Arduinio uno開發(fā)板一個(gè)
  • 按鍵四個(gè)
  • LED燈三個(gè)
  • 電阻七個(gè)
  • 杜邦線若干

連接電路圖:圖片

實(shí)現(xiàn)功能:

1、主持人按下按鈕才能開始搶答,并且閃燈提示;

2、選手A搶答后選手B、C將無(wú)法進(jìn)行搶答;

3、主持人再次點(diǎn)擊按鈕可以恢復(fù)搶答模式,并閃燈提示;

3主程序

//定義LED燈的引腳
const int greenLed = 10;
const int yellowLed = 9;
const int redLed = 8;

//定義按鍵開關(guān)引腳
const int greenButton = 2; 
const int yellowButton = 3; 
const int redButton = 4;
const int startButton = 5; 

int r=1,y=1,b=1,s=1;  //定義三個(gè)變量存儲(chǔ)三個(gè)按鍵開關(guān)的狀態(tài)
bool ready = false;   //定義一個(gè)變量用于記錄搶答器是否就緒的狀態(tài)

void setup() {
  // put your setup code here, to run once:
  // 定義引腳輸入輸出狀態(tài)
  pinMode(redLed, OUTPUT);
  pinMode(yellowLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(redButton, INPUT);
  pinMode(yellowButton, INPUT);
  pinMode(greenLed, INPUT);
  pinMode(startButton, INPUT);

  //將LED燈的初始化狀態(tài)設(shè)定為熄滅
  digitalWrite(redLed, LOW);
  digitalWrite(yellowLed, LOW);
  digitalWrite(greenLed, LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
  // 讀取四個(gè)按鍵開關(guān)的狀態(tài)
     r = digitalRead(redButton);
     y = digitalRead(yellowButton);
     b = digitalRead(greenButton);
     s = digitalRead(startButton);

     if(s==0){  //如果主持人按下開始搶答按鈕,選手前面的LED閃爍3次
       for(int i=0;i<3;i++){
        digitalWrite(redLed, HIGH);
        digitalWrite(yellowLed, HIGH);
        digitalWrite(greenLed, HIGH);
        delay(500);
        digitalWrite(redLed, LOW);
        digitalWrite(yellowLed, LOW);
        digitalWrite(greenLed, LOW);
        delay(500);
      }
      ready = true;
     }

     //當(dāng)搶答器處于就緒狀態(tài)時(shí)
     //紅色按鍵按下
     if(ready && r==0){
      digitalWrite(redLed, HIGH);
      ready = false;
      }

      //黃色按鍵按下
     if(ready && y==0){
      digitalWrite(yellowLed, HIGH);
      ready = false;
      }

      //藍(lán)色按鍵按下
      if(ready && b==0){
      digitalWrite(greenLed, HIGH);
      ready = false;
      }       
}

4效果演示

,時(shí)長(zhǎng)00:41

[ ]

5代碼分析

在實(shí)現(xiàn)搶答環(huán)節(jié)中主要用到了if函數(shù),但是有一個(gè)參數(shù)至關(guān)重要,ready的狀態(tài)直接決定了能否進(jìn)入if循環(huán),所以使用ready = false;實(shí)現(xiàn)各個(gè)按鍵的互鎖。

判斷條件ready && y==0用來(lái)判斷是否已經(jīng)準(zhǔn)備就緒,并且其他人還未成功搶到,只有這兩種情況同時(shí)滿足才能進(jìn)入if,并將ready的狀態(tài)改為false,防止進(jìn)入其他if。

另外有的朋友可能會(huì)說(shuō)if放置的先后順序會(huì)影響結(jié)果,其實(shí)代碼的運(yùn)行速度是非??斓模⒉粫?huì)出現(xiàn)像大家想想的那種情況,所以在一定程度上還是公平的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 搶答器
    +關(guān)注

    關(guān)注

    16

    文章

    243

    瀏覽量

    34464
  • 按鈕
    +關(guān)注

    關(guān)注

    0

    文章

    134

    瀏覽量

    12768
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6468

    瀏覽量

    186951
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于數(shù)字電路的多路搶答器設(shè)計(jì)

    本文介紹一種數(shù)字電路組成的顯示優(yōu)先搶答號(hào)碼的多路搶答器的設(shè)計(jì)與制作。
    發(fā)表于 03-31 09:28 ?1.2w次閱讀
    基于數(shù)字電路的多路<b class='flag-5'>搶答器</b>設(shè)計(jì)

    #電子制作 #Arduino 搶答器小實(shí)驗(yàn)

    搶答器Arduino
    電子技術(shù)那些事兒
    發(fā)布于 :2022年08月09日 21:25:55

    求c程序 基于12864的八路搶答器

    本人大二,做個(gè)基于12864的八路搶答器,c程序不怎么給力,不懂怎么寫個(gè)好程序,求幫忙。。。。。
    發(fā)表于 05-17 22:55

    基于STM32的無(wú)線搶答器

    無(wú)線搶答器采用STM32F103ZET6(STM 32F103ZET6數(shù)據(jù)手冊(cè))芯片主控,同時(shí)藍(lán)牙模塊HC-05,語(yǔ)音模塊ISD1760(ISD1760數(shù)據(jù)手冊(cè)),數(shù)碼管,七彩燈等部件構(gòu)成,當(dāng)
    發(fā)表于 08-29 14:13

    制作搶答器

    第四章 搶答器的制作(Arduino邊做邊學(xué):從點(diǎn)亮Led到物聯(lián)網(wǎng))
    發(fā)表于 06-24 12:18

    FPGA搶答器該怎么設(shè)計(jì)?

    主要有兩種:小規(guī)模數(shù)字邏輯芯片譯碼和觸發(fā)來(lái)做,另外一種單片機(jī)來(lái)做;小規(guī)模數(shù)字邏輯電路比較復(fù)雜,單片機(jī)來(lái)做隨著搶答組數(shù)的增加有時(shí)候存在
    發(fā)表于 09-24 08:24

    基于STM32的搶答器設(shè)計(jì)

    前言最近在指導(dǎo)一個(gè)小學(xué)弟完成他的設(shè)計(jì),借此機(jī)會(huì)記錄一個(gè)小項(xiàng)目從“系統(tǒng)結(jié)構(gòu)設(shè)計(jì)、器件選型、PC板繪制、程序調(diào)試”的過(guò)程。目的:設(shè)計(jì)一個(gè)四人的搶答器設(shè)計(jì)要求:1、搶答器可同時(shí)供四組搶答;2、搶答器
    發(fā)表于 07-26 06:14

    多路智力競(jìng)賽搶答器設(shè)計(jì)

    掌握搶答器的工作原理及其設(shè)計(jì)方法。重點(diǎn):定時(shí)搶答器的總體框圖的產(chǎn)生。難點(diǎn):搶答器控制電路的設(shè)計(jì)。一、搶答器的功能要求·基本功能① 設(shè)計(jì)一個(gè)智力競(jìng)賽
    發(fā)表于 12-01 17:34 ?624次下載
    多路智力競(jìng)賽<b class='flag-5'>搶答器</b>設(shè)計(jì)

    自制電子搶答器

    自制電子搶答器搶答器已被人們所熟知,在一些電子類的雜志中也經(jīng)常介紹,許多電子搶答器都采用了邏輯電路進(jìn)行設(shè)計(jì),在本文
    發(fā)表于 11-21 10:55 ?1.4w次閱讀

    PLC搶答器設(shè)計(jì)

    本文介紹的PLC搶答器,思路清晰,程序設(shè)計(jì)易于理解,能準(zhǔn)確、快速做出判斷,具有很強(qiáng)的實(shí)用性。PLC搶答器設(shè)計(jì)保證了競(jìng)賽活動(dòng)的合理、公平、公正進(jìn)行。
    發(fā)表于 12-24 00:30 ?1.9w次閱讀
    PLC<b class='flag-5'>搶答器</b>設(shè)計(jì)

    搶答器

    搶答器 C51單片機(jī)源碼,KEIL源文件,C語(yǔ)言編寫
    發(fā)表于 06-20 16:36 ?44次下載

    搶答器protues仿真程序 51搶答器設(shè)計(jì) 搶答器程序prot

    搶答器protues仿真程序 51搶答器設(shè)計(jì) 搶答器程序protues仿真設(shè)計(jì)
    發(fā)表于 01-14 22:32 ?172次下載

    8路數(shù)字搶答器課程設(shè)計(jì)報(bào)告

    搶答器作為一種工具,已經(jīng)廣泛應(yīng)用于各種智力和知識(shí)競(jìng)賽場(chǎng)合。本設(shè)計(jì)以八路智力競(jìng)賽搶答器為基本概念,從實(shí)際應(yīng)用出發(fā),利用電子設(shè)計(jì)自動(dòng)化( EDA)技術(shù),數(shù)字、模擬電子器件設(shè)計(jì)具有擴(kuò)充功能的搶答器
    發(fā)表于 11-15 17:39 ?47次下載

    搶答器plc梯形圖介紹(三路搶答器和四路搶答器

    本文為大家介紹一個(gè)三路搶答器和一個(gè)四路搶答器的PLC梯形圖。
    發(fā)表于 01-31 15:35 ?8.3w次閱讀
    <b class='flag-5'>搶答器</b>plc梯形圖介紹(三路<b class='flag-5'>搶答器</b>和四路<b class='flag-5'>搶答器</b>)

    數(shù)顯號(hào)碼搶答器設(shè)計(jì)制作

    本文介紹一種數(shù)字電路組成的顯示優(yōu)先搶答號(hào)碼的多路搶答器的設(shè)計(jì)與制作。
    的頭像 發(fā)表于 02-09 10:01 ?4916次閱讀
    數(shù)顯號(hào)碼<b class='flag-5'>搶答器</b>設(shè)計(jì)制作
    RM新时代网站-首页