Слияние 2-х скетчей

Тема в разделе "Arduino & Shields", создана пользователем pepa_doc, 24 ноя 2018.

  1. pepa_doc

    pepa_doc Нуб

    Всем привет! Не получается сделать слияние(нуб-одним словом):
    Код (Text):

    int regim=1;
    int flag=0;
    const byte rgbPins[3] = {6,9,10};
    int dim = 1;
    void setup()
    {
    pinMode(6,OUTPUT);
    pinMode(9,OUTPUT);
    }
    void loop()
    {
         if(digitalRead(2)==HIGH&&flag==0)
         {
           regim++;
           flag=1;
            if(regim>5)
            {
              regim=1;
            }
         }
          if(digitalRead(2)==LOW&&flag==1)
         {
            flag=0;
         }
        if(regim==1)//первый режим
        {
          digitalWrite(9,LOW);
          digitalWrite(6,LOW);
        }
        if(regim==2)//второй режим
        {
          digitalWrite(6,HIGH);
          digitalWrite(9,LOW);
        }
        if(regim==3)//третий режим
        {
          digitalWrite(9,HIGH);
          digitalWrite(6,LOW);
        }
      if(regim==4)//четвертый режим
        {
          digitalWrite(9,HIGH);
          digitalWrite(6,HIGH);
        }
    if(regim==5)//пятый режим
        {
         {
           for(byte i=0; i<3; i++){
            pinMode( rgbPins[i], OUTPUT );
        }
        analogWrite(rgbPins[0], 255);
        analogWrite(rgbPins[1], 0);
        analogWrite(rgbPins[2], 0);
         }
     
          for(int i=255; i>=0; i--){
            analogWrite( rgbPins[0], i/dim );
            analogWrite( rgbPins[1], (255-i)/dim );
            delay(40);
        }
        for(int i=255; i>=0; i--){
            analogWrite( rgbPins[1], i/dim );
            analogWrite( rgbPins[2], (255-i)/dim );
            delay(40);
        }
        for(int i=255; i>=0; i--){
            analogWrite( rgbPins[2], i/dim );
            analogWrite( rgbPins[0], (255-i)/dim );
            delay(40);
        }

     
        }
     
        }
     
    Вот что получилось, но с 5 режима на 1 не переключается(
    Помогите пожалуйста!!!
     
  2. pepa_doc

    pepa_doc Нуб

    Код (C++):
     for(int i=255; i>=0; i--){
            analogWrite( rgbPins[0], i/dim );
            analogWrite( rgbPins[1], (255-i)/dim );
            delay(40);
        }
        // гасим зеленый, параллельно разжигаем синий
        for(int i=255; i>=0; i--){
            analogWrite( rgbPins[1], i/dim );
            analogWrite( rgbPins[2], (255-i)/dim );
            delay(30);
        }
        // гасим синий, параллельно разжигаем красный
        for(int i=255; i>=0; i--){
            analogWrite( rgbPins[2], i/dim );
            analogWrite( rgbPins[0], (255-i)/dim );
            delay(40);
           }
    Если это убрать, то все переключается, в чем тут может быть проблема?
     
  3. qwone

    qwone Гик

    Ну как Вам сказать. Сливать надо не блокирующие вещи. С блокирующими это не выходит. Вот нельзя выполнить две команды одновременно- "Стой здесь", "Иди сюда". Все потому что выполнение одной препятствует выполнению другой. И да вроде использование цифровой автомата не запрещено на территории РФ, но почему то многие это не знают или не применяют. Может мы снова в Средневековье.
     
    arkadyf нравится это.
  4. parovoZZ

    parovoZZ Гуру

    Синхронно нельзя, асинхронно - можно.
     
  5. pepa_doc

    pepa_doc Нуб

    Дайте пожалуйста наводку, что это за автомат такой?
     
  6. DetSimen

    DetSimen Спамовредитель Модератор

    Пух это... Он за Одержание.
     
  7. pepa_doc

    pepa_doc Нуб

    Не понял вас.
     
  8. DetSimen

    DetSimen Спамовредитель Модератор

    Бывает, чо...
     
  9. qwone

    qwone Гик

    а смысл. Как вам высказывание:"Кто овладеет Гуглом, то овладеет миром"