zoukankan      html  css  js  c++  java
  • Arduino抢答器

    0.部分需要掌握的知识点和注意事项

    (1)面包板的结构

    (2)按键的结构:按键按下时,左右两侧连通;按键松开后,左右两侧断开,但1号与2号相连,3号与4号相连,即按键松开时,同侧不相连,相连不同侧。

    注:在将按键插入面包板的时候,需要用力,以免按键不能正常接入电路。

    (3)函数

    ①pinMode():

    功能:指定特定端口是作为输入还是输出;

    形式:pinMode(pin,mode)

    参数:pin:想要设定的端口号;mode:模式,有INPUT,OUTPUT和INPUT_PULLUP三种模式。(INPUT_PULLUP参数设定内置的上拉电阻是否被使能)。

    返回值:none;

    ②digitalWrite():

    功能:控制引脚输出高低电平;如果引脚被pinMode()设为OUTPUT,5V (或者 3.3V 在使用 3.3V的板子上) 就是HIGH, 0V (ground) 就是 LOW。如果引脚被设为INPUT,digitalWrite()将对输入引脚的上拉电阻使能HIGH(或者禁止LOW)。建议digitalwrite和digitalread使用之前都要用piMode指定输出输入,否则引脚上拉电阻会像限流电阻一样(此时应该是高阻态)。

    形式:digitalWrite(pin,value)

    参数:pin:要操作的引脚;value:有HIGH和LOW两个取值。

    ③digitalRead():

    功能:读取引脚电平状态;

    形式:digitalRead(pin)

    参数:pin:要读取的引脚

    返回值:HIGH或者LOW;

    1.原理图:

    2.实物图(注意有些面包板的上下部分的中间会有一段断开的部分,如下图红框所示)

    3.代码:

     1 int redled = 8; //红色LED 输出
     2 int yellowled = 7; //黄色LED输出
     3 int greenled = 6; //绿色LED输出
     4 int redpin = 5; //红色按键引脚
     5 int yellowpin = 4; //黄色按键引脚
     6 int greenpin = 3; //绿色按键引脚
     7 int restpin = 2; //复位按键引脚定义
     8 int red;
     9 int yellow;
    10 int green;
    11 void setup() {
    12     pinMode(redled, OUTPUT);
    13     pinMode(yellowled, OUTPUT);
    14     pinMode(greenled, OUTPUT);
    15     pinMode(redpin, INPUT);
    16     pinMode(yellowpin, INPUT);
    17     pinMode(greenpin, INPUT);
    18 }
    19 void loop() //按键循环扫描。
    20 {
    21     red = digitalRead(redpin);
    22     yellow = digitalRead(yellowpin);
    23     green = digitalRead(greenpin);
    24     if (red == LOW) RED_YES();
    25     if (yellow == LOW) YELLOW_YES();
    26     if (green == LOW) GREEN_YES();
    27 }
    28 
    29 void RED_YES() //一直执行红灯亮,直到复位键按下,结束循环
    30 {
    31     while (digitalRead(restpin) == 1) {
    32         digitalWrite(redled, HIGH);
    33         digitalWrite(greenled, LOW);
    34         digitalWrite(yellowled, LOW);
    35     }
    36     clear_led();
    37 }
    38 void YELLOW_YES() //一直执行黄灯亮,直到复位键按下,结束循环
    39 {
    40     while (digitalRead(restpin) == 1) {
    41         digitalWrite(redled, LOW);
    42         digitalWrite(greenled, LOW);
    43         digitalWrite(yellowled, HIGH);
    44     }
    45     clear_led();
    46 }
    47 void GREEN_YES() //一直执行绿灯亮,直到复位键按下,结束循环
    48 {
    49     while (digitalRead(restpin) == 1) {
    50         digitalWrite(redled, LOW);
    51         digitalWrite(greenled, HIGH);
    52         digitalWrite(yellowled, LOW);
    53     }
    54     clear_led();
    55 }
    56 void clear_led() //清除LED
    57 {
    58     digitalWrite(redled, LOW);
    59     digitalWrite(greenled, LOW);
    60     digitalWrite(yellowled, LOW);
    61 }

    4.结果

  • 相关阅读:
    bzoj 1013: [JSOI2008]球形空间产生器sphere
    bzoj 1012: [JSOI2008]最大数maxnumber
    bzoj 1010: [HNOI2008]玩具装箱toy
    bzoj 1008: [HNOI2008]越狱
    bzoj 1007: [HNOI2008]水平可见直线
    UVa12105 越大越好
    POJ
    最优点配对问题(紫书)
    Ned 的难题
    UVA
  • 原文地址:https://www.cnblogs.com/stefango/p/8932107.html
Copyright © 2011-2022 走看看