Go Down

Topic: Wie Projekt umsetzen (Read 1 time) previous topic - next topic

Kadara

Aber geht das denn, daß der Slave informationen vom Master erhält und aber ans Dsplay welche sendet?

HotSystems

Aber geht das denn, daß der Slave informationen vom Master erhält und aber ans Dsplay welche sendet?
Warum sollte das nicht gehen, wenn du es richtig programmierst.

Informiere dich über "I2C Master Slave"
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

ardubu

#17
Dec 11, 2017, 03:15 pm Last Edit: Dec 11, 2017, 03:19 pm by ardubu
als Lib könntest du mal diese SSD1306Ascii versuchen.
Braucht für Hallo World gerade 2,6kB Flash und 49B Ram

noiasca

#18
Dec 11, 2017, 08:09 pm Last Edit: Dec 11, 2017, 08:21 pm by noiasca
Der Sketch in #6 kompiliert bei mir mit

Der Sketch verwendet 11.708 Bytes (36%) des Programmspeicherplatzes. Das Maximum sind 32.256 Bytes.
Globale Variablen verwenden 1.348 Bytes (65%) des dynamischen Speichers, 700 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.

mit Umbau auf eine For Schleife
Code: [Select]

  for (uint8_t i = 2; i<11; i++)
  {
      if (DMXSerial.read(i-1)>127) {
        digitalWrite(i,LOW);
      } else {
        digitalWrite(i,HIGH); 
      }
  }


sind es nur mehr:
Der Sketch verwendet 11.578 Bytes (35%) des Programmspeicherplatzes. Das Maximum sind 32.256 Bytes.
Globale Variablen verwenden 1.348 Bytes (65%) des dynamischen Speichers, 700 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.

das wären mal die ersten 130 Byte eingespart.

P.S.: Das F Makro bringt bei einem Print natürlich noch nicht viel, aber sobald das Projekt "wächst" wird es auch mehr Ausgaben geben und dann zahlt es sich definitiv aus, wenn RAM gespart wird!

Edit: off-by-one ausgebessert
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

noiasca

... ich weis off by one ... aber ich glaub du siehst es eh ;-)
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

postmaster-ino

#20
Dec 11, 2017, 08:31 pm Last Edit: Dec 11, 2017, 08:33 pm by postmaster-ino
Hi

... hmm, da wurde Das schon umgesetzt ... bleibt jetzt trotzdem hier drin!
Code: [Select]

      if (DMXSerial.read(7)>127) {
        digitalWrite(8,LOW);
      } else {
        digitalWrite(8,HIGH);  
      }

Bei jeder dieser Abfragen schaltest Du den Pin mit der Nummer EINEN höher als die Abfrage - Das schreit förmlich nach einer Schleife!
Selbst, wenn die Ausgangs-Pins wild gewürfelt werden, kannst Du Diese mit einem Array wieder in der richtigen Reihenfolge aneinander reihen.

Denke, daß für jeden Kanal ein ganzen Byte übertragen wird, liegt am DMX?
Weil für AN und AUS würde mir persönlich ein Bit reichen - also pro Kanal (wobei dann die Abfrage anders aussehen würde)

MfG

noiasca

#21
Dec 11, 2017, 08:39 pm Last Edit: Dec 11, 2017, 09:44 pm by noiasca
ja ... offenbar ist die DMX Startadresse von diesem Slave 1 ... und DMX schickt grob vereinfach gesagt einfach für max 512 Geräte je ein Byte und beginnt dann wieder von vorne.

D.h. du setzt die Startadresse von einem Gerät und wenn - wie in diesem Beispiel - das Gerät 9 Kanäle hat, dann muss dieser Slave 1 ... 9 übernehmen und die restlichen Bytes ignorieren, bis nach dem 512 byte wieder seine 9 kommen
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

postmaster-ino

Hi

Besten Dank für die Erklärung, versteh sogar ich :) Das verdiente Karma möge Dir gut tun.

Ist doch eigentlich gar nicht so kompliziert, das Bühnenzeugs.

MfG

noiasca

naja durch die ganze Libs wird das schon ziemlich vereinfacht.

