Нужна помощь от мастеров своего дела. Реализация цикла!!!!

89azamat89
Offline
Зарегистрирован: 08.01.2016

При проектирование одной схемы столкнулся с проблемой,  не могу реализовать цикл. Код крутится цыклично без остановки мне нужно выполнение кода один раз. 

89azamat89
Offline
Зарегистрирован: 08.01.2016
int pin13 =13;
int pin12 =12;
int pin11 =11;
int pin10 =10;
int pin9 =9;
int pin8 =8;
int pin7 =7;
int pin6 =6;
int pin5 =5;
int pin4 =4;
int pin3 =3;
int pin2 =2;
int pin1 =1;
int pin0 =0;
int pinA0 = A0;
int pinA1 = A1;
int pinA2 = A2;
int pinA3 = A3;
int A;
int B;
int C;
int D;
 
 
byte massive[]  ={13,12,11,10,9,8,7,6,5,4,3,2,1,0};
byte massivea[] ={0,1,2,3,4,5,6,7,8,9,10,11,12,13};
byte massive1[] ={13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13};
byte massive2[] ={0,1,2,3,4,5,6,7,8,9,10,11,12,13};
byte massive3[] ={13,7,0,6,12,8,1,5,11,9,2,4,10,3};
 
void setup() 
{
    pinMode(pin13, OUTPUT);
    pinMode(pin12, OUTPUT);
    pinMode(pin11, OUTPUT);
    pinMode(pin10, OUTPUT);
    pinMode(pin9, OUTPUT);
    pinMode(pin8, OUTPUT);
    pinMode(pin7, OUTPUT);
    pinMode(pin6, OUTPUT);
    pinMode(pin5, OUTPUT);
    pinMode(pin4, OUTPUT);
    pinMode(pin3, OUTPUT);
    pinMode(pin2, OUTPUT);
    pinMode(pin1, OUTPUT);
    pinMode(pin0, OUTPUT);
    pinMode(pin11, OUTPUT);
    pinMode(pin10, OUTPUT);
    pinMode(pinA0, INPUT);
    pinMode(pinA1, INPUT);
    pinMode(pinA2, INPUT);
    pinMode(pinA3, INPUT);
    Serial.begin(9600);
    
    
}
 
