挚、憂° 发表于 2012-8-6 17:21:24

【新手求助】arduino开机后电机自转

求助1:arduino——L298N,arduino 通电后,未进行按键控制,电机会转,但按键会控制电机停 。是Arduino损坏了?应该开机时就是低电平啊
求助2:
L298N连接 电机1 电机2,开关1控制电机1    开关2控制电机2 , 怎么编程 能在 开关1开启,电机1转动的时候,按下开关2,电机1停止,电机2转动,

             同样在开关2开启,电机2转动的时候,按下开关1,电机2停止,电机1转动。
      
还能单独控制 转 和 停止。下面是我的程序。初自学垃圾编程,跪求指导。
int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
int state1 = 0;
int state2 = 0;
void setup()
{
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
}
void loop()
{
    val1=digitalRead(6);
    if((val1 == HIGH)&&(val2 == LOW))
    {
      state1 = 1-state1;
      delay(10);
      }
      val2 = val1;
   
      val3 = digitalRead( 7 );
      if((val3 == HIGH)&&(val4 == LOW))
       {
      state2 = 1-state2;
      delay(10);
         }
      val4 = val3;
    if(state1 == 0)
    {
               digitalWrite(2,LOW);
               analogWrite(3,LOW);
                }
               
    if(state2 == 0)
    {
       digitalWrite(4,LOW);
         analogWrite(5,LOW);
      }
      if(state1 == 1)
      {
         digitalWrite(2,HIGH);
         analogWrite(3,HIGH);               
         }
         if(state2 == 1)
            {
                digitalWrite(4,HIGH);
                analogWrite(5,HIGH);   
                }
                if(state1 == 1)
                {
                  if(state2 == 1)
                  {
                  state1 = 0;
                  digitalWrite(4,HIGH);
                  analogWrite(5,HIGH);   
                  }
                  }
                  if(state2 == 1)
                  {
                      if(state1 == 1)
                      {
                        state2 = 0;
                        digitalWrite(2,HIGH);
                        analogWrite(3,HIGH);               
                     }
                     }
                     }
现在是能在开关1开启,电机1转动的时候,按下开关2,电机1停止,电机2转动,

   但是不能在开关2开启,电机2转动的时候,按下开关1,电机2停止,电机1转动。

通电放置一段时间电机会自己转动,什么毛病?

pww999 发表于 2012-8-6 19:38:09

本帖最后由 pww999 于 2012-8-7 01:17 编辑

nt val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
int state1 = 0;
int state2 = 0;
void setup()
{
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);

analogWrite(3,0);
analogWrite(5,0);
}
void loop()
{
    val1=digitalRead(6);
val2 = digitalRead(7);

    if(val1 == HIGH)
    {
if (val3==0)
{
//val2 =LOW;
   digitalWrite(4,LOW);
analogWrite(5,0);
digitalWrite(2,HIGH);
   analogWrite(3,255);
      delay(10);
val3=1;

      }
else {
digitalWrite(2,LOW);
   analogWrite(3,0);
val3=0;
}
}


   if(val2 == HIGH)
    {
if (val4==0)
{
//val1 =LOW;
digitalWrite(2,LOW);
   analogWrite(3,0);
      digitalWrite(4,HIGH);
analogWrite(5,255);
      delay(10);
val4=1;
      }
else {
digitalWrite(4,LOW);
analogWrite(5,0);
val4=0;

}
}






?????

maojidan 发表于 2012-8-6 20:35:28

上传一下你的硬件接线图或者原理图吧~我估计是你的硬件问题~

挚、憂° 发表于 2012-8-7 16:57:45

谢谢各位,基础的东西不扎实,用的生硬。已经解决了

dustless 发表于 2012-8-13 20:07:54

我猜是放在程序的LOOP中了。楼主怎么解决的?我看了程序,不过也不太懂啊。楼主怎么解决的?呵。
页: [1]
查看完整版本: 【新手求助】arduino开机后电机自转