Как оптимизировать код
- Войдите на сайт для отправки комментариев
Пнд, 16/09/2019 - 23:29
Здравствуйте, подскажите как можно оптимизировать данный код?
Не судите строго я новичок!
#include "Adafruit_NeoPixel.h"
#define LED_COUNT 14
#define LED_PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
int x0=0;
int x1=1;
int x2=2;
int x3=3;
int x4=4;
int x5=5;
int x6=6;
int x7=7;
int x8=8;
int x9=9;
int x10=10;
int x11=11;
int x12=12;
void setup() {
strip.begin();
}
void loop() {
if (x0>13){
x0=0;
}
if (x1>13){
x1=0;
}
if (x2>13){
x2=0;
}
if (x3>13){
x3=0;
}
if (x4>13){
x4=0;
}
if (x5>13){
x5=0;
}
if (x6>13){
x6=0;
}
if (x7>13){
x7=0;
}
if (x8>13){
x8=0;
}
if (x9>13){
x9=0;
}
if (x10>13){
x10=0;
}
if (x11>13){
x11=0;
}
if (x12>13){
x12=0;
}
for (int i = 0; i < LED_COUNT; i++)
{
strip.setPixelColor(x0, strip.Color(55,0,0));
strip.show();
strip.setPixelColor(x1, strip.Color(55,17,0));
strip.show();
strip.setPixelColor(x2, strip.Color(55,35,0));
strip.show();
strip.setPixelColor(x3, strip.Color(55,45,0));
strip.show();
strip.setPixelColor(x4, strip.Color(55,55,0));
strip.show();
strip.setPixelColor(x5, strip.Color(27,55,0));
strip.show();
strip.setPixelColor(x6, strip.Color(0,55,0));
strip.show();
strip.setPixelColor(x7, strip.Color(0,55,27));
strip.show();
strip.setPixelColor(x8, strip.Color(0,55,55));
strip.show();
strip.setPixelColor(x9, strip.Color(0,27,55));
strip.show();
strip.setPixelColor(x10, strip.Color(0,0,55));
strip.show();
strip.setPixelColor(x11, strip.Color(27,0,55));
strip.show();
strip.setPixelColor(x12, strip.Color(55,0,55));
strip.show();
strip.setPixelColor(x0, strip.Color(0,0,0));
strip.show();
}
x0++;
x1++;
x2++;
x3++;
x4++;
x5++;
x6++;
x7++;
x8++;
x9++;
x10++;
x11++;
x12++;
}
Оптимизация по какому/каким параметрам интересует?
Ну как минимум уменьшение кода, без потери работоспособности
Организуйте вместо переменных x1-x12 массив
int x[12]
Я бы сказал, вместо x0-x12 : int x[13]
Ну да :)
а для чего там цикл в строке 67 - вообще не ясно, думаю это все, что осталось от прежнего более оптимального кода:)
А как задать иксам значения?
http://arduino.ru/forum/programmirovanie/rabota-s-hex#comment-479087
Как то так. В книгах по програмированию это описано. Что, совсем лень читать?
может вам так хотелось?
#include "Adafruit_NeoPixel.h" #define LED_COUNT 14 #define LED_PIN 6 Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // цвета byte x[] { 55,0,0, //0 55,17,0, //1 55,35,0, //2 55,45,0, //3 55,55,0, //4 27,55,0, //5 0,55,0, //6 0,55,27, //7 0,55,55, //8 0,27,55, //9 0,0,55, //10 27,0,55, //11 55,0,55 //12 } void setup() { strip.begin(); } void loop() { for (int i = 0; i < sizeof(x)/3; i=i+3) { strip.setPixelColor(i/3, strip.Color(i,i+1,i+2)); strip.show(); } }может вам так хотелось?
тада массив х надо выкинуть, он не используется нигде
Деда, ну поправил бы че ты.
#include "Adafruit_NeoPixel.h" #define LED_COUNT 14 #define LED_PIN 6 Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // цвета byte x[] { 55,0,0, //0 55,17,0, //1 55,35,0, //2 55,45,0, //3 55,55,0, //4 27,55,0, //5 0,55,0, //6 0,55,27, //7 0,55,55, //8 0,27,55, //9 0,0,55, //10 27,0,55, //11 55,0,55 //12 } void setup() { strip.begin(); } void loop() { for (int i = 0; i < sizeof(x)/3; i=i+3) { strip.setPixelColor(i/3, strip.Color(x[i],x[i+1],x[i+2])); strip.show(); } }поправляю:
for(inti = 0; i <sizeof(x)/3; i=i+3)неправильно, на 3 не нада делить, надо ж дойти до конца массива, а не до его третиfor(inti = 0; i <sizeof(x); i+=3)понял, сажусь два
неправильно, на 3 не нада делить, надо ж дойти до конца массива, а не до его третии не только это, в исходном коде был сдвиг по массиву, а тут его нет
и не только это, в исходном коде был сдвиг по массиву
ХДЕ? О_О Тут от i вапще ничо не зависит (это исходный, из #1)
for (int i = 0; i < LED_COUNT; i++) { strip.setPixelColor(x0, strip.Color(55,0,0)); strip.show(); strip.setPixelColor(x1, strip.Color(55,17,0)); strip.show(); strip.setPixelColor(x2, strip.Color(55,35,0)); strip.show(); strip.setPixelColor(x3, strip.Color(55,45,0)); strip.show(); strip.setPixelColor(x4, strip.Color(55,55,0)); strip.show(); strip.setPixelColor(x5, strip.Color(27,55,0)); strip.show(); strip.setPixelColor(x6, strip.Color(0,55,0)); strip.show(); strip.setPixelColor(x7, strip.Color(0,55,27)); strip.show(); strip.setPixelColor(x8, strip.Color(0,55,55)); strip.show(); strip.setPixelColor(x9, strip.Color(0,27,55)); strip.show(); strip.setPixelColor(x10, strip.Color(0,0,55)); strip.show(); strip.setPixelColor(x11, strip.Color(27,0,55)); strip.show(); strip.setPixelColor(x12, strip.Color(55,0,55)); strip.show(); strip.setPixelColor(x0, strip.Color(0,0,0)); strip.show(); }Ааааа. понял как. не работал с этими вашими неопикселями проклятыми. :)
Правда, сиравно не понимаю, нахрена там цикл.
Правда, сиравно не понимаю, нахрена там цикл.
я об этом уже писал в #5 :)
я об этом уже писал в #5 :)
ну дак я же чертовски внимателен сёдня. :)
и зачем пишу... опять двойка будет
#include "Adafruit_NeoPixel.h" #define LED_COUNT 14 #define LED_PIN 6 Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // цвета byte x[] { 0, 55,0,0, //0 1, 55,17,0, //1 2, 55,35,0, //2 3, 55,45,0, //3 4, 55,55,0, //4 5, 27,55,0, //5 6, 0,55,0, //6 7, 0,55,27, //7 8, 0,55,55, //8 9, 0,27,55, //9 10, 0,0,55, //10 11, 27,0,55, //11 12, 55,0,55 //12 } void setup() { strip.begin(); } void loop() { for (int i = 0; i < sizeof(x); i+=4) { strip.setPixelColor(x[i], strip.Color(x[i+1],x[i+2],x[i+3])); strip.show(); } strip.setPixelColor(x[0], strip.Color(0,0,0)); strip.show(); for (int i = 0; i < sizeof(x); i+=4) { x[i]++; if (x[i]>13) {x[i]=0;} } }4 тут вапще не в кассу.
почему? блин и проверить то никак , ни библиотеки ни диодов.
почему? блин и проверить то никак , ни библиотеки ни диодов.
Аааа, нет, это я ступил. Массив то уже переделанный. Пойду лучше на огороде работать.
и я ))