Подскажите по NeoPixel

Megawollt
Offline
Зарегистрирован: 06.12.2015

Пытаюсь начать ее программировать.

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

Как это реализовать?

 

Пример работы https://yadi.sk/i/xihemMUgk-ktwA

Вот скетч:

#include <Adafruit_NeoPixel.h>
 
#define N_LEDS 100
#define PIN     13
 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_RGB + NEO_KHZ800);
 
void setup() {
  strip.begin();
  strip.setBrightness(255);
  strip.Color(0, 0, 0);
  strip.show();
}
 
int pos = N_LEDS; 
 
void loop() {
  int j;
 

  strip.setPixelColor(pos - 3, 8,8, 8); 
  strip.setPixelColor(pos - 2, 32,32, 32);
  strip.setPixelColor(pos - 1, 63,63,63); 
  strip.setPixelColor(pos    , 255,255,255); 
  strip.setPixelColor(pos + 1, 63,63,63); 
  strip.setPixelColor(pos + 2, 32,32, 32); 
  strip.setPixelColor(pos + 3, 8,8, 8); 

  



  strip.show();
  delay(80);
 
  for(j=-4; j<= 4; j++) strip.setPixelColor(pos+j, 0);
 
  pos -= 1;
  if(pos+4 < 0){
  pos = N_LEDS; 
  }
  }

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Megawollt пишет:

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

Пиксели (от Picture Cell) - это минимальные элементы изображения, они не могут ползать. Кроме того, они существуют на экране, а у экрана нет ни начала, ни конца.

Количество само по себе может только увеличиваться или уменьшатся, а прибавляться оно может лишь к чему-то.

Цитата:

Как это реализовать?

Для начала сформулировать внятно по-русски, чего именно Вы хотите.

Megawollt
Offline
Зарегистрирован: 06.12.2015

Русский не мой родной язык, извините.

Там по ссылке есть файл, где показано чего нужно добиться. Вместо тысячи слов...

b707
Offline
Зарегистрирован: 26.05.2017

Megawollt пишет:

Там по ссылке есть файл, где показано чего нужно добиться. Вместо тысячи слов...

вообще скачивать файлы с обменников здесь не принято. если это видео - выложите его нормально, как видео. на ютуб

sadman41
Offline
Зарегистрирован: 19.10.2016

Megawollt пишет:

Там по ссылке есть файл, где показано чего нужно добиться. Вместо тысячи слов...

Добиться нужно кому?

Megawollt
Offline
Зарегистрирован: 06.12.2015

Добиться мне с помощью форумчан

b707
Offline
Зарегистрирован: 26.05.2017

Megawollt пишет:

Добиться мне с помощью форумчан

А может форумчан материально заинтересовать? :) - у нас тут есть раздел "Ищу исполнителя".

sadman41
Offline
Зарегистрирован: 19.10.2016

Megawollt пишет:

Добиться мне с помощью форумчан

Пока не похоже, что Вы прилагаете к этому усилия.

Хорошо, вот вам наводящее задание. Возьмите листок из тетради в клетку и нарисуйте в одной строке (в каждой клетке по символу) "abcdedcba". Теперь скопируйте этот фрагмент влево с промежутком в две клетки. Опишите ход выполнения.

Megawollt
Offline
Зарегистрирован: 06.12.2015

Тогда не получится эффекта "выползания" светодиодов с края

sadman41
Offline
Зарегистрирован: 19.10.2016

Вы хотите обсудить то, что не понимаете, как делать или чего-то добиться?

Megawollt
Offline
Зарегистрирован: 06.12.2015

Как сделать

sadman41
Offline
Зарегистрирован: 19.10.2016

См. #7

Хотите просто сидеть и ждать - сидите и ждите.

Megawollt
Offline
Зарегистрирован: 06.12.2015

Спасибо

Megawollt
Offline
Зарегистрирован: 06.12.2015

b707 пишет:

вообще скачивать файлы с обменников здесь не принято. если это видео - выложите его нормально, как видео. на ютуб

Это не совсем видео и не подойдет  для Ютуба

b707
Offline
Зарегистрирован: 26.05.2017

Megawollt пишет:

Это не совсем видео и не подойдет  для Ютуба

Ну дело ваше. Если б вы хотели облегчить задачу тем, кто будет помогать - наверно лучше бы подготовились.

Я было рискнул скачать ваш файл - но он у меня на компе не пошел, просит какие-то плагины скачать. чего, я естесственно, делать не стану.

Megawollt
Offline
Зарегистрирован: 06.12.2015

Понял, спасибо и на этом

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Помедитируйте над 36 строкой.

Megawollt
Offline
Зарегистрирован: 06.12.2015

На данный момент я ее вообще убрал. Получился вот такой скетч. Я не могу понять как заставить ползти за ней следующие группы диодов

#include <Adafruit_NeoPixel.h>
 
#define N_LEDS 100
#define PIN     13
 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_RGB + NEO_KHZ800);
 
void setup() {
  strip.begin();
  strip.setBrightness(255);
  strip.Color(0, 0, 0);
  strip.show();
}
 
int pos = N_LEDS; 
 
void loop() {


  strip.setPixelColor(pos - 3, 8,8, 8); 
  strip.setPixelColor(pos - 2, 32,32, 32);
  strip.setPixelColor(pos - 1, 63,63,63); 
  strip.setPixelColor(pos    , 255,255,255); 
  strip.setPixelColor(pos + 1, 63,63,63); 
  strip.setPixelColor(pos + 2, 32,32, 32); 
  strip.setPixelColor(pos + 3, 8,8, 8); 
  strip.setPixelColor(pos + 4,      0); 
  
  pos --;
  
  if(pos == -5){
    pos = N_LEDS;
  }
  



  strip.show();
  delay(80);
 

  }

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Megawollt пишет:

На данный момент я ее вообще убрал. Получился вот такой скетч. Я не могу понять как заставить ползти за ней следующие группы диодов

  strip.setPixelColor(pos - 3, 8,8, 8); 
  strip.setPixelColor(pos - 2, 32,32, 32);
  strip.setPixelColor(pos - 1, 63,63,63); 
  strip.setPixelColor(pos    , 255,255,255); 
  strip.setPixelColor(pos + 1, 63,63,63); 
  strip.setPixelColor(pos + 2, 32,32, 32); 
  strip.setPixelColor(pos + 3, 8,8, 8); 
  strip.setPixelColor(pos + 4,      0); 

Вы сами у себя в голове прокатайте какие значения должны оказаться на каком месте, если за начало координат взять pos. И дальше все получится. Или нет... если Вы не сможете этого представить.

А потом сместите pos и добавьте еще "пикселей"

b707
Offline
Зарегистрирован: 26.05.2017

Megawollt пишет:

На данный момент я ее вообще убрал.

 

вы ее не убрали, а переставили в строку 27. По-моему там ошибка?

А что касается задачи вывести на ленту еще одну ползущую группу - так скопируйте строчки с 20 по 27 с другими позициями да и все - чего проще

Megawollt
Offline
Зарегистрирован: 06.12.2015

Да, так я и сделал. Вроде получилось. В строке 27 ошибки нет. Если ее убрать, светодиоды не гаснут