#1 2016-07-20 08:47:06

Richi
Учасник
Зареєстрований: 2016-07-20
Повідомлень: 7

Цикл for не хочет работать.

По условию val не выпрыгивает из цикла.
Подскажите плиз, что не так?

/*
* Моя программа 004
*/
int sensePin = 4;
int ledPin = 10;


void setup()
{
  analogReference(DEFAULT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);

  }

void loop()
{
int val = analogRead(sensePin);


if (val >= 500) digitalWrite(ledPin, HIGH);
  else
  {
    for (int x=0; ((x<2) && (val<500)); x++)
    {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    }
    digitalWrite(ledPin, LOW);

      if (val<500)
      {
        for (int y=0; ((y<30) && (val<500)); y++)
        {
        digitalWrite(ledPin, LOW);
        delay(1000);
        }
   
        for (int z=0; ((z<4) && (val<500)); z++)
        {
        digitalWrite(ledPin, HIGH);
        delay(1000);
        }
        digitalWrite(ledPin, LOW);
       
      }
   
    }


  }

Неактивний

#2 2016-07-20 09:00:31

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Цикл for не хочет работать.

убрал с Вашего кода лишние телодвижения, а куда программа должна "выпрыгнуть"?

val всегда больше 500 или меньше, нихчего не понять (

/* 
* Моя программа 004  и моя v 0.01
*/
int sensePin = 4;
int ledPin = 10;
int val;
int foo;

void setup()

{
  analogReference(DEFAULT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  
}  
void loop()
{
val = analogRead(sensePin);
if (val >= 500) digitalWrite(ledPin, HIGH);
  else
  {
     digitalWrite(ledPin, HIGH);    delay(2*1000 );    
     digitalWrite(ledPin, LOW);     delay(30*1000);     
     digitalWrite(ledPin, HIGH);    delay(4*1000 );      
	 digitalWrite(ledPin, LOW);
   }
 }

Неактивний

#3 2016-07-20 09:05:45

Richi
Учасник
Зареєстрований: 2016-07-20
Повідомлень: 7

Re: Цикл for не хочет работать.

Спасибо за ответ. Но лишних тело движений не было.
Если ВАЛ больше 500 цикл должен не выполняться. И вот если цикл начал выполнение, переменная ВАЛ не выводит из цикла sad

Неактивний

#4 2016-07-20 09:24:07

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Цикл for не хочет работать.

я в такие танцы не танцую )  Вы как нибуть сами )  ибо я ничего не понял (

Неактивний

#5 2016-07-20 09:26:46

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Цикл for не хочет работать.

аааааа.  я догнал, вот же я тормоз, сразу не понял

пока лампочки "блымкают" нужно контролировать ногу?

Неактивний

#6 2016-07-20 09:28:43

Richi
Учасник
Зареєстрований: 2016-07-20
Повідомлень: 7

Re: Цикл for не хочет работать.

Да! На любом этапе, с интервалом 1сек.

Неактивний

#7 2016-07-20 09:39:03

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Цикл for не хочет работать.

взял на себя смелость подправить алгоритм
не будете ли так любезны, проверить как работает
1 сек  - предположу, что лишнее, слишком долго

По условию val не выпрыгивает из цикла.
Подскажите плиз, что не так?
/* 
* Моя программа 004  и моя v 0.02
*/
int sensePin = 4;
int ledPin = 10;
int val;
int ret;

void setup()

{
  analogReference(DEFAULT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  
}  

int delay_control  (unsigned long time )
{
unsigned long foo;
	for  ( foo =0; foo < time; foo +=10)
	{
	 val = analogRead(sensePin);
	 if ( val >= 500 )  return val;
	 delay_control( 10 ); 
	}
return 0;
}

void loop()
{
	
	
val = analogRead(sensePin);
if (val >= 500) digitalWrite(ledPin, HIGH);
  else
  {
	 ret = 0;
     foo = 0;
	 for ( ; ; foo++)
	 {
		switch (foo%4)
		{
		  case 0: digitalWrite(ledPin, HIGH);   ret = delay_control(2*1000 );   break;
		  case 1: digitalWrite(ledPin, LOW);    ret = delay_control(30*1000);   break;
		  case 2: digitalWrite(ledPin, HIGH);   ret = delay_control(4*1000 );   break;
		  case 3: digitalWrite(ledPin, LOW);	ret = delay_control(1*1000 );   break;
		}
		if ( ret > 0 )  break;
	 }
   }
 }

Неактивний

#8 2016-07-20 10:10:22

Richi
Учасник
Зареєстрований: 2016-07-20
Повідомлень: 7

Re: Цикл for не хочет работать.

1сек. нормально. С Вашим я пока не могу разобраться почему не работает.
Что я не так с   for   делаю понять бы.

Неактивний

#9 2016-07-20 10:17:48

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Цикл for не хочет работать.

мой пример не работает?

"Что я не так с  for  делаю понять бы."  да все так, но вам бы дочитать книгу "Язык программирования С++" Бьерн Страуструп
да с 10ток проектов на gite просмотреть, чуток поcложнее чем примеры на arduino.cc

успеха.

Неактивний

#10 2016-07-20 10:21:57

Richi
Учасник
Зареєстрований: 2016-07-20
Повідомлень: 7

Re: Цикл for не хочет работать.

Спасибо! Буду смотреть.
Надо было с начала так помочь.

Неактивний

#11 2016-07-20 10:25:13

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Цикл for не хочет работать.

спасибо,
постараюсь исправится.

Неактивний

#12 2016-07-20 13:25:24

Richi
Учасник
Зареєстрований: 2016-07-20
Повідомлень: 7

Re: Цикл for не хочет работать.

Разобрался. Спасибо всем не равнодушным!

/*
* Моя программа 004.2
*/
int sensePin = 4;
int ledPin = 10;
int val;

void setup()
{
  analogReference(DEFAULT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);

  }

void loop()
{
val = analogRead(sensePin);


if (val >= 500) digitalWrite(ledPin, HIGH);
  else
  {
    for (int x=0; ((x<2) && (val<500)); x++)
    {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    val = analogRead(sensePin);
    }
    digitalWrite(ledPin, LOW);

      if (val<500)
      {
        for (int y=0; ((y<30) && (val<500)); y++)
        {
        digitalWrite(ledPin, LOW);
        delay(1000);
        val = analogRead(sensePin);
        }
   
        for (int z=0; ((z<4) && (val<500)); z++)
        {
        digitalWrite(ledPin, HIGH);
        delay(1000);
        val = analogRead(sensePin);
        }
        digitalWrite(ledPin, LOW);
       
      }
   
    }


  }

Неактивний

#13 2016-07-20 13:45:14

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Цикл for не хочет работать.

Richi, мне сказать просто нечего.

вопрос не по теме
а где Вы планируете работать? или уже работаете ?

Неактивний

#14 2016-07-20 14:04:25

Richi
Учасник
Зареєстрований: 2016-07-20
Повідомлень: 7

Re: Цикл for не хочет работать.

smile
Я решил для себя сделать на ардуино управление. Согласен, что подход не очень. Но он на уровне моих знаний языка sad

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму