Zum Inhalt springen

Antwort auf: Servomotor und ws2812 RGB stripe

Projekte und Tutorials für Arduino Foren StartHardware-Forum Servomotor und ws2812 RGB stripe Antwort auf: Servomotor und ws2812 RGB stripe

#7145
Thorsten
Teilnehmer

Hi….

ich hab das jetzt erstmal so umgesetzt….und es funktioniert…..

#include <Servo.h>
#include <Adafruit_NeoPixel.h>

#define PIN 7
#define BRIGHTNESS 50

const int rfdown = 2;
const int rfup = 3;
const int servo = 9;

int pos = 0;
int i = 0;
Servo rfServo;

Adafruit_NeoPixel strip = Adafruit_NeoPixel (18, PIN, NEO_GRB + NEO_KHZ800);
 

void setup() {
  // put your setup code here, to run once:
  strip.begin();
  strip.show();
  strip.setBrightness(BRIGHTNESS);

  pinMode(rfdown, INPUT);
  pinMode(rfup, INPUT);

  for(i=0;i <strip.numPixels(); i++){
    strip.setPixelColor(i,255,0,0);
    }
    strip.show();
    delay(2);
    

  rfServo.attach(servo);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(rfdown)==HIGH){
    rfServo.detach();
    redfade();
    delay(1);
    rfServo.attach(servo);
  for(pos = 95; pos >= 0; pos -= 1){
    rfServo.write(pos);
    delay(30);
  }
      for(i=0;i <strip.numPixels(); i++){
      strip.setPixelColor(i,255,0,0);
    }
    strip.show();
    delay(2);
  
}

  if(digitalRead(rfup)==HIGH){
    rfServo.detach();
    redfade();
    delay(1);
    rfServo.attach(servo);
    for(pos = 0; pos <= 95; pos +=1){
      rfServo.write(pos);
      delay(30);
    }
        for(i=0;i <strip.numPixels(); i++){
      strip.setPixelColor(i,255,0,0);
    }
    strip.show();
    delay(2);
  }
}

void redfade(){
  uint16_t i,j;
  for (j=15;j<255;j++){
    for(i=0;i <strip.numPixels(); i++){
      strip.setPixelColor(i,j,0,0);
    }
    strip.show();
    delay(2);
  }
  delay(50);
  
    for(j=255;j>15;j--){
    for(i=0;i<strip.numPixels(); i++){
      strip.setPixelColor(i,j,0,0);
    }
    strip.show();
    delay(2);
  }
  delay(50);

    for (j=15;j<255;j++){
    for(i=0;i <strip.numPixels(); i++){
      strip.setPixelColor(i,j,0,0);
    }
    strip.show();
    delay(2);
  }
  delay(50);
  
    for(j=255;j>15;j--){
    for(i=0;i<strip.numPixels(); i++){
      strip.setPixelColor(i,j,0,0);
    }
    strip.show();
    delay(2);
  }
  delay(50);
}

Der Kollege soll das mal testen….ob der Rangefinder für die paar sec. oben hält die das Licht fadet….da ich den Servo wieder auf attached setzte nachdem er die Position erreicht hat hält er die ja dann auch…geht nur um die Blinksequenz…