Упрощение кода
- Войдите на сайт для отправки комментариев
Сб, 02/05/2020 - 23:01
Привет, можно ли как-то заменить все эти переменный одной
#include "Adafruit_NeoPixel.h"
#define LED_COUNT 14
#define LED_PIN 12
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
int a = 0;
int b = 1;
int c = 2;
int d = 3;
int e = 4;
int f = 5;
int g = 6;
int h = 7;
int i = 8;
int k = 9;
int m = 10;
int n = 11;
int l = 12;
int p = 13;
uint32_t pausa;
void setup() {
strip.begin();
Serial.begin(9600);
}
void loop() {
strip.setPixelColor(a, strip.Color(255,0,0));
strip.setPixelColor(b, strip.Color(255,0,0));
strip.setPixelColor(c, strip.Color(255,125,0));
strip.setPixelColor(d, strip.Color(255,125,0));
strip.setPixelColor(e, strip.Color(255,255,0));
strip.setPixelColor(f, strip.Color(255,255,0));
strip.setPixelColor(g, strip.Color(0,255,0));
strip.setPixelColor(h, strip.Color(0,255,0));
strip.setPixelColor(i, strip.Color(0,255,255));
strip.setPixelColor(k, strip.Color(0,255,255));
strip.setPixelColor(m, strip.Color(0,0,255));
strip.setPixelColor(n, strip.Color(0,0,255));
strip.setPixelColor(l, strip.Color(255,0,255));
strip.setPixelColor(p, strip.Color(255,0,255));
strip.setBrightness(255);
strip.show();
if (millis()-pausa>200) {
pausa = millis();
a++;
b++;
c++;
d++;
e++;
f++;
g++;
h++;
i++;
k++;
m++;
n++;
l++;
p++;
if(a>13) a=0;
if(b>13) b=0;
if(c>13) c=0;
if(d>13) d=0;
if(e>13) e=0;
if(f>13) f=0;
if(g>13) g=0;
if(h>13) h=0;
if(i>13) i=0;
if(k>13) k=0;
if(m>13) m=0;
if(n>13) n=0;
if(l>13) l=0;
if(p>13) p=0;
}
}
http://arduino.ru/Reference/Array
Просили же одной переменной, а не массивом... можно и одной, например так:
или вообще без переменных
А что значит i%14?
Нет, ну, справочник то все равно читать надо http://arduino.ru/Reference
А што значит /%14 ?
А што значит /%14 ?
Может еще спросите что ***** значат? Обыкновенную опечатку распознать не можете? Я как бы не готовый код даю, а лишь идею. Если его тупо закопипастить - он не заработает.
Я думал, мошт я пропустил чо...
Как-то так, но не проверял ))
#include "Adafruit_NeoPixel.h" #define LED_COUNT 14 #define LED_PIN 12 Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint8_t color[14][3]; // здесь надо назначить элементы массива! Мне лень. int i=0; int k=0; uint32_t pausa; void setup() { strip.begin(); Serial.begin(9600); } void loop() { for(i=0;i<14;i++){ int j = i+k; if ( j<14){ strip.setPixelColor(a, strip.Color(color[j][0],color[j][1],color[j][2])); } else{ strip.setPixelColor(a, strip.Color(color[k][0],color[k][1],color[k][2])); } k++; if (k>13) k=0; strip.show(); if (millis()-pausa>200) { pausa = millis(); } }Как-то так, но не проверял ))
А чему a то равно? Самое интересное то и не написали...
А чему a то равно? Самое интересное то и не написали...
А вот тут не досмотрел... Да пусть ТС разбирается, чему там а равно и почему. Да и нафига там вообще это а нужно.
Добрый всем день! подскажите пожалуйста, почему у меня в программе - симуляторе вот такая проблема. в скетче "бегущих поворотников" при включении симуляции, появляются десятые числа после секунд. Нажимая кнопку, включаются поворотники, а десятые числа, пропадают!
int timer = 200; int switchPin1 = A1; void setup() { for (int thisPin1 = 8; thisPin1 < 14; thisPin1++) { pinMode(thisPin1, OUTPUT); } pinMode (switchPin1, INPUT); } void loop() { if (digitalRead(switchPin1) == HIGH) { // loop from the lowest pin to the highest: for (int thisPin1 = 8; thisPin1 < 14; thisPin1++) { // turn the pin on: digitalWrite(thisPin1, HIGH); delay(timer); } for (int thisPin1 = 8; thisPin1 < 14; thisPin1++) { // turn the pin off: digitalWrite(thisPin1, LOW); } delay(timer); } }Добрый всем день! подскажите пожалуйста, почему у меня в программе - симуляторе вот такая проблема. в скетче "бегущих поворотников" при включении симуляции, появляются десятые числа после секунд. Нажимая кнопку, включаются поворотники, а десятые числа, пропадают!
Видать косяк симулятора.
Ага, ясннно, спасибо! Кстати, с праздниками!!!
Спасибо всем, буду пробовать