[GELÖST] Zwei Metro Mini via I2C verbunden - Hochladen bzw. reset?

Die Frage ist was fehlt wenn man einen - nur einen - ESP32 nimmt und die anderen Sachen einfach weglässt?
Was fehlt einem ESP32 um drei Analogports auszulesen, einen Neopixel anzusteuern und ein wenig Wifi zu machen?

Nirgends muss WIFININA laufen ... (ich wüsste noch nicht wozu)... also kann es auch nicht die fastlib stören.

Mit ESP32 meine ich halt ein Board mit einem ESP32 und ein wenig Hühnerfutter, keine Kombination ausATmega und ESP.
so etwas z.B.

Ja, das war der andere Vorschlag von zuvor - einen uC mit ESP32 (oder zwei uC via I2C).

Es wäre schön gewesen, wenn es sogar mit den vorhandenen Bauteilen geklappt hätte, oder notfalls mit einem zweiten uC via I2C. Schade, daß sich FastLED, WIFININA und auch I2C auf unterschiedliche Weise in die Quere kommen.

Ich habe, wie gesagt, auch einen NodeMCU mit ESP32 zur Hand (das AZDelivery ESP32 NodeMCU Module müßte ich erst bestellen), mit dem das auch ginge, richtig? Er hat genügend ADC-Pins und eine gute Anleitung habe ich gerade gefunden.

Hi,
ich hake mal hier ein:

Ist das nicht noch einfacher zu lösen? fastled liefert doch eine Funktion .delay(wartezeit in ms) schon mit, die genau das macht. Eben nicht mit delay() sondern da ist was rumgebaut.

Ab Zeile 123
lässt sich das nicht verwenden?

Zusätzlich würde ich trotzdem wieder die Prüfung letzter Wert != aktueller Wert einfügen.
Jede gesparte Übertragung ist gesparte Zeit.

Das ginge ggfls. auch mit einem "Sicherheitsventil" das nach 5 Umläufen -> also 5 Sekunden, eine Übertragung erzwingt.

void loop()
{
  uint32_t jetzt = millis();
  static uint32_t vorhin = jetzt;
  static uint8_t umlauf = 0;
  static uint8_t lasttxValue = 0;
  if (jetzt - vorhin >= 1000)
  {
    vorhin = jetzt;
    umlauf++;
    txValue = map(analogRead(analogPin), 0, 1023, 0, 254);
    if (lasttxValue != txValue || umlauf > 5)
    {
      Wire.beginTransmission(SLAVEADDRESS);
      Wire.write(txValue);
      Wire.endTransmission();
      setzeFarbe(txValue);
      Serial.print(F("TX: ")); Serial.println(txValue);
      umlauf = 0;
    }
  }
}

Würde ich an deiner Stelle mal ausprobieren.

Zeig mal einen Link / ein Bild / ein Pinout ...

Noch habe ich nichts gesehen, was dem entgegenstände.

picnic = problem in chair not in computer (war mal bei Jauch eine Frage) :rofl:

These: Drei analoge Eingänge abfragen, 24 LED-Pixel ansteuern und noch Wifi, das macht Deine Kombi nebenher.

Was machst Du denn mit WIFININA? Datenaustausch mit den anderen Stellen oder Verbindung mit dem Internet? Als STA (Station Mode) oder AP (Access Point)?

Adafruit Airlift ist doch ein UNO (ATmega328P) mittels SPI mit einem ESP32 verbunden, da hast Du doch schon zwei Prozessoren, oder?

Mit Französisch habe ich es leider nicht, aber es gibt auch englische Seiten wie Getting Started with the ESP32 Development Board.

Oder von mir Anleitung: Einführung zu fipsok.de

NodeMCU mit ESP aus meinem Kommentar weiter oben. So sieht es auch aus, wie es vor mir liegt.

Die von AZ, wie ich sie verwende, haben eine etwas andere Pinanordnung, dürften sonst aber gleich sein.

Eine Charge möchte zum Upload der IDE zwischen EN und GND einen Kondensator (ich verwende 10 µF), eine zweite Charge benötigt den Kondensator nicht. Wie es bei Dir ist, mußt Du probieren.

schaut gut aus. Probier das mal aus.
Aufpassen bei den Analog-Eingängen dass du die richtigen nimmst - aber ich vermute agmue hilft dir da sicher auch gut weiter.

Meinst Du, ich sollte? :blush:

Die Seite ESP32 Pinout Reference: Which GPIO pins should you use? gibt da gut Auskunft.

" Note: ADC2 pins cannot be used when Wi-Fi is used." Quelle

ich wusste dass du das zu Hand hast ^^.
In seiner Anleitung standen leider keine ADC1/ADC2 zuordnungen dabei.

Das ist ein Erweiterungsboard für uCs wie Metro Minis oder Trinket Pros, die kein eigenes WLAN-Modul haben. Ich habe das schon in über 40 Projekten benutzt. Der Adafruit AirLift FeatherWing benötigt Adafruits fork der WIFININA library. Nur kam bei allen anderen Projekten nie zur gleiche Zeit FastLED oder I2C zum Einsatz.

Das werde ich dann so machen. Passive Bauteile habe ich zum Glück genügend hier.

:innocent:

Dann mögen Dir meine Behauptungen respektlos erscheinen, aber ich möchte Dich aus der Schleife "Ich habe Erfahrung, aber FastLED ist blöd!" herausholen. Wenn ich übertreibe, dann um es deutlich zu machen! Ich verweise auf meine These weiter oben.

Ich hatte Dir noch ein paar Fragen gestellt, deren Beantwortungen hilfreich wären.

Ich habe nirgends geschrieben, das FastLED "schlecht" sei.

Die FastLED library (ebenso die NeoPixel library) ist anscheinend inkompatibel mit WIFININA und I2C. Also nun das NodeMCU Teil ausprobieren.

FastLED ist nicht per se inkompatibel. Während der Übertragung der Daten sind die Interrupts gesperrt. Aber man muss ja vielleicht nicht ständig die LED Daten aktualisieren.

Nein, das Problem sind nicht die Libs, sondern die WS2812. Mit APA102 (getrennte Daten- und Taktleitungen) haben beide Libs kein Problem zumindest mit I2C.

Gruß Tommy

Über den Punkt bin ich schon weg. Ich werde ja nicht gehört...

Kannst Du mir

CFastLED::delay(unsigned long ms)

erklären? siehe #23 - Dann bin ich hier raus.

So wie es jetzt ist, also ohne merklichen Verzug, sieht es plausibel und gut aus (Ansagen, keifende Fahrgäste, Zugeinfahrt, Türenschließwarnung, usw.). Ein sichtbarer Verzug wäre wohl nicht so gut.

Nur mal als Frage in den Raum gestellt.
Lasse eine LED blinken.
Welche Blinkrate erkennt Dein Auge noch als blinken?

Wie oft schreibst Du .show() in einer Sekunde?

Ich möchte Dich von einem nicht merklichen Verzug überzeugen!

Derzeit sehe ich die Möglichkeit, daß nicht die Bibliotheken das Problem sind, sondern deren Anwendung.

Was machst Du mit Wifi?