void loop()
{
  A = analogRead(pinA0);
  B = analogRead(pinA1);
  C = analogRead(pinA2);
  D = analogRead(pinA3);
  if(A>100)
      {
        digitalWrite(pin0,HIGH);
        delay(20);
        digitalWrite(pin1,HIGH);
        delay(20);
        digitalWrite(pin2,HIGH);
        delay(20);
        digitalWrite(pin3,HIGH);
        delay(20);
        digitalWrite(pin0,LOW);
        digitalWrite(pin4,HIGH);
        delay(20);
        digitalWrite(pin1,LOW);
        digitalWrite(pin5,HIGH);
        delay(20);
        digitalWrite(pin2,LOW);
        digitalWrite(pin6,HIGH);
        delay(20);
        digitalWrite(pin3,LOW);
        digitalWrite(pin7,HIGH);
        delay(20);
        digitalWrite(pin4,LOW);
        digitalWrite(pin8,HIGH);
        delay(20);
        digitalWrite(pin5,LOW);
        digitalWrite(pin9,HIGH);
        delay(20);
        digitalWrite(pin6,LOW);
        digitalWrite(pin10,HIGH);
        delay(20);
        digitalWrite(pin7,LOW);
        digitalWrite(pin11,HIGH);
        delay(20);
        digitalWrite(pin8,LOW);
        digitalWrite(pin12,HIGH);
        delay(20);
        digitalWrite(pin9,LOW);
        digitalWrite(pin13,HIGH);
        delay(20);
        digitalWrite(pin10,LOW);
        delay(20);
        digitalWrite(pin11,LOW);
        delay(20);
        digitalWrite(pin12,LOW);
        delay(20);
        digitalWrite(pin13,LOW);
        delay(400);  
      }
 if(B>100)
      {
        digitalWrite(pin13,HIGH);
        delay(20);
        digitalWrite(pin12,HIGH);
        delay(20);
        digitalWrite(pin11,HIGH);
        delay(20);
        digitalWrite(pin10,HIGH);
        delay(20);
        digitalWrite(pin13,LOW);
        digitalWrite(pin9,HIGH);
        delay(20);
        digitalWrite(pin12,LOW);
        digitalWrite(pin8,HIGH);
        delay(20);
        digitalWrite(pin11,LOW);
        digitalWrite(pin7,HIGH);
         delay(20);
        digitalWrite(pin10,LOW);
        digitalWrite(pin6,HIGH);
        delay(20);
        digitalWrite(pin9,LOW);
        digitalWrite(pin5,HIGH);
        delay(20);
        digitalWrite(pin8,LOW);
        digitalWrite(pin4,HIGH);
        delay(20);
        digitalWrite(pin7,LOW);
        digitalWrite(pin3,HIGH);
         delay(20);
        digitalWrite(pin6,LOW);
        digitalWrite(pin2,HIGH);
        delay(20);
        digitalWrite(pin5,LOW);
        digitalWrite(pin1,HIGH);
         delay(20);
        digitalWrite(pin4,LOW);
        digitalWrite(pin0,HIGH);
        delay(20);
        digitalWrite(pin3,LOW);
        delay(20);
        digitalWrite(pin2,LOW);
        delay(20);
        digitalWrite(pin1,LOW);
        delay(20);
        digitalWrite(pin0,LOW);
        delay(400);    
      }
  if(C>100)
     {
       
        digitalWrite(pin13,HIGH);
        digitalWrite(pin2,HIGH);
        delay(150);
        digitalWrite(pin12,HIGH);
        digitalWrite(pin3,HIGH);
        delay(150);
        digitalWrite(pin11,HIGH);
        digitalWrite(pin4,HIGH);
        delay(150);
        digitalWrite(pin10,HIGH);
        digitalWrite(pin5,HIGH);
        delay(150);
        digitalWrite(pin9,HIGH);
        digitalWrite(pin6,HIGH);
        delay(150);
        digitalWrite(pin8,HIGH);
        digitalWrite(pin7,HIGH);
        delay(150);
        
     }
   if(C<100&&(A==0||B==0))
      {
        digitalWrite(pin13,LOW);
        digitalWrite(pin12,LOW);
        digitalWrite(pin11,LOW);
        digitalWrite(pin10,LOW);
        digitalWrite(pin9,LOW);
        digitalWrite(pin8,LOW);
        digitalWrite(pin7,LOW);
        digitalWrite(pin6,LOW);
        digitalWrite(pin5,LOW);
        digitalWrite(pin4,LOW);
        digitalWrite(pin3,LOW);
        digitalWrite(pin2,LOW);
        digitalWrite(pin1,LOW);
        digitalWrite(pin0,LOW);
      }
   if(D>100)
     {
        digitalWrite(pin7,HIGH);
        digitalWrite(pin8,HIGH);
        delay(40);
        digitalWrite(pin6,HIGH);
        digitalWrite(pin9,HIGH);
        delay(40);
        digitalWrite(pin7,LOW);
        digitalWrite(pin8,LOW);
        delay(40);
        digitalWrite(pin5,HIGH);
        digitalWrite(pin10,HIGH);
        delay(40);
        digitalWrite(pin6,LOW);
        digitalWrite(pin9,LOW);
        delay(40);
        digitalWrite(pin4,HIGH);
        digitalWrite(pin11,HIGH);
        delay(40);
        digitalWrite(pin5,LOW);
        digitalWrite(pin10,LOW);
        delay(40);
        digitalWrite(pin3,HIGH);
        digitalWrite(pin12,HIGH);
        delay(40);
        digitalWrite(pin4,LOW);
        digitalWrite(pin11,LOW);
        delay(40);
        digitalWrite(pin2,HIGH);
        digitalWrite(pin13,HIGH);
        delay(40);
        digitalWrite(pin3,LOW);
        digitalWrite(pin12,LOW);
        delay(40);
        digitalWrite(pin2,LOW);
        digitalWrite(pin13,LOW);
        delay(40);
       
     }
      Serial.println(A);
      Serial.println(    );
      Serial.println(B);
      Serial.println(    );
      Serial.println(C);
      Serial.println(    );
      Serial.println(D);
      Serial.println(    );
      
}
89azamat89
Offline
Зарегистрирован: 08.01.2016

