2 sketche verbinden

Hallo Gemeinde,

ich bin noch ziemlich amAnfang was Arduino betrifft.
Ich habe aber schon einige kleine Projekte umgesetzt.
Jetzt möchte ich für mein RC Car ein knight Rider licht und ein Blaulicht einbauen mit w2812 LEDs.
Die Sketche habe ich auch schon gefunden. Jetzt aber die Frage. kann ich beide Sketche auf ein Nano aufspielen? also das eine auf Pin5 und das andere auf Pin6?
Wenn ja kann mir das jemand erklären bitte?
Viele Grüße aus München sagt Micha

wie geht das?

es geht nicht

The message exceeds the maximum allowed length (9000 characters).

DAS ist aber dann schon ein mords-ausgefressener Sketch - für zwei kleinere Blink-Animationen ...

ja es soll in vielen verschiedenen versionen Blinken :slight_smile:

das Lauflicht sollte 6 haben und das Blaulicht sind 5 oder 6 da muss ich noch schauen wieviele draufpassen.
Das Blaulicht ist auch ein Farbspiel. Aussen blau und innen Weiß. Soll bisl Amerikanisch sein.
DAs blinkt dann immer abwechselnd nach einem bestimmten muster.

ich habe 2 funktionierende Sketche die einzeln funktionieren. Ich kann auch 2 Nanos einbauen was aber quatsch wäre wenn ich beide Sketche auf ein Nano bekomme damit ich 2 PINs ansteuern kann mit je einem Sketch.
Wenns nicht geht ist es halt so. Aber ich wollte nur wissen ob es geht und wenn ja wie. Vielleicht hat ja mal einer ein kleinen Sketch wo man das sehen kann wie man solche Sketche verbindet.

Der Arduino hat leider nur einen Prozessorkern (glaube ich).
Daher kann der keine Prozesse gleichzietig darauf abspielen. Deswegen musst du die Prozesse direkt nacheinander Ablaufen lassen, sodass es für dich wirkt, als ob die Parallel laufen würden.
z.B.

schalte Pin1 aus;
schalte pin2 aus;
delay(pause);
schalte pin1 an;
schalte pin2 an;
delay(pause);
schalte pin1 aus;
schalte pin2 aus;

das wäre jetzt ein schalter, der zwei pins quasi gleichzeitig ein und aus schaltet. so etwas in der Art solltest du auch für deine Leds benutzen...

delay ist für quasiparallele Abarbeitung in dieser Form kontraproduktiv.

Gruß Tommy

(deleted)

noiasca:
quasiparallel ... das Detail finde ich schon wichtig

Wobei ich mir nicht mal sicher bin, ob das mit den notwendigen Libraries auch funktioniert.

man kann das auch mit einem einzigen Pin machen.

hier ein “Modellauto”: Rundumleuchte vorne (blau weiß), Rundumleuchte hinten (blau/rot), vorne ein Kitt-Scanner, der Wagen steht am Straßrand und daher blinkt er rechts.

/*
  Use pixels in a strip as separate objects
  by noiasca

  2020-03-02
*/

const byte ledPin = 12;                // Which pin on the Arduino is connected to the NeoPixels?
const uint16_t ledCount = 30;

#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel strip(ledCount, ledPin, NEO_GRB + NEO_KHZ800);

class BlinkLed {
  private:
    byte state = 1;       // 0 off, 1 blink high , 2 blink low
    unsigned long previousMillis;
    uint16_t on = 180;
    uint16_t off = 320;   // 180/320 is according ECE
    uint32_t colorOn = 0xAA0000;
    uint32_t colorOff = 0x000000;
    Adafruit_NeoPixel& obj;
    const byte id;

  public:
    BlinkLed(Adafruit_NeoPixel& obj, byte id):
      obj(obj),
      id(id)
    {}

    void set(uint16_t _on, uint16_t _off)  // modify on/off times during runtime
    {
      on = _on;
      off = _off;
    }

    void setState(byte _state)            // 0 switch off blinking; 1 Switch on blinking;
    {
      state = _state;
    }

    void setColor(uint32_t newColorOn, uint32_t newColorOff)
    {
      colorOn = newColorOn;
      colorOff = newColorOff;
    }

    void tick()
    {
      if (state)
      {
        uint32_t currentMillis = millis();
        if (state == 1 && currentMillis - previousMillis >= on) {
          // save the last time you blinked the LED
          obj.setPixelColor(id, colorOn);
          obj.show();
          state = 2;
          previousMillis = currentMillis;
        }
        if (state == 2 && currentMillis - previousMillis >= off) {
          // save the last time you blinked the LED
          obj.setPixelColor(id, colorOff);
          obj.show();
          state = 1;
          previousMillis = currentMillis;
        }
      }
    }
};


