Помогите пожалуйста с кодом!

Тема в разделе "Arduino & Shields", создана пользователем Кирилл Смолин, 7 апр 2013.

  1. Unixon

    Unixon Оракул Модератор

    while (x==8); // <-- это что ? :)
     
  2. canis

    canis Нуб

    0a. http://arduino.cc/en/Reference/HomePage - в закладки
    0b. Для размещения кода очень удобно пользоваться кнопкой "Код" (второй ряд кнопок, вторая с конца)
    1. Фигурными скобками оборачивают
    а) тело объявленных функций​
    б) блок кода, выполняющийся внутри циклов (while, for, ...)​
    в) блок кода, выполняющийся при заданных условиях (if, else if, else)​
    следовательно, убираем их вокруг
    Код (Text):

    {
    x++;
    shownumber(x);
    }
    2. Точка с запятой подразумевает конец команды, следовательно, убираем ее из конструкции
    Код (Text):
    while (x==8);
    потому что если ее оставить, следующий блок в фигурных скобках... см. п. 1

    3. Ветвление условий выглядит так
    Код (Text):
    if (a == 1)
    {
      // Что-то
    }
    else if (a == 2)
    {
      // Что-то еще
    }
    else if (a == 3)
    {
      // Что-то совсем другое
    }
    else
    {
      // Ну, ваще...
    }
    Обратите внимание на то, что вместе else не может быть никаких условий.

    4. Количество открытых скобок, должно быть равно количеству закрытых. Считаем:
    Код (Text):
    delay(swithtime*(x/2);
    Теперь можно насладиться синтаксически правильным кодом, который не имеет смысла.

    Код (Text):
    while (x == 8) // Пока икс равно восьми...
    {
      if(x == 2) // Когда икс равно двум...
      {
        //Тут можно встретить единорога.
      }
      //...
    }
     
  3. все равно ругается -
    FilmProcessing_3.ino: In function 'void loop()':
    FilmProcessing_3:47: error: expected `(' before 'else'

    на строку -
    else ((x>4)&&(x<=8))
    И выставляет курсор на красную скобку("красную" для вашего понимания - в тексте она обычная)
    Что касается while (x==8); проверяем сколько циклов прошло циклов, если 8, то все стоп, светим красным огоньком что все закончено, если конечно правильно написано.
     
  4. Вообще убрал индикацию номера и поменял данные на то что предлагается, в смысле if и else if и т д
    Но пока выдает то что я писал ранее из программы.
     
  5. Ура я его откомпилировал
    На сегодня всем спасибо, как протестирую сразу сообщу как работает.
    !!!!
     
  6. Megakoteyka

    Megakoteyka Оракул Модератор

    А можно то же самое, но доступным простому народу языком? :)
     
  7. pasha08

    pasha08 Нерд

    Рабочую версию можно посмотреть?
     
  8. int drive_pin =10;
    int led_pin1 = 9;
    int led_pin2 = 13;
    int led_pin3 = 11;
    int x=0;
    int swithtime = 10000;


    void setup()
    {
    pinMode(led_pin1,OUTPUT); // Зеленый диод
    pinMode(led_pin2,OUTPUT); // желтый диод
    pinMode(led_pin3,OUTPUT); // красный диод
    pinMode(drive_pin, OUTPUT); // Выход на вращение мотора
    }
    void loop()
    {

    x++;
    while (x==8);
    {
    if (x<=2)
    {
    digitalWrite(drive_pin,HIGH); // Вращаем мотор
    digitalWrite(led_pin1,HIGH); // зеленый горит
    digitalWrite(led_pin2,LOW); // желтый не горит
    delay(swithtime*x); //

    digitalWrite(drive_pin,LOW);
    digitalWrite(led_pin1,LOW); //
    digitalWrite(led_pin2,HIGH);
    delay (swithtime); // остановка агрегации
    }
    else if ((x>2)&&(x<=4))
    {
    digitalWrite(drive_pin,HIGH);
    digitalWrite(led_pin1,HIGH);
    digitalWrite(led_pin2,LOW); // Скорость вращения
    delay(swithtime*x); // Время второй агригации

    digitalWrite(drive_pin,LOW);
    digitalWrite(led_pin1,LOW);
    digitalWrite(led_pin2,HIGH);
    delay (swithtime*(x/2));
    }
    else ((x>4)&&(x<=8));
    {
    digitalWrite(drive_pin,HIGH);
    digitalWrite(led_pin1,HIGH);
    digitalWrite(led_pin2,LOW);
    delay(swithtime*x); //

    digitalWrite(drive_pin,LOW);
    digitalWrite(led_pin1,LOW);
    digitalWrite(led_pin2,HIGH);
    delay (swithtime*(x/2));
    }
    }
    digitalWrite(led_pin3,HIGH);
    delay(30000);
    }
     
  9. Этот работает (компиляция прошла), в действии проверю только вечером. Думаю, что все должно быть нормально
     
  10. pasha08

    pasha08 Нерд

    Странно что пропустил... Вроде после while(a < b) не должно быть ;
     
  11. он его там требовал
     
  12. pasha08

    pasha08 Нерд

    Вася в шоке 0_о