Перейти к содержанию

Arduino HC-06 (Serial.available() внутри условия Serial.available)


Гость kaisarali1997ss@gmail.com

Рекомендуемые сообщения

Гость kaisarali1997ss@gmail.com

Доброго времени суток.

Не смог реализовать повторный Serial.available() внутри условия Serial.available.

Может кто-то уже сталкивался с этим.

Задача состоит в том, что нужно зажечь светодиодные ленты WS2812b. 

Алгоритм действий:

1)  Ожидаем появления данных на входе serial с помощью if (Serial.available()){}

2) Принимаем значения int val=Serial.paresInt();

3)Условие сравнивания if(val>123){chess=val;} esle if(val<124){color=val;} т.е номер светодиода это chess, цвет это color

4) На смартфон отправляем 'n', для разрешения отправки следующих данных

5)Ждем уже цвет светодиода на входе serial далее по предыдущему алгоритму 

6)Зажигаем указанный светодиод на указанный цвет. 

#include <FastLED.h>
#define LED_PIN     6
#define NUM_LEDS    123
CRGB leds[NUM_LEDS];
const unsigned int DIM1 = 123;
const unsigned int DIM2 = 1;
const unsigned int DIM3 = 3;
int ary[DIM1][DIM2][DIM3];
void setup() {

  Serial.begin(9600);
   FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
}

void loop() {
if(Serial.available()){
int  val=Serial.parseInt();
    int chess=val;
    Serial.println(chess);
    delay(1);
    Serial.println('n');
    clear_serail();
  if(Serial.available()){int color=Serial.parseInt(); Serial.println(color);
  if(color>0){
    if(color==124){ ary[chess][1][1]=0;    ary[chess][1][2]=255; ary[chess][1][3]=0; Serial.println(ary[chess][1][1]); Serial.println(ary[chess][1][2]); Serial.println(ary[chess][1][3]);
    
          leds[chess]=CRGB(ary[chess][1][1],ary[chess][1][2],ary[chess][1][3]);
          FastLED.show();
       Serial.println('l');
    clear_serail();
  }
    if(color==125){ ary[chess][1][1]=255;  ary[chess][1][2]=0;   ary[chess][1][3]=0;
    
     
          leds[chess]=CRGB(ary[chess][1][1],ary[chess][1][2],ary[chess][1][3]);
          FastLED.show();
       Serial.println('l');
    clear_serail();
  }}}
  
  
 }
 
}
void clear_serail(){
  Serial.end();    
  Serial.begin(9600);  }

 

Ссылка на комментарий
Поделиться на другие сайты

и не реализуете если только не добавите второй while

Вообще не правильное понимание работы алгоритмов, от сюда и такие проблемы

Изменено пользователем hasl
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...