class Scanner {
  private:
    byte state = 1;       // 0 off, 1 blink high , 2 blink low
    unsigned long previousMillis;
    uint16_t on = 200;
    uint32_t colorOn = 0xAA0000;
    uint32_t colorOff = 0x000000;
    int8_t direction = 1;     // direction
    Adafruit_NeoPixel& obj;
    const byte id;            // first pixel of this group
    const byte leds;          // how many leds

  public:
    Scanner(Adafruit_NeoPixel& obj, byte id, byte leds):
      obj(obj),
      id(id),
      leds(leds)
    {}

    void set(uint16_t _on)  // modify on/off times during runtime
    {
      on = _on;
    }

    void setState(byte _state)            // 0 switch off blinking; 1 Switch on blinking;
    {
      state = _state;
    }

    void setColor(uint32_t newColorOn, uint32_t newColorOff)
    {
      colorOn = newColorOn;
      colorOff = newColorOff;
    }

    void tick()
    {
      if (state)
      {
        uint32_t currentMillis = millis();
        if (currentMillis - previousMillis >= on) {
          // save the last time you blinked the LED
          Serial.println(state);
          obj.setPixelColor(id + state - 1, colorOff);
          state = state + direction;
          if (state > leds) {
            state = leds - 1;
            direction = -1;
          }
          else if (state < 1)
          {
            state = 2;
            direction = 1;
          }
          obj.setPixelColor(id + state - 1, colorOn);
          obj.show();
          previousMillis = currentMillis;
        }
      }
    }
};

BlinkLed turnsignalLeft(strip, 0);       // name of strip object, pixelId in strip
BlinkLed blinkLedFront(strip, 1);        // name of strip object, pixelId in strip
BlinkLed blinkLedRear(strip, 6);         // name of strip object, pixelId in strip
BlinkLed turnsignalRight(strip, 7);      // name of strip object, pixelId in strip

Scanner scanner(strip, 2, 4);            // name of strip object, first pixelId, number of pixels for this group

void setup() {
  Serial.begin(115200);
  Serial.println(F("\nStart"));

  strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)

  blinkLedFront.setColor(0x0000AA, 0x555533);    // blink blue/white

  blinkLedRear.setColor(0x0000AA, 0xFF0000);     // blink blue/red
  blinkLedRear.set(400, 200);

  turnsignalRight.setColor(0xFF8000, 0x201000);
  turnsignalRight.set(666, 666);                    // 1,5Hz +/-0,5Hz 30 % to 80 %

  turnsignalLeft.setColor(0xFF8000, 0x201000);
  turnsignalLeft.set(666, 666);                    // 1,5Hz +/-0,5Hz 30 % to 80 %
  turnsignalLeft.setState(0);                      // switch off
}

void loop() {
  blinkLedFront.tick();
  blinkLedRear.tick();
  scanner.tick();
  turnsignalRight.tick();
  turnsignalLeft.tick();
}

im Prinzip kann man einzelne Leuchten auch auf einen anderen Pin legen, dazu legt man sich einen weiteren Streifen an, und verweist dann bei der Objektanlage auf den andere Strip.

Das liest sich schon sehr interessant.
Muss ich direkt mal nachbauen.
Bin gespannt wie es aussieht.

noiasca:
naja im Prinzip nichts besonderes, 8 bunte LEDs halt, wird für dich nicht so der Bringer sein ^^

Naja....ich lerne noch gern etwas dazu.
Mit den Leds habe ich bisher noch sehr wenig gemacht.

Einfach nur Interesse.

Danke an euch alle ich werde den sketch mir morgen mal anschauen.

Das Video ist ja süss aber das Lauflicht und das Blaulicht auf einem wollte ich ja nicht. Es ist ja getrennt. Blaulicht auf dem Dach und das Lauflicht im Ramschutz.

blackmitzucker:
Danke an euch alle ich werde den sketch mir morgen mal anschauen.

Das Video ist ja süss aber das Lauflicht und das Blaulicht auf einem wollte ich ja nicht. Es ist ja getrennt. Blaulicht auf dem Dach und das Lauflicht im Ramschutz.

Das ist doch kein Problem.
Du kannst die einzelnen Leds doch anordnen wo du willst.
Das war ja nur zur Veranschaulichung.

Nun war ich doch heiss auf den Sketch und habe ihn mal Probiert. Garnicht schlecht habe ihn mir aber angepasst. Ich werde ihn morgen mal ans Fahrzeug bauen und schauen wie es ausschaut.

Noch ein Video dazu. Wenn ich das Auto morgen fertig bekomme stelle ich das Video auch rein.
Vielen lieben Dank an euch alle.

blackmitzucker:
https://youtu.be/5cswyY1-EHM

Noch ein Video dazu. Wenn ich das Auto morgen fertig bekomme stelle ich das Video auch rein.
Vielen lieben Dank an euch alle.

Ein Link wäre da deutlich besser.
Dann haben die Mobilisten es einfacher.

Ich dachte auch das es ein Link wird aber nach dem Absenden sah es nicht danach aus
Tut mir Sorry

das Video dazu