Скетч мигание светодиода,  как сделать цыкл один раз а не бесконечно 

vvadim
Offline
Зарегистрирован: 23.05.2012

ПОМЕСТИТЕ КОД ИЗ луп в сетап

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

какой ужасный код. схема есть и что нужно получить? полюбому как минимум в 2-3 раза можно сделать короче, да и более читаемый

89azamat89
Offline
Зарегистрирован: 08.01.2016

Код бегущего огня стоп сигнала

89azamat89
Offline
Зарегистрирован: 08.01.2016

Мигание поворота влево,  вправо, стоп,  задний ход

89azamat89
Offline
Зарегистрирован: 08.01.2016

Буду благодарен, за помощь..... 

89azamat89
Offline
Зарегистрирован: 08.01.2016

Можно изменить скетч 

89azamat89
Offline
Зарегистрирован: 08.01.2016

Добрый день как выйти из цикла 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

схема и как работает. объясни лучше

89azamat89
Offline
Зарегистрирован: 08.01.2016

На аналоговые входа А0, А1,А2,А3  подаю сигналы поворот влево, вправо, стоп,  задний ход. При появлении сигнала на входе один из четырёх срабатывает код бегущего огня на выходах от 0 по 13 появляется сигнал. 

89azamat89
Offline
Зарегистрирован: 08.01.2016

Последний код мигание где вход "D" он цыклично работает, мне только его нужно загнать в один раз, все остальное должно оставаться как есть в цикле 

 

89azamat89
Offline
Зарегистрирован: 08.01.2016

Забей в гугле "бегущий стоп сигнал на адруино"

89azamat89
Offline
Зарегистрирован: 08.01.2016

Переместил из лупа в сетап,  да цикла нет, но схема работает только 1 раз, но после поступления сигналов на аналоговые входа ещё раз схема не работает. 

89azamat89
Offline
Зарегистрирован: 08.01.2016

Переместил из лупа в сетап,  да цикла нет, но схема работает только 1 раз, но после поступления сигналов на аналоговые входа ещё раз схема не работает. 

__Alexander
Offline
Зарегистрирован: 24.10.2012

шо, надо чтобы совсем совсем один раз? верните назад в луп, и там где стравнение D поставте флаг, что он уже срабатывал.

89azamat89
Offline
Зарегистрирован: 08.01.2016

Что такое флаг

 

__Alexander
Offline
Зарегистрирован: 24.10.2012

после int D; пишете int flag = 0; вот вам флаг (в руки).

в лупе, где 

if(D>100 && flag == 0)
{

flag = 1;

....

}

89azamat89
Offline
Зарегистрирован: 08.01.2016

Измените код мой,,,  можете? Выложить сдесь.  Я изменяю выдаёт ошибку 

__Alexander
Offline
Зарегистрирован: 24.10.2012

89azamat89 пишет:

Измените код мой,,,  можете? Выложить сдесь.  Я изменяю выдаёт ошибку 

мда.



