помогите с программой очень срочно!

fayvlad
Offline
Зарегистрирован: 27.03.2014

Итак, у меня Arduino mini, к ней вставил ir управление, 2 моторчика через l293d и 3 сенсора линии.

Проблема в том, что код, как не писал, доходя до условия сенсора линии, работает совсем не правильно!

моторы или оба крутятся, или только один, непонятно почему.

Вот код:

#include <IRremote.h>
int RECV_PIN = 5;
int i = 0;
int led = 13;
int in1 = 2;
int in2 = 3;
int in3 = 4;
int ml1 = 6;
int ml2 = 7;
int mr1 = 8;
int mr2 = 9;
int marker = 10;
int invalue1;
int invalue2;
int invalue3;

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {                
  pinMode(in1, INPUT);
  pinMode(in2, INPUT);
  pinMode(in3, INPUT);
  pinMode(ml1, OUTPUT);
  pinMode(ml2, OUTPUT);
  pinMode(mr1, OUTPUT);
  pinMode(mr2, OUTPUT);
  pinMode(led, OUTPUT);   
  Serial.begin(9600);  
  irrecv.enableIRIn(); 
}

void loop() {
  if (irrecv.decode(&results)) 
  {

if (results.value==0xFF02FD) {
   digitalWrite(ml1, LOW);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, LOW);
   digitalWrite(mr2, LOW);
   digitalWrite(led, LOW);   
}
  
if (results.value==0xFF629D){
   digitalWrite(ml1, HIGH);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, HIGH);
   digitalWrite(mr2, LOW);
   digitalWrite(led, HIGH);   
}

if (results.value==0xFFA857){
   digitalWrite(ml1, LOW);
   digitalWrite(ml2, HIGH);
   digitalWrite(mr1, LOW);
   digitalWrite(mr2, HIGH);
   digitalWrite(led, HIGH);  
}

if (results.value==0xFF22DD){
   digitalWrite(ml1, LOW);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, HIGH);
   digitalWrite(mr2, LOW);
   digitalWrite(led, HIGH);  
   delay(500);
   digitalWrite(mr1, LOW);
}

if (results.value==0xFFC23D){
   digitalWrite(ml1, HIGH);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, LOW);
   digitalWrite(mr2, LOW);
   digitalWrite(led, HIGH);  
   delay(500);
   digitalWrite(ml1, LOW);
}
if (results.value==0xFF30CF)
{
  invalue1 = digitalRead(in1);
  invalue2 = digitalRead(in2);
  invalue3 = digitalRead(in3);
  
  if(invalue1==1 && invalue3==1) {
   digitalWrite(ml1, HIGH);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, HIGH);
   digitalWrite(mr2, LOW);}
   
   if(invalue3!=1) {
   digitalWrite(ml1, LOW);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, HIGH);
   digitalWrite(mr2, LOW);}

   
   if(invalue1!=1) {
   digitalWrite(ml1, HIGH);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, LOW);
   digitalWrite(mr2, LOW);}
}


if (results.value==0xFF6897)
{
 while(i<4)
 {
   digitalWrite(marker, HIGH);
   digitalWrite(ml1, HIGH);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, HIGH);
   digitalWrite(mr2, LOW);
     delay(500);
   digitalWrite(ml1, HIGH);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, LOW);
   digitalWrite(mr2, HIGH);
     delay(550);
     i++;
 }
   digitalWrite(ml1, LOW);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, LOW);
   digitalWrite(mr2, LOW);
   digitalWrite(marker, LOW);
   i=0;
  }

 irrecv.resume(); 
  }
}
кстати если просто без тех всех if заливать, то работает правильно. также пробывал коды кнопок писать через case, та самая картина.
Этот урывок сам работает, а вместе с общей прогой - нет
 
 invalue1 = digitalRead(in1);
  invalue2 = digitalRead(in2);
  invalue3 = digitalRead(in3);
  
  if(invalue1==1 && invalue3==1) {
   digitalWrite(ml1, HIGH);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, HIGH);
   digitalWrite(mr2, LOW);}
   
   if(invalue3!=1) {
   digitalWrite(ml1, LOW);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, HIGH);
   digitalWrite(mr2, LOW);}

   
   if(invalue1!=1) {
   digitalWrite(ml1, HIGH);
   digitalWrite(ml2, LOW);
   digitalWrite(mr1, LOW);
   digitalWrite(mr2, LOW);}
}

 

 

Alexander
Offline
Зарегистрирован: 25.04.2010

Я подредактировал Ваш пост, но вообще см. ссылку:

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

fayvlad
Offline
Зарегистрирован: 27.03.2014

спасибо, только зарегистрировался, незнал еще как.

ну что, может кто-то знает, почему не работает??

кстати если писать через while то правильно работает, но зациклюется и уже другую кнопку не нажать...