ARDUINO编程失败 [英] ARDUINO programming fail

查看:174
本文介绍了ARDUINO编程失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此我的Arduino编程在达到无效阶段后失败而且我的mega2560没有做任何事情我必须重置。请帮助解决有问题的部分或如何正确地重做所有内容。



  const   int  closerpin =  3 ; 
const int openerpin = 4 ;
const int autopin = 7 ;
const int closemotorpin = 10 ;
const int openmotorpin = 12 ;
const int sensorpin = 5 ;
int openstate = 0 ;
int nearestate = 0 ;
int autostate = 0 ;
int sensorstate = 0 ;



void setup(){
pinMode(closerpin,INPUT);
pinMode(openerpin,INPUT);
pinMode(closemotorpin,OUTPUT);
pinMode(openmotorpin,OUTPUT);
pinMode(autopin,INPUT);
pinMode(sensorpin,OUTPUT);
Serial.begin( 9600 );
}

void loop(){
sensorstate = digitalRead(sensorpin);
autostate = digitalRead(autopin);
openstate = digitalRead(openerpin);
nearestate = digitalRead(closerpin);
if (openstate == HIGH){
stageOne();
}
else {
stageTwo();
}

}
void stageOne(){
sensorstate = digitalRead(sensorpin);
autostate = digitalRead(autopin);
openstate = digitalRead(openerpin);
nearestate = digitalRead(closerpin);

digitalWrite(openmotorpin,HIGH);
延迟( 8000 );
digitalWrite(openmotorpin,LOW);
stageTwo();
} // open
void stageTwo(){
sensorstate = digitalRead(sensorpin);
autostate = digitalRead(autopin);
openstate = digitalRead(openerpin);
nearestate = digitalRead(closerpin);

if (autostate == HIGH){
stageFour();
}
else if (nearestate == HIGH){
stageThree();
}
else {
stageTwo();
}
}
// 关闭n自动检查
void stageThree(){
sensorstate = digitalRead(sensorpin);
autostate = digitalRead(autopin);
openstate = digitalRead(openerpin);
nearestate = digitalRead(closerpin);
digitalWrite(closemotorpin,HIGH);
延迟( 8000 );
digitalWrite(closemotorpin,LOW);
stageFive();
} // close
void stageFour(){
sensorstate = digitalRead(sensorpin);
autostate = digitalRead(autopin);
openstate = digitalRead(openerpin);
nearestate = digitalRead(closerpin);
if (sensorstate == HIGH){
digitalWrite(closemotorpin,HIGH);
延迟( 8000 );
digitalWrite(closemotorpin,LOW);
stageSeven();
}
else if (nearestate == HIGH){
stageThree();
}
其他 如果(openstate == HIGH){
stageOne();
}
else if (sensorstate == LOW){
stageFour();
}
}
void stageFive(){
sensorstate = digitalRead(sensorpin);
autostate = digitalRead(autopin);
openstate = digitalRead(openerpin);
nearestate = digitalRead(closerpin);
if (openstate == HIGH){
stageOne();
}
else if (autostate == HIGH){
stageFour();
}
else {
stageFive();
}
}
// open n auto check


void stageSeven(){
if (sensorstate ==低){
digitalWrite(openmotorpin,HIGH);
延迟( 8000 );
digitalWrite(openmotorpin,LOW);
if (nearestate == HIGH){
stageThree();
}
其他 if (sensorstate == HIGH){
digitalWrite(closemotorpin,HIGH);
stageSeven();
}
else {
stageSeven();
}
}
其他 如果(openstate == HIGH) {
stageOne();
}
else {
stageSeven();
}

}

解决方案

在每个阶段的开始处,您正在读取输入状态



在第7阶段你已经省略了这个。



这样可以解决它.....

so my Arduino programming fails after it reaches void stageSeven and my mega2560 does not do anything and I have to reset. please help with resolving the problematic part or how to redo everything properly.

const int closerpin = 3;
const int openerpin = 4;
const int autopin = 7;
const int closemotorpin= 10;
const int openmotorpin= 12;
const int sensorpin= 5;
int openstate = 0;
int closestate = 0;
int autostate = 0;
int sensorstate = 0;



void setup(){
  pinMode(closerpin, INPUT);
  pinMode(openerpin, INPUT);
  pinMode(closemotorpin, OUTPUT);
  pinMode(openmotorpin, OUTPUT);
  pinMode(autopin, INPUT);
  pinMode(sensorpin, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  sensorstate = digitalRead(sensorpin);
  autostate = digitalRead(autopin);
  openstate = digitalRead(openerpin);
  closestate = digitalRead(closerpin);
  if (openstate == HIGH) {
    stageOne();
  }
  else {
    stageTwo();
  }

}
void stageOne(){
  sensorstate = digitalRead(sensorpin);
  autostate = digitalRead(autopin);
  openstate = digitalRead(openerpin);
  closestate = digitalRead(closerpin);

  digitalWrite(openmotorpin, HIGH);
  delay(8000);
  digitalWrite(openmotorpin, LOW);
  stageTwo();
}   //open
void stageTwo() {
  sensorstate = digitalRead(sensorpin);
  autostate = digitalRead(autopin);
  openstate = digitalRead(openerpin);
  closestate = digitalRead(closerpin);

  if (autostate == HIGH) {
    stageFour();
  }
  else if (closestate == HIGH) {
    stageThree();
  }
  else {
     stageTwo();
  }
}
//close n auto check
void stageThree() {
  sensorstate = digitalRead(sensorpin);
  autostate = digitalRead(autopin);
  openstate = digitalRead(openerpin);
  closestate = digitalRead(closerpin);
  digitalWrite(closemotorpin, HIGH);
  delay(8000);
  digitalWrite(closemotorpin, LOW);
  stageFive();
}  //close
void stageFour()  {
  sensorstate = digitalRead(sensorpin);
  autostate = digitalRead(autopin);
  openstate = digitalRead(openerpin);
  closestate = digitalRead(closerpin);
  if (sensorstate == HIGH){
    digitalWrite(closemotorpin, HIGH);
    delay(8000);
    digitalWrite(closemotorpin, LOW);
     stageSeven();
  }
  else if (closestate == HIGH){
    stageThree();
  }
  else if (openstate == HIGH) {
    stageOne();
  }
  else if (sensorstate == LOW){
     stageFour();
  }
}
void stageFive() {
  sensorstate = digitalRead(sensorpin);
  autostate = digitalRead(autopin);
  openstate = digitalRead(openerpin);
  closestate = digitalRead(closerpin);
  if (openstate == HIGH) {
    stageOne();
  }
  else if  (autostate == HIGH)  {
    stageFour();
  }
  else {
    stageFive();
  }
}
//open n auto check


void stageSeven(){
  if (sensorstate == LOW){
    digitalWrite(openmotorpin, HIGH);
    delay(8000);
    digitalWrite(openmotorpin, LOW);
    if (closestate == HIGH){
      stageThree();
    }
    else if (sensorstate == HIGH) {
      digitalWrite(closemotorpin, HIGH);
      stageSeven();
    }
    else{
       stageSeven();
    }
  }
  else if (openstate == HIGH) {
    stageOne();
  }
  else{
     stageSeven();
  }

}

解决方案

At the start of every stage you are reading the input states

At Stage 7 you have ommitted this.

Does that fix it.....


这篇关于ARDUINO编程失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