int pin13 =13;
 int pin12 =12;
 int pin11 =11;
 int pin10 =10;
 int pin9 =9;
 int pin8 =8;
 int pin7 =7;
 int pin6 =6;
 int pin5 =5;
 int pin4 =4;
 int pin3 =3;
 int pin2 =2;
 int pin1 =1;
 int pin0 =0;
 int pinA0 = A0;
 int pinA1 = A1;
 int pinA2 = A2;
 int pinA3 = A3;
 int A;
 int B;
 int C;
 int D;
 int flag = 0; 
  
 byte massive[]  ={13,12,11,10,9,8,7,6,5,4,3,2,1,0};
 byte massivea[] ={0,1,2,3,4,5,6,7,8,9,10,11,12,13};
 byte massive1[] ={13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13};
 byte massive2[] ={0,1,2,3,4,5,6,7,8,9,10,11,12,13};
 byte massive3[] ={13,7,0,6,12,8,1,5,11,9,2,4,10,3};
  
 void setup() 
 {
     pinMode(pin13, OUTPUT);
     pinMode(pin12, OUTPUT);
     pinMode(pin11, OUTPUT);
     pinMode(pin10, OUTPUT);
     pinMode(pin9, OUTPUT);
     pinMode(pin8, OUTPUT);
     pinMode(pin7, OUTPUT);
     pinMode(pin6, OUTPUT);
     pinMode(pin5, OUTPUT);
     pinMode(pin4, OUTPUT);
     pinMode(pin3, OUTPUT);
     pinMode(pin2, OUTPUT);
     pinMode(pin1, OUTPUT);
     pinMode(pin0, OUTPUT);
     pinMode(pin11, OUTPUT);
     pinMode(pin10, OUTPUT);
     pinMode(pinA0, INPUT);
     pinMode(pinA1, INPUT);
     pinMode(pinA2, INPUT);
     pinMode(pinA3, INPUT);
     Serial.begin(9600);
     
     
 }
  
 void loop()
 {
   A = analogRead(pinA0);
   B = analogRead(pinA1);
   C = analogRead(pinA2);
   D = analogRead(pinA3);
   if(A>100)
       {
         digitalWrite(pin0,HIGH);
         delay(20);
         digitalWrite(pin1,HIGH);
         delay(20);
         digitalWrite(pin2,HIGH);
         delay(20);
         digitalWrite(pin3,HIGH);
         delay(20);
         digitalWrite(pin0,LOW);
         digitalWrite(pin4,HIGH);
         delay(20);
         digitalWrite(pin1,LOW);
         digitalWrite(pin5,HIGH);
         delay(20);
         digitalWrite(pin2,LOW);
         digitalWrite(pin6,HIGH);
         delay(20);
         digitalWrite(pin3,LOW);
         digitalWrite(pin7,HIGH);
         delay(20);
         digitalWrite(pin4,LOW);
         digitalWrite(pin8,HIGH);
         delay(20);
         digitalWrite(pin5,LOW);
         digitalWrite(pin9,HIGH);
         delay(20);
         digitalWrite(pin6,LOW);
         digitalWrite(pin10,HIGH);
         delay(20);
         digitalWrite(pin7,LOW);
         digitalWrite(pin11,HIGH);
         delay(20);
         digitalWrite(pin8,LOW);
         digitalWrite(pin12,HIGH);
         delay(20);
         digitalWrite(pin9,LOW);
         digitalWrite(pin13,HIGH);
         delay(20);
         digitalWrite(pin10,LOW);
         delay(20);
         digitalWrite(pin11,LOW);
         delay(20);
         digitalWrite(pin12,LOW);
         delay(20);
         digitalWrite(pin13,LOW);
         delay(400);  
       }
  if(B>100)
       {
         digitalWrite(pin13,HIGH);
         delay(20);
         digitalWrite(pin12,HIGH);
         delay(20);
         digitalWrite(pin11,HIGH);
         delay(20);
         digitalWrite(pin10,HIGH);
         delay(20);
         digitalWrite(pin13,LOW);
         digitalWrite(pin9,HIGH);
         delay(20);
         digitalWrite(pin12,LOW);
         digitalWrite(pin8,HIGH);
         delay(20);
         digitalWrite(pin11,LOW);
         digitalWrite(pin7,HIGH);
          delay(20);
         digitalWrite(pin10,LOW);
         digitalWrite(pin6,HIGH);
         delay(20);
         digitalWrite(pin9,LOW);
         digitalWrite(pin5,HIGH);
         delay(20);
         digitalWrite(pin8,LOW);
         digitalWrite(pin4,HIGH);
         delay(20);
         digitalWrite(pin7,LOW);
         digitalWrite(pin3,HIGH);
          delay(20);
         digitalWrite(pin6,LOW);
         digitalWrite(pin2,HIGH);
         delay(20);
         digitalWrite(pin5,LOW);
         digitalWrite(pin1,HIGH);
          delay(20);
         digitalWrite(pin4,LOW);
         digitalWrite(pin0,HIGH);
         delay(20);
         digitalWrite(pin3,LOW);
         delay(20);
         digitalWrite(pin2,LOW);
         delay(20);
         digitalWrite(pin1,LOW);
         delay(20);
         digitalWrite(pin0,LOW);
         delay(400);    
       }
   if(C>100)
      {
        
         digitalWrite(pin13,HIGH);
         digitalWrite(pin2,HIGH);
         delay(150);
         digitalWrite(pin12,HIGH);
         digitalWrite(pin3,HIGH);
         delay(150);
         digitalWrite(pin11,HIGH);
         digitalWrite(pin4,HIGH);
         delay(150);
         digitalWrite(pin10,HIGH);
         digitalWrite(pin5,HIGH);
         delay(150);
         digitalWrite(pin9,HIGH);
         digitalWrite(pin6,HIGH);
         delay(150);
         digitalWrite(pin8,HIGH);
         digitalWrite(pin7,HIGH);
         delay(150);
         
      }
    if(C<100&&(A==0||B==0))
       {
         digitalWrite(pin13,LOW);
         digitalWrite(pin12,LOW);
         digitalWrite(pin11,LOW);
         digitalWrite(pin10,LOW);
         digitalWrite(pin9,LOW);
         digitalWrite(pin8,LOW);
         digitalWrite(pin7,LOW);
         digitalWrite(pin6,LOW);
         digitalWrite(pin5,LOW);
         digitalWrite(pin4,LOW);
         digitalWrite(pin3,LOW);
         digitalWrite(pin2,LOW);
         digitalWrite(pin1,LOW);
         digitalWrite(pin0,LOW);
       }
    if(D>100 && flag == 0)
      {
         flag = 1;
         digitalWrite(pin7,HIGH);
         digitalWrite(pin8,HIGH);
         delay(40);
         digitalWrite(pin6,HIGH);
         digitalWrite(pin9,HIGH);
         delay(40);
         digitalWrite(pin7,LOW);
         digitalWrite(pin8,LOW);
         delay(40);
         digitalWrite(pin5,HIGH);
         digitalWrite(pin10,HIGH);
         delay(40);
         digitalWrite(pin6,LOW);
         digitalWrite(pin9,LOW);
         delay(40);
         digitalWrite(pin4,HIGH);
         digitalWrite(pin11,HIGH);
         delay(40);
         digitalWrite(pin5,LOW);
         digitalWrite(pin10,LOW);
         delay(40);
         digitalWrite(pin3,HIGH);
         digitalWrite(pin12,HIGH);
         delay(40);
         digitalWrite(pin4,LOW);
         digitalWrite(pin11,LOW);
         delay(40);
         digitalWrite(pin2,HIGH);
         digitalWrite(pin13,HIGH);
         delay(40);
         digitalWrite(pin3,LOW);
         digitalWrite(pin12,LOW);
         delay(40);
         digitalWrite(pin2,LOW);
         digitalWrite(pin13,LOW);
         delay(40);
        
      }
       Serial.println(A);
       Serial.println(    );
       Serial.println(B);
       Serial.println(    );
       Serial.println(C);
       Serial.println(    );
       Serial.println(D);
       Serial.println(    );
       
 }

 

89azamat89
Offline
Зарегистрирован: 08.01.2016

Я не правильно выразился!  не совсем один раз. Как бы сработал и замолчал, но при появления сигнала ещё раз,  сработал.  В данной ситуации при срабатывании он молчит и всё 

89azamat89
Offline
Зарегистрирован: 08.01.2016

Извиняюсь,  я рак в этой теме. 

__Alexander
Offline
Зарегистрирован: 24.10.2012

следующей проверкой пишешь

if(D <100)    или равно нулю, тебе виднее.
{

flag = 0;

}

89azamat89
Offline
Зарегистрирован: 08.01.2016

Спасибо,,,, всё получилось! Я благодарен вам и этому сайту,.