всем привет и снова я со своими проблемами
хочу сделать освещение для радиоуправляемой машинки
и от того какие положение руля или газ/тормоз должны загореться определённые LED в ленте
можно ли управлять 4 разными лентами? т.е. на каждую фару своё управление
подсоединить то можно, но не знаю как реализовать программно
ну для начало хотя-бы вообще светились, а то что-то не горят они
вот мой Sketch
C
#include <Servo.h>
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define PIN 6// Pin für die Datenleitung
#define NUMPIXELS 8 // Anzahl der WS2812 LEDs oder der NEOPIXEL
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int R1 = 2;
int R2 = 3;
double channel1;
double channel2;
void setup() {
pinMode(R1, INPUT);
pinMode(R2, INPUT);
pixels.begin(); // Initialisierung der LEDs
Serial.begin(9600);
}
void loop() {
//#######################
int vRange1 =0;
int vRange2 =0;
//#######################
channel1 = pulseIn(2, HIGH);
channel2 = pulseIn(3, HIGH);
Serial.println(channel1);
Serial.println(channel2);
Serial.println(vRange1);
Serial.println(vRange2);
delay(500);
//#####################################################################
//сигнал Channel1 разбить на нескольок промежутков
//if (1000 < channel < 1150) {vRange =0;}
if ((1450 < channel1) && (channel1 < 1550)) {vRange1 =1;} //Neutral
else if ((900 < channel1) && (channel1 < 1450)) {vRange1 =2;} //Links
else if ((1550< channel1) && (channel1 < 2100)) {vRange1 =3;} //Rechts
else {vRange1 =99;} // Fehler bei auslesen des channels
//#####################################################################
//сигнал Channel2 разбить на нескольок промежутков
//if (1000 < channel < 1150) {vRange =0;}
if ((1450 < channel2) && (channel2 < 1550)) {vRange2 =1;} //Neutral
else if ((900 < channel2) && (channel2 < 1450)) {vRange2 =2;} //Forward
else if ((1550< channel2) && (channel2< 2100)) {vRange2 =3;} //Backward
else {vRange2 =99;} // Fehler bei auslesen des channels
// stellen Servo ausgehend vom Wert, dass in vRange ist
// https://arduinogetstarted.com/de/reference/arduino-switch-case
switch (vRange1) {
case 1:// Neutral
pixels.setPixelColor(0, pixels.Color(250,150,0));
pixels.show();
delay(500);
break;
case 2:// Links
pixels.setPixelColor(1, pixels.Color(0,150,0));
pixels.show();
delay(500);
break;
case 3:// Rechts
pixels.setPixelColor(2, pixels.Color(0,150,250));
pixels.show();
delay(500);
break;
case 99: // nichts machen bleibt in letzter Position
break;}
switch (vRange2) {
case 1:// Neutral
pixels.setPixelColor(3, pixels.Color(150, 150, 0));
pixels.show();
delay(500);
break;
case 2:// Forward
pixels.setPixelColor(4, pixels.Color(0, 150, 0));
pixels.show();
delay(500);
break;
case 3:// Backward
pixels.setPixelColor(5, pixels.Color(0, 150, 150));
pixels.show();
delay(500);
break;
case 99: // nichts machen bleibt in letzter Position
break;}
}
Показать весь код