Ich hab mir mal einen ESP hergerichtet als DMX Master, Weboberfläche zum einstellen von den Channels, Szenen Abspeichern, ziemlich frei zur Laufzeit programmierbar was die einzelnen Kanäle sind und so ... ja das geht schon ziemlich hurtig. Nette Spielerei jetzt für Weihnachten sowieso. LDR dazu und ab geht die Post sobald es dunkel wird.

Aber Slaves kaufe ich dennoch lieber fertig ;-)



DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

Tommy56

Schön. Willst Du dem TO nun helfen oder nur Deine Lösung ohne Code promoten?

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

noiasca

sorry war OT an Postmaster gerichtet um ihm die Lust an DMX zu vergrößern. Wenns dem TO stört kann ich es auch wieder löschen ...
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

Kadara

Whow, hier gings ja richtig weiter.

Ich seh schon. Die Datenmengen sind sehr begrenzt. Was aber auch möglichkeiten auf tut mit kleinigkeiten viel zu erreichen.

Mit der for Schleife oben muß ich mich noch eingehender befassen. Prinzipiell Kenn ich die Funktion, aber mit den Variablen sagt mir das nichts.

Gibt halt vieles was ich noch nicht weiß, aber ich denk das is nach ner Woche ganz normal.

Meine Gyro Sensor hab ich auch soweit am laufen, daß er genau das macht was ich will.

Ich hab nur noch irgend nen Adressenkonflikt im I2C. Da gibts auch noch viel zu lesen.

Und die SSD1306Ascii Lib von gestern krieg ich irgendwie noch nicht zum laufen.

Ich bekomm immer den Fehler

"Ungültige Bibliothek C:\Program Files (x86)\Arduino\libraries\SSD1306Ascii-master in C:\Program Files (x86)\Arduino\libraries\SSD1306Ascii-master gefunden"

Das Display und den Gyro hab ich grade in einem Programm und auch wieder 79%.

An der Lib muß ich am schnellsten was ändern.

Zur Not hätt ich noch nen Mega da. Aber den Find ich einfach zu sperrig.

So ein Nano macht sich da viel besser.

Im Endeffekt entwickel ich hier einen Universal Empfänger für meine Einsatzzwecke.

Gebohren wurde die Idee aus der Not, wie so oft.

Wir machen Shows und haben also viel mit Theatertechnik und DMX zu schaffen.

Da bastelt man viel rum und ist bei vielen Sachen dem Freien Markt ausgeliefert.

So auch bei 4 Geräten mit kaputten DMX Karten.

Die einzig brauchbare lösung mit SSR und externem Display die ich gefunden habe, waren schon knapp 400 Pro Karte. Bei 4 Geräten nicht tragbar.

Außerdem ist die Konstruktion grenzwertig, da kein Notaus und reine DMX bedienung Herstellerseitig vorgesehen ist.

Einen Kippschalter besitzen die Geräte auch nicht, was ich auch sehr grenzwertig sehe.

Auf dem Markt werde ich also keine saubere Lösung finden wenn ich sie nicht selbst mach.

So kann ich später sogar das LCD Display der Geräte adaptieren und muß nur ein paar anschlüße für Notaus und manuelle bedienung dazufügen und ich habe die Geräte nicht nur repariert, sondern massiv aufgewertet.

Außerdem ist jetzt eh Winter. Bis zu Frühjahr kann ich basteln und testen.

ElEspanol

Mach mal den -master bei SSD1306Ascii-master weg und starte die IDE neu

gregorss

...
Außerdem ist jetzt eh Winter. Bis zu Frühjahr kann ich basteln und testen.
Und Du kannst lernen, kürzere und besser lesbare Postings zu schreiben. Dito Programme :-)

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen („Großes Lötauge", Medizinmann der M3-Hopi)
Nicht lange fackeln, lass' Backen wackeln! (Seeed)

ardubu

Quote
Ich bekomm immer den Fehler

"Ungültige Bibliothek C:\Program Files (x86)\Arduino\libraries\SSD1306Ascii-master in C:\Program Files (x86)\Arduino\libraries\SSD1306Ascii-master gefunden"
Du darfst aus dem Ordner SSD1306Ascii-master nur den Ordner SSD1306Ascii in den Arduino Libraries Ordner kopieren.

Go Up