2301_76578134 2023-03-11 05:14 采纳率: 50%
浏览 36
已结题

Arduino 代码错误,望改正

问题遇到的现象和发生背景
遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代

情况是这莫个情况,Arduino 的以下代码存在错误,可能是参数问题.我是要做一个三路抢答器的,需要满足的要求是当一轮抢答开始后,假如红(1号)抢到了,此时其余两个按键失效,且一位数码管显示数字1,同理2,3。每当一轮结束,裁判会来按下复位键使得数码管上的数字是0且蜂鸣器发出响声希望各位dl帮帮忙,改正改正吧

bool state =1;
int redled =3;
int greenled =4;
int yellowled =5;
int redkey =A0;
int greenkey =A1;
int yellowkey =A2;
int resetkey =A3;
int a=2;
int b=6;
int c=7;
int d=8;
int e=9;
int f=10;
int g=11;
int buzzer=A4;


void setup() {
 pinMode(3,OUTPUT);
 pinMode(4,OUTPUT);
 pinMode(5,OUTPUT);
 pinMode(A0,INPUT);
 pinMode(A1,INPUT);
 pinMode(A2,INPUT);
 pinMode(A3,INPUT);
 Serial.begin(9600);
 void digital_0(void);{
 digitalWrite(2,HIGH);
 digitalWrite(6,HIGH);
 digitalWrite(7,HIGH);
 digitalWrite(10,HIGH);
 digitalWrite(8,HIGH);
 digitalWrite(9,HIGH);
 digitalWrite(11,LOW); }//显示数字0
 
 pinMode(A4,INPUT);

void digital_1(void);{
    digitalWrite(6,HIGH);
    digitalWrite(7,HIGH);
    digitalWrite(2,LOW);
    digitalWrite(10,LOW);
    digitalWrite(11,LOW);
    digitalWrite(9,LOW);
    digitalWrite(8,LOW); }//显示数字1
 void digital_2(void);{   
    digitalWrite(6,HIGH);
    digitalWrite(7,LOW);
    digitalWrite(2,HIGH);
    digitalWrite(10,LOW);
    digitalWrite(11,HIGH);
    digitalWrite(9,HIGH);
    digitalWrite(8,HIGH);}//显示数字2
void digital_3(void);{    
    digitalWrite(6,HIGH);
    digitalWrite(7,HIGH);
    digitalWrite(2,HIGH);
    digitalWrite(10,LOW);
    digitalWrite(11,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(8,HIGH);}//显示数字3
}

void loop() {
  if(!digitalWrite(A2)&& state==1){
    digitalWrite(5,HIGH); 
    state=0;
   digital_1;
   digitalRead(6,1);
   digitalRead(7,1);
  }
   if(!digitalWrite(A1)&& state==1){
    digitalWrite(4,HIGH); 
    state=0;
   digital_2;
   digitalRead(2,1);
   digitalRead(6,1);
   digitalRead(8,1);
   digitalRead(9,1);
   digitalRead(11,1);
   }
    if(!digitalWrite(A0)&& state==1){
    digitalWrite(3,HIGH); 
    state=0;
    digital_3;
   digitalRead(2,1);
   digitalRead(6,1);
   digitalRead(7,1);
   digitalRead(8,1);
   digitalRead(11,1);
   
    }
    if (!digitalRead(A4)&& state==0)  {  
    digitalWrite(3,LOW);
    digitalWrite(4,LOW);
    digitalWrite(5,LOW);
    state = 1;
    digitalWrite(A4,HIGH);
    digital_0;
   digitalRead(2,1);
   digitalRead(6,1);
   digitalRead(7,1);
   digitalRead(8,1);
   digitalRead(9,1);
   digitalRead(10,1);
    }
    Serial.println(state);
 }




    

  • 写回答

3条回答 默认 最新

  • MarkHan_ 2023-03-11 10:24
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    在给出的代码中,存在多个语法错误和逻辑错误,需要进行以下改正:

    1. 在 setup 函数中,digital_0、digital_1、digital_2、digital_3 函数的定义应该放在函数外面,并且不需要在定义函数的语句后面加上分号。此外,应该将 pinMode(A4,INPUT) 改为 pinMode(A4,OUTPUT),因为 buzzer 是输出设备。
    2. 在 loop 函数中,digitalRead 函数的使用方法不正确。digitalRead 函数只需要传递一个参数,即需要读取的引脚号,函数返回值为读取到的电平值。因此应该将 digitalRead(6,1) 改为 digitalRead(6),digitalRead(7,1) 改为 digitalRead(7),以此类推。
    3. 在 digital_1、digital_2、digital_3 函数中,调用 digitalWrite 函数时应该传递两个参数,即需要设置电平的引脚号和电平值。因此应该将 digital_1; 改为 digital_1(),并在函数内部调用 digitalWrite(6, HIGH)、digitalWrite(7, HIGH)、digitalWrite(2, LOW)、digitalWrite(10, LOW)、digitalWrite(11, LOW)、digitalWrite(9, LOW)、digitalWrite(8, LOW) 等语句。
    4. 在 loop 函数中,if 语句中的 !digitalWrite 应该改为 !digitalRead,因为需要判断按键引脚的电平值是否为低电平。同时,digital_1、digital_2、digital_3 函数的调用应该加上括号,即改为 digital_1()、digital_2()、digital_3()。在复位键按下后,应该使用 digitalWrite(A4, LOW) 将 buzzer 停止响。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 创建了问题 3月11日

悬赏问题

  • ¥50 wordpress项目注册报失败刷新后其实是成功状态,请求排查原因
  • ¥20 linxu服务器僵尸进程不释放,代码如何修改?
  • ¥15 pycharm激活不成功
  • ¥40 如果update 一个列名为参数的value
  • ¥15 基于51单片机的水位检测系统设计中LCD1602一直不显示
  • ¥15 OCS2安装出现问题,请大家给点意见
  • ¥15 ros小车启动launch文件报错
  • ¥15 vs2015到期想登陆但是登陆不上
  • ¥15 IPQ5018制作烧录固件,boot运行失败(操作系统-linux)(相关搜索:操作系统)(相关搜索:操作系统)
  • ¥20 icefall在librispeech基础上加入个人数据集