Hallo liebe Gemeinde, ich hab mal das Spiel nachgebaut, das es hier in einem kurzen Video zu sehen gibt. Beitrag "Kennt jemand dieses Spiel?" Spielbeschreibung Es besteht auf 8 sternförmig angeordneten Lichtdomen mit ohmschen Kontakten (Drahtbügel). Acht Leute stehen im Kreis um den Aufbau herum, jedem ist ein Lichtdom zugeordnet. Nach dem Einschalten läuft erstmal ein Farbkreis, der bei Berührung von 2 Domen in eine Ampel wechselt. Mittels der Verbindung von Weiß zu einer der drei Farben wird der Schwierigkeitsgrad gewählt (rot=schwer, gelb=mittel, grün=leicht). Dann geht es los. Es erscheinen zufällige Muster mit zufälliger Farbe in einem zufälligen Winkel angeordnet. Mit fortschreitender Spieldauer werden es komplexere Muster. Dabei ist es das Ziel, daß die Leute, deren Lichtdom aufleuchtet sich die Hände geben müssen, sprich mit einer Hand den Dom und mit der andern Hand den Mitspieler berühren müssen, um einen ohmschen Kontakt herzustellen. Das einfachste Muster sind 2 gegenüberliegende Dome. Komplexere Muster bestehen aus 3 oder mehr Domen, einige haben sogar mehrere Farben. Dort müssen die einzelnen Farbgruppen getrennten Kontakt herstellen, d.h. es darf keinen "Kurzschluß" der Farben geben. Gelingt es nicht innerhalb einer gewissen Zeit von ein paar Sekunden die richtigen Kontakte herzustellen, ist das Spiel verloren. Hardware Herzstück der Elektronik ist ein ATmega328. Dieser steuert acht intelligente LEDs vom Typ WS2812B direkt über 8 IOs an. Die Verbindungen der ohmschen Kontakte werden über die acht AD-Wandler Eingänge mittels Matrixscan ermittelt. Die passiven Eingänge sind dabei hochohmig (1MOhm) auf VCC/2 gelegt. Diese Methode ist außerordentlich empfindlich und robust, um den Haut-und Körperwiderstand zu messen. ESD-Schutzdioden an jedem Eingang sollen das Schlimmste verhindern, wenn das Spiel in sehr trockener Umgebung verwendet wird. Die Stromversorgung erfolgt mit 5V über USB bzw. eine Powerbank. Die maximale Stromaufnahme wird in erster Linie durch die LEDs bestimmt und liegt bei ca. 480mA. Real sind es im Spiel ca. 100 mA, denn es leuchten selten alle LEDs gleichzeitig. Software Die Software enthält eine Statemachine, welche den Spielablauf steuert. Eine ganze Masse an Hilfsfunktionen zum Auslesen und Auswerten der Kontaktmatrix sowie zur Erzeugung der LED-Muster stehen bereit. Weitere Funktionen waren in der Testphase von Nöten, um Zwischenergebnisse mittel Soft-UART auszugeben. Die Farben und Verbindungsmuster liegen als Arrays im Flash, ebenso der Spielplan der einzelnen Schwierigkeitsgrade. Dort kann man pro Level vorgeben, aus welchem Bereich die Muster ausgewählt werden sollen und wieviel Zeit pro Level zur Verfügung steht. Einige Powerbanks brauchen einen Mindeststrom, damit sie ihren Ausgang nicht abschalten. Dieser wird hier nur pulsartig mittels MOSFET und 2 Widerständen erzeugt (200mA, 100ms Pulsbreite, 5s Periodendauer), damit sinkt der mittlere Strom deutlich. Damit der Pseudo-Zufallsgenerator "zufälliger" arbeitet, läuft dieser immer mit 100Hz im Hintergrund. Damit werden bei jedem Einschalten immer andere Muster und Farben erzeugt, da es praktisch unmöglich ist, auf 10ms genau ein neues Spiel zu starten. Über PB7 können per Soft-UART Debugdaten ausgegeben werden, welche mittels passendem Adapterkabel ala FTDI am PC empfangen werden können. Mechanik Die Lichtdome bestehen aus 12cm Glasschüsseln, die gibt es sehr preiswert für ca. 1 Euro auf Ebay. Diese wurden innen mit einer speziellen Farbe besprüht, welche einen Milchglaseffekt erzeugt. Dupli Color 263231 https://www.amazon.de/Dupli-Color-263231-Dupli-Color-Milchglas-Effekt/dp/B007TWNQYY Dadurch wird das Licht gleichmäßiger, man sieht die LED und das Kabel nicht. Beim Sprühen wurde 5 mal eine sehr dünne Schicht aufgetragen und zwischendurch ca. 30min gewartet, damit diese trocknet. Wenn möglich sollte man besser gleich Glas- oder Kunststoffschüsseln mit Milchglas kaufen, das spart die Lackierung. Die Kontakte bestehen aus 1mm versilbertem Blankdraht, welcher als Kreuz auf die Schüssel geklemmt und in der Mitte verlötet wurde. Der Boden besteht aus einer 2mm Hartpapierplatte, die mittels Stichsäge kreisförmig ausgesägt wurde. Dabei ist auf eine Passung mit minimalem Spiel zu achten, damit klemmt sie die Drahtbügel gleich fest. Die LEDs sind an 6pol Flachbandkabel direkt angelötet. Achtung! Beim Zerschneiden der LED-Streifen darauf achten, daß die Lötkontakte an der EINGANGsseite stehen bleiben! Die LED wird mittig auf die Grundplatte geklebt und das Kabel mittels Epoxidharz verklebt. Vor dem Schließen der Grundplatte wird das Sensorkabel innen an den Drahtbügel angelötet. Zum Schluß verleihen je drei Gummifüße den Domen Halt auf einer Tischplatte. Hinweise Der Untergrund, auf dem die Spieler stehen, sollte sehr gut isolieren, denn sonst kommt es je nach Schuhwerk und dessen Leitfähigkeit zu Fehlmessungen bei der Prüfung der Kontaktmatrix. Ein trockener Holz-, Stein- oder Kunststofffußboden ist angeraten. Eine feuchte Wiese, Erdboden oder gar Schlamm (Festivals, Camping) sind ungeeignet. Ebenso dürfen sich nebeneinander stehende Spieler nicht anderweitig berühren, das verursacht auch Fehlmessungen. Die aktuelle Firmware ist mit ~4,5kB relativ klein, sodaß auch ein ATmega8 oder ATmega88 nutzbar ist. Die .elf Datei enthält auch schon alle Einstellungen der Fuses. Bei der Verwendung der .hex Datei muss die DIV_8 Fuse deaktiviert werden (Haken entfernen == auf 1 setzen). Den Boden der Lichtdome kann man ggf. aus weißem Material herstellen oder weiß lakieren, das sieht ggf. besser aus als weißes Milchglas mit schwarzem Boden. Viel Spaß beim Nachbauen und natürlich besonders beim Spielen
Sehr schöne Umsetzung! Das werde ich auf jeden Fall nachbauen, danke! Hast Du von der Hauptplatine vielleicht mehrere herstellen lassen und hast noch eine übrig? ;-)
Frank M. schrieb: > Sehr schöne Umsetzung! Das werde ich auf jeden Fall nachbauen, danke! > > Hast Du von der Hauptplatine vielleicht mehrere herstellen lassen und > hast noch eine übrig? ;-) Jain, ich hab zwar noch ne 2. Platine, die ist auch schon bestückt und getestet, aber ebenso auch verplant.
Hmmm, da hat sich wohl beim letzten Aufräumen und hübsch machen ein Fehler in die Software eingeschlichen. Schöner Mist! Dabei wurden keine Kombinationen mit mehr als 1 Farbe erkannt! Im Anhang das korrigierte Projekt.
To whom it may concern Ich hab mal 10 Platinen in China bestellt, die sollten so in 2 Wochen da sein. Wer welche haben will, bitte melden. Die Rohplatine gibt es bei mir für 2,50 Euro incl. Versand im Brief, vollbestückt und programmiert für 10 Euro incl. Versand.
Beitrag #5686369 wurde von einem Moderator gelöscht.
Ich hab die Hardware noch mal überarbeitet und dabei die Platine von 70 auf 64mm Durchmesser geschrumpft. Außerdem gibt es jetzt eine stehende Micro-USB-Buchse, damit ist nichts mehr auf der Rückseite bestückt. Es sind noch 5 Platinen verfügbar, der freundliche Chinese hat 2 mehr eingepackt.
Leiterplatten kamen gestern gut verpackt an. Vielen Dank dafür.
Erst einmal ein großen Dank an Falk für die Platine! Und natürlich möchte ich das Spiel auf unserem Festival, also draußen spielen. Einen isolierenden Untergrund werden wir schon schaffen. Was sind denn die hellsten LED, die ich dafür verwenden kann? Oder ist es möglich einzelne WS2812 LED parallel zu betreiben? (Ohne die Software anpassen zu müssen) Gruß Kolja
Kolja L. schrieb: > Und natürlich möchte ich das Spiel auf unserem Festival, also draußen > spielen. > Einen isolierenden Untergrund werden wir schon schaffen. Holzplatten, Holzpalette, ein alter PVC-Belag etc. > Was sind denn die hellsten LED, die ich dafür verwenden kann? Keine Ahnung. Aber wenn du gegen Sonnenlicht zur Mittagszeit ankämpfen willst, wird das eher eng. > Oder ist es möglich einzelne WS2812 LED parallel zu betreiben? > (Ohne die Software anpassen zu müssen) Sollte funktionieren, so 3-5 parallel sollte der AVR noch problemlos treiben können.
Ok, hier die letzte kleine Änderung. Die Schlitze für die Micro-USB-Buchse waren ein wenig zu groß. Eigentlich werden dort 0,5mm Schlitze gefordert, die machen aber viele Hersteller nicht, so auch Elecrow. Dort sind 1mm Schlitzbreite das Minimum (mit 0,8mm Fräser + Aufkupferung). Also habe ich die beiden seitlichen Schlitze in 0,9mm Bohrungen geändert, das sollte passen. Der mittlere Schlitz wurde etwas verkürzt. Damit sollte die Buchse einfacher zentriert und gelötet werden können. Außerdem hab ich die Stückliste korrigiert, da war noch die alte, horizontale USB-Buchse drin 8-0 Anbei auch das ELF-File für den ATmega88, den hab ich auf den 10 Platinen verbaut, der reicht. Das ELF-File des großen Bruder läuft dort nicht, weil die Interruptvektortabelle nicht paßt!
Hallo liebe Gemeinde, es klingt vielleicht albern, aber ich frage mal alle Käufer von damals, ob sie alle Platinen verbraucht habe. Denn ich würde EINE brauchen, ich will nochmal ein Spiel bauen, dafür aber nicht 10 Platinen in China bestellen. Kann einer von euch wieder eine zurückverkaufen? ;-) MfG Falk
leg doch ne neue runde auf bedarf gibt es genugt einmal voll bestückt bitte ;-)
OK, ich bestelle wieder welche. Wenn jemand welche will, muss er es bis Montag hier kund tun. Allerdings gibt es diesmal nur unbestückte Platinen, den Lötaffen mach ich nicht mehr ;-)
Hallo Falk, ich nehme auch eine Platine. PN ist unterwegs. Gruß Oliver
Ok, ich hab mal 20 Platinen bestellt, die sollten in 3-4 Wochen hier sein. Wer welche haben will, schreibt mir eine PM mit Postanschrift. Kostenpunkt 2 Euro/Platine und 2 Euro Versandkosten. Die Platinen sind UNBESTÜCKT!
:
Bearbeitet durch User
Ok, es hat ein "wenig" länger gedauert. Die erste Lieferung per Airmail (4-8 Wochen Laufzeit) ist anscheinend auf der Seidenstraße verschollen, nach 4 Monaten kam da nix mehr. Also neue Bestellung, diesmal Lieferung per DHL. Hat auch alles funktioniert. Aber oh Schreck, DHL wollte nochmal extra 23,22 Euro haben, davon über 15 Euro Kapitalbereitstellungsprovison + MWst und knapp 9 Euro EU-Steuer! WAAAAAAS? https://tradingshenzhen.com/de/faqs/fragen-zu-bestellung-versand-zoll/dhl-kapitalbereitstellungsprovision.html Egal, jetzt ist der Kram hier. 20 Platinen waren bestellt, 24 geliefert, Danke nach Shenzen. Damit sind die Platinen leider etwas tuerer geworden. Es gibt nur UNBESTÜCKTE Platinen a 3 Euro + 2 Euro Versandkosten. Wer welche haben will schreibt eine PM an mich mit seiner Postanschrift. Zahlung per PayPal bevorzugt, ggf. auch Überweisung. 20 Platinen sind noch verfügbar. Zwei Leute haben schone welche bestellt, oliver_s (1x) und phpmysqlfreak (2x), die gehen dann Montag raus.
Was für ein Surface-Finish haben die Platinen (HASL mit oder ohne Blei)?
HASL, aber ob bleifrei oder nicht kann ich nicht genau sagen. Elecrow bietet beides an, das gespeicherte Projekt sagt nur HASL. Vermutlich bleihaltig. Sollte für den Hobbybastler aber keine Rolle spielen.
Die PN von dir kam an, Falk. - Und das Geld ist raus ;) Auch eine separate Begleit-Email habe ich geschickt, da ich nicht weiß, ob das Forum dich bereits wieder kontaktieren kann. - Ich erhalte oben ab und an noch immer den Warnhinweise zu GMX, 1und1 und co.
Ist es nicht sehr unverantwortlich, in CORONA-Zeiten ein Spiel rauszubringen, wo viele Leute nich nur eng zusammen stehen, sondern sich sogar noch BERÜHREN müssen? Hmm...
Pat B. schrieb: > Ist es nicht sehr unverantwortlich, in CORONA-Zeiten ein Spiel > rauszubringen, wo viele Leute nich nur eng zusammen stehen, sondern sich > sogar noch BERÜHREN müssen? Hmm... Im Gegenteil! Das wird für viele Menschen eine zwingend nötige Therapie, ihre Coronaphobie zu überwinden und wieder Nähe und Körperkontakt mit anderen Menschen herzustellen und dabei zu erfahren, daß man dadurch NICHT stirbt! (Leute gibt's)
Also 3 Wochen Krankenstand mit Geschmacksverlust bis heute hat mir gereicht. Da brauch ich kein Spiel um das zu wiederholen und keine Menschen die mir sagen ist doch alles nur Einbildung. Stimmt schon - ich bin nicht gestorben. Aber nochmal brauch ich das echt nicht. walta
Walta S. schrieb: > Stimmt schon - ich bin nicht gestorben. Aber nochmal brauch ich das echt > nicht. Hmm, wenn jemand mit den Fahrrad einen (schweren) Unfall hat, wird er dann wieder Fahrrad fahren? Oder sollte man Fahrradfahren für alle besser verbieten? https://de.wikipedia.org/wiki/Posttraumatische_Belastungsst%C3%B6rung Oder einfacher gesagt. Wer vom Pferd gefallen ist, muss so schnell wie möglich wieder aufsteigen!!!
>Oder einfacher gesagt.
Unglaublich wie unempathisch und egoistisch Leute sind. Schäm dich!
Pat B. schrieb: > Ist es nicht sehr unverantwortlich, in CORONA-Zeiten ein Spiel > rauszubringen, wo viele Leute nich nur eng zusammen stehen, sondern sich > sogar noch BERÜHREN müssen? Hmm... Schau mal bitte auf das Datum des ersten Beitrags mit der Spiel-Vorstellung - und dann wiederhole bitte nochmal das mit dem rausbringen in Corona-Zeiten. Dazu ist das Nachbauen auch ein schöner Zeitvertreib in Zeiten wie jetzt. Aber Hauptsache wieder was gesagt...
Beitrag #6562057 wurde vom Autor gelöscht.
Beitrag #6562070 wurde vom Autor gelöscht.
hallo, Platinen sind heute bei mir angekommen! Vielen Dank Falk! Viele Grüße Martin
Bei mir auch. Vielen Dank Falk. Falls du mir auf meine PN schon geantwortet hast, ist sie nicht angekommen.
Oliver S. schrieb: > Bei mir auch. Vielen Dank Falk. > Falls du mir auf meine PN schon geantwortet hast, ist sie nicht > angekommen. Ich habe nochmal direkt an deine Emailadresse geschrieben.
Falk B. schrieb: > Walta S. schrieb: >> Stimmt schon - ich bin nicht gestorben. Aber nochmal brauch ich das echt >> nicht. > > Hmm, wenn jemand mit den Fahrrad einen (schweren) Unfall hat, wird er > dann wieder Fahrrad fahren? Oder sollte man Fahrradfahren für alle > besser verbieten? > > https://de.wikipedia.org/wiki/Posttraumatische_Belastungsst%C3%B6rung > > Oder einfacher gesagt. Wer vom Pferd gefallen ist, muss so schnell wie > möglich wieder aufsteigen!!! Also ist deine Empfehlung sich nach einer Corona Infektion möglichst schnell wieder zu infizieren. walta
Walta S. schrieb: > Also ist deine Empfehlung sich nach einer Corona Infektion möglichst > schnell wieder zu infizieren. Die "also" Corona-Milben sind mittlerweile dazu gezwungen sich in sachfremden Threads auszudrücken. Das Spiel lässt gut an frischer Luft spielen, um vor Grippe, Masern etc. geschützt zu sein.
Beitrag #6589751 wurde vom Autor gelöscht.
Walta S. schrieb: > Also ist deine Empfehlung sich nach einer Corona Infektion möglichst > schnell wieder zu infizieren. Nein; Falks Empfehlung war, sich auch als Corona-Überlebender nicht zeitlebens zu Hause einzuschließen, Maske aufzuziehen und 2m Abstand zu Jedem einzuhalten (auch im Bett!), sondern möglichst frühzeitig wieder zu einem normalen Leben und normaler menschlicher Interaktion (inkl. Mimik, Gestik, Berührungen, dicht an dicht) überzugehen. Er sagte nicht, dass du, nachdem du einmal vom Rad fielst, in der Folge permanent regelmäßig vom Rad fallen sollst.
Horst G. schrieb: > Walta S. schrieb: >> Also ist deine Empfehlung sich nach einer Corona Infektion möglichst >> schnell wieder zu infizieren. > > Nein; Falks Empfehlung war, sich auch als Corona-Überlebender nicht > zeitlebens zu Hause einzuschließen Wobei, wenn ich mir die Sozial-, Empathie-, Interaktionskompetenzen und Diskussionsfähigkeiten einiger Teilnehmer hier so ansehe, der Menschheit damit wohl fast besser gedient wäre... zuschließen (von außen!) und gut. Ruhe im Karton. Und der Horst ist so eine Art Falk-Versteher, Falk-Orakel oder einfach nur ein Falk-Fanboy? :D Ich könnt euer kleines Blinklicht-Spielchen ja in "CORONA TOUCH" umbenennen - vielleicht wird die Suppe dann doch noch alle. Der C-Code ist übrigens stark verbesserungswürdig, und ich würde empfehlen - besonder über die Kommentare!!! - nochmal rüber zu gehen. Das ist nur GANZ KNAPP über der allerunterstent Teppichkante wenn ich das mal so sagen darf. Und dabei sollten wir nicht vergessen: wer austeilt, muss auch einstecken können. Der Falk ist immer sehr gut im ersterem.
:
Bearbeitet durch User
Pat B. schrieb: > Der C-Code ist übrigens stark verbesserungswürdig, In welcher Form? Was ist denn so schrecklich? > und ich würde > empfehlen - besonder über die Kommentare!!! - nochmal rüber zu gehen. Dito. Was ist da in deinen Augen unzureichend? > Das ist nur GANZ KNAPP über der allerunterstent Teppichkante wenn ich > das mal so sagen darf. Darfst du, wenn gleich . . . > Und dabei sollten wir nicht vergessen: wer austeilt, muss auch > einstecken können. Der Falk ist immer sehr gut im ersterem. Jaja. Du bist ja auch das leuchtende Beispiel. Ohne konkret zu werden einfach nur von schlechter Qualität zu sprechen ist armseelig.
Beitrag #6590419 wurde von einem Moderator gelöscht.
> Beitrag #6590419 wurde von einem Moderator gelöscht.
Ach so, wenn die Wahrheit weh tut wird sie gelöscht. Da waren eine ganze
Menge gute Kommentare drin, wie Du Dein C-Code verbessern kannst!
Ich bitte darum, auf persönliche Anfeindungen, nur weil man augenscheinlich ein persönliches Problem mit dem Gegenüber hat, zu verzichten. Kritik am "Code" (ich bitte hier um korrekte Schreibweise und nicht den unangebrachten Griff ins Klo) kann man auch sachlich verfassen.
Pat B. schrieb: > Ach so, wenn die Wahrheit weh tut wird sie gelöscht. Da waren eine ganze > Menge gute Kommentare drin, wie Du Dein C-Code verbessern kannst! Dann schreib Deine "guten Kommentare" auch in gutem Deutsch. Fäkalien werden gelöscht.
Frank M. schrieb: > Ich bitte darum, auf persönliche Anfeindungen, nur weil man > augenscheinlich ein persönliches Problem mit dem Gegenüber hat, zu > verzichten. > > Kritik am "Code" (ich bitte hier um korrekte Schreibweise und nicht den > unangebrachten Griff ins Klo) kann man auch sachlich verfassen. Leute, die AUSTEILEN MÜSSEN AUCH EINSTECKEN KÖNNEN. Vielleicht könntest Du bitte ebenfalls unseren lieben FALK das nächste mal mit ebensoviel Liebe zur Diktatur-Zensur korrigieren.
Pat B. schrieb: > Leute, die AUSTEILEN MÜSSEN AUCH EINSTECKEN KÖNNEN. Du hast offenbar ein persönliches Problem mit Falk. Ich als Leser dieses Forums empfinde es als Belästigung, Kleinkriegen, die micht NICHTS angehen, ausgesetzt zu sein. Wenn Du ein persönliches Problem mit Falk ausdiskutieren möchtest, dann mache das über PN mit ihm persönlich aus. Bei Missbrauch dieses Forums (ja, so sehe ich das, wobei mich Deine harschen Reaktionen ganz klar bestätigen), um persönliche Kriege anzuzetteln, wird der Beitrag gelöscht, siehe Nutzungsbedingungen. Also verfasse Deinen Beitrag in einem angemessenen Ton. Die Forumssoftware hat Dir Deinen gelöschten Beitrag per Mail zugeschickt, so dass Du ihn einfach überarbeiten und und in angemessenem Ton verfasst neu einstellen kannst - wenn Du das überhaupt möchtest. Wenn nicht, dann war Deine Kritik an Falks C-Code offenbar gar nicht so wichtig - auch gut. > Vielleicht könntest Du bitte ebenfalls unseren lieben FALK das nächste > mal mit ebensoviel Liebe zur Diktatur-Zensur korrigieren. Es gibt den Melden-Button, wenn Du meinst, dass ein Beitrag eines anderen zu weit geht. So einfach ist das. Du sprachst in Deinem gelöschten Beitrag vom Niveau, dass Du nicht erreichen könntest. Frag Dich mal, von welcher Seite.
:
Bearbeitet durch Moderator
Beitrag #6590632 wurde von einem Moderator gelöscht.
Beitrag #6590670 wurde von einem Moderator gelöscht.
Hier also Kommentare zu Falks C-Code - alles Anfängerfehler. Bei Google würdest Du mit Deiner Schlamperei keine 2 Wochen überleben. Na, für Dein kleines Blinklichtspielchen ist das ja ohnehin egal. Hoffe, dass Dein professioneller Code anders aussieht. Code REviews scheint's bei Dir in der Firma (ach so, DU bist ja sicherlich selbständig... was einiges erklären würde...) nicht zu geben.
1 | void generate_pattern(int difficulty, int level, matrix_t set_pattern, led_t led_data) { |
2 | |
3 | uint8_t new_colors[5]; |
4 | uint8_t new_pattern; |
5 | uint8_t new_shift=0; |
6 | uint8_t i, j, k, l, m, n, min, max; |
7 | uint8_t is_same, is_allowed; |
8 | static uint8_t old_pattern, old_shift; |
9 | |
10 | // generate random pattern, colors and phase shift |
Z.B. inkonsistente Typenverwendung (int im Kopf, uint's im Body). Und Zählvariablen wie "i" werden am Beginn der Prozedur definiert... und wiederverwendet. Selbst mit nem ATtiny solltest Du genügend Platz haben, um sowas in einen Block lokal in bzw. vor der entsp. for-Schleife zu machen. Das halte ich für ganz schlechten Stil. Alle Variablen am Prozedurbeginn deklariert / definiert. Dann kannst auch gleiche ganz auf globale Variablen umsteigen. BASIC vielleicht? Die Kommentare der Art:
1 | // make a light show |
2 | |
3 | void light_show(void) { |
sind relativ redundant. Zumal, für Prozeduren empfiehlt es sich, Verben zu verwenden. Also "run_light_show", "show_light_show", usw.
1 | /* |
2 | |
3 | LED game with 8 LED powered light domes with ohmic contact sense |
4 | |
5 | "Light touch" (tm) |
6 | |
7 | |
8 | */ |
Im Header - ist das alles??? Keine Lizenz, keine Version, kein Author... kein Datum. Und und und.
1 | // F_ISR ~100 Hz |
2 | |
3 | ISR(TIMER0_COMPA_vect) { |
4 | static uint8_t cnt100ms; |
5 | |
6 | cnt100ms++; |
7 | if (cnt100ms == 10) { |
8 | cnt100ms=0; |
9 | flag_100ms=1; |
10 | } |
11 | } |
Geht's auch genauer??? ~100 Hz? Oder 101 Hz?
:
Bearbeitet durch User
Beitrag #6590695 wurde von einem Moderator gelöscht.
Pat B. schrieb: > Hier also Kommentare zu Falks C-Code - alles Anfängerfehler. Ich bin zwar nicht Falk, aber bei Deiner Kritik zieht's mir die Schuhe aus, denn ich persönlich kann keinen Fehler erkennen. > Z.B. inkonsistente Typenverwendung (int im Kopf, uint's im Body). Das ist in C erlaubt. Wenn man weiß kann, dass kein ungewollter Overflow auftritt, hat man durchaus die Freiheit, den Typ für die Variablen zu wählen, der den Anforderungen genügt. Daher: kein Fehler. Die Verwendung von verschiedenen Typen wird dieses Programm nicht in der Funktionalität einschränken oder gar zum Crash bringen. > Und Zählvariablen wie "i" werden am Beginn der Prozedur definiert... > und wiederverwendet. Auch das ist in C ausdrücklich erlaubt - und damit kein Fehler. Das ist lediglich Geschmackssache. Manchmal kann es auch der Übersicht dienen, alle verwendeten lokalen Variablen auf einen Blick zu sehen. Das ist also lediglich persönliche Vorliebe - mehr nicht. Die spätere Wiederverwendung einer lokalen Schleifenvariable kann zu einem ungewollten Fehler führen - muss es aber nicht, wenn man weiß, was man tut. > Die Kommentare der Art: .... sind relativ redundant. Auch das ist kein Fehler. Ich habe noch nie ein Programm gesehen, welches wegen seiner Kommentare crasht. > Keine Lizenz, keine Version, kein Author... kein Datum. Auch das ist kein Fehler. Wenn keine Lizenz angegeben ist, gilt das deutsche Urheberrecht. > Geht's auch genauer??? ~100 Hz? Oder 101 Hz? Das kann man dem Quelltext einwandfrei entnehmen. Außerdem kann ich Dich beruhigen, das Spiel würde auch mit 101 Hz korrekt laufen. Was Falk mit "~100Hz" lediglich sagen wollte: Die ISR sollte mit ungefähr 100 Hz laufen, damit das Spiel wie vorgesehen spielbar ist. Diese Bedingung ist durch den nachfolgenden Code einwandfrei erfüllt. Fazit: Ich sehe keinen einzigen Fehler - schon gar keine Anfängerfehler. Wo sind bloß bei Dir die Prioritäten bei der Programmierung? Schöne Kommentare, Angabe des eigenen Namens oder die prinzipielle Korrektheit des Programms? Nenne doch bitte mal einen(!) Fehler. Ein Fehler ist dann gegeben, wenn das Programm die beschriebene Funktionalität nicht erfüllt.
:
Bearbeitet durch Moderator
Pat B. schrieb: > Hier also Kommentare zu Falks C-Code - alles Anfängerfehler. jaja. > Bei Google würdest Du mit Deiner Schlamperei keine 2 Wochen überleben. Ich bin weder Softwerker, noch Hipster noch Elite-Coder. Ist keine Ausrede, nur Fakten. > Na, für Dein kleines Blinklichtspielchen ist das ja ohnehin egal. Ufff, Glück gehabt! > Hoffe, > dass Dein professioneller Code anders aussieht. Nur wenig. Aber Programmieren macht bei mir bestenfalls 10% meiner Tätigkeit aus. Bin Hardwerker. Die Jungs mit dem Lötkolben und Seitenschneider. > Code REviews scheint's > bei Dir in der Firma (ach so, DU bist ja sicherlich selbständig... was > einiges erklären würde...) nicht zu geben. Bin kein Softwerker, Code Reviews mögen sinnvoll sein, ich hab seltenst welche gemacht, mangels Masse und Wichtigkeit meiner Programmiertätigkeiten. Ich arbeite weder für Google, die NASA noch sonstige hochkarätige Institutionen. > void generate_pattern(int difficulty, int level, matrix_t set_pattern, > led_t led_data) { > uint8_t new_colors[5]; > uint8_t new_pattern; > uint8_t new_shift=0; > uint8_t i, j, k, l, m, n, min, max; > uint8_t is_same, is_allowed; > static uint8_t old_pattern, old_shift; > // generate random pattern, colors and phase shift > > Z.B. inkonsistente Typenverwendung (int im Kopf, uint's im Body). Akzeptiert, ist eine Nachlässigkeit. Oder ich habs mal an einer Stelle geändert und dann nicht nachgezogen. > Und > Zählvariablen wie "i" werden am Beginn der Prozedur definiert... und > wiederverwendet. Selbst mit nem ATtiny solltest Du genügend Platz haben, > um sowas in einen Block lokal in bzw. vor der entsp. for-Schleife zu > machen. Das halte ich für ganz schlechten Stil. Du hast es erfaßt. Es ist eine Stilfrage. Mein Stil ist zugegebenermaßen etwas Pascal-lastig. Lokale Variablen in Schleifen und ähnliche Dinge sind nicht mein Ding. > Alle Variablen am > Prozedurbeginn deklariert / definiert. Dann kannst auch gleiche ganz auf > globale Variablen umsteigen. BASIC vielleicht? Nö, Turbo-Pascal. Abi 95, da war das noch hipp! > Die Kommentare der Art: > // make a light show > void light_show(void) { > > sind relativ redundant. Sind sie, ich halt manchmal stehen gelbieben bzw. ich war ein wenig zu geschwätzig. > Zumal, für Prozeduren empfiehlt es sich, Verben > zu verwenden. Also "run_light_show", "show_light_show", usw. Stimmt. > /* > LED game with 8 LED powered light domes with ohmic contact sense > "Light touch" (tm) > */ > > Im Header - ist das alles??? Keine Lizenz, keine Version, kein Author... > kein Datum. Häää? Das ist Beerware(tm)! Kein Witz. > > Und und und. > // F_ISR ~100 Hz > ISR(TIMER0_COMPA_vect) { > static uint8_t cnt100ms; > cnt100ms++; > if (cnt100ms == 10) { > cnt100ms=0; > flag_100ms=1; > } > } > > Geht's auch genauer??? ~100 Hz? Oder 101 Hz? Nö, denn das Ding läuft mit RC-Oszillator. Außerdem dem Problem angepaßt, eine exakte Frequenz ist hier schnuppe. Geht's dir jetzt besser?
Frank M. schrieb: > Nenne doch bitte mal einen(!) Fehler. Ein Fehler ist dann gegeben, > wenn das Programm die beschriebene Funktionalität nicht erfüllt. Willkommen in Zeitalter der Social Justice Warrior. Deren "Werte" orientieren sich GANZ woanders, meistens nicht an der Realität oder gar relevanten Dingen. Daß die aber schon in den Bereich der Hobbyprogrammierung vorgestoßen sind, war mir bis jetzt nicht bekannt.
Frank M. schrieb: > Ich bin zwar nicht Falk, aber bei Deiner Kritik zieht's mir die Schuhe > aus, denn ich persönlich kann keinen Fehler erkennen. Korrekt, ich hätte schreiben sollen: "Schlechter Anfänger-Stil". Dazu möchte man bitte im Hinterkopf behalten, dass C-Programme in erster Linie für Menschen, nicht für Maschinen, geschrieben werden. D.h., alles was es lesbarer, wartbarer, konsistenter, und verständlicher macht, ist wichtig. Sonst könnten wir ja wieder Maschinensprache machen... > Auch das ist in C ausdrücklich erlaubt Erlaubt ist vieles. Ich kann mir auch ne Frikadelle an die Backe nageln, das ist auch erlaubt. Ob es gut, stilvoll oder sinnvoll ist, ist eine andere Frage. Die einfachen (syntaktischen) "Fehler" findet der Compiler ohnehin, dafür braucht es kein Code Review. Lese mal nach, worum es bei einem Code Review geht... Du scheinst nicht zu wissen, was das ist, oder warum man das macht. > Nenne doch bitte mal einen(!) Fehler. Ein Fehler ist dann gegeben, > wenn das Programm die beschriebene Funktionalität nicht erfüllt. Dafür bräuchte man erst mal 'ne Beschreibung / Spezifikation der Funktionalität. Was ist die Funktionalität? Wie krieg' ich möglichst schnell Corona? :D
:
Bearbeitet durch User
OT und SCNR "Schlechter Anfänger-Stil" - selten über eine Frechheit so gestaunt.-( Pat B. schrieb: >> Nenne doch bitte mal einen(!) Fehler. Ein Fehler ist dann gegeben, >> wenn das Programm die beschriebene Funktionalität nicht erfüllt. > > Dafür bräuchte man erst mal 'ne Beschreibung / Spezifikation der > Funktionalität. Was ist die Funktionalität? Wenn Unfreundlichkeit nicht reicht, dann muss man eben unsachlich werden, oder wie??? Die Funktionalität ist doch damals im Eröffnungspost beschrieben, hat was mit Spass und Geselligkeit zu tun. Beim Thema Unterhaltung scheinst du wohl ein Anfänger zu sein, aber immerhin sportlich; taugen doch deine Kritiksel dazu die Leute zum weglaufen zu animieren. Naja, wer will in Zeiten von Corona schon Freunde. Geht besser ohne, gell? @Falk: jetzt haste es endlich mal schriftlich: Anfänger! Im Header: Keine Lizenz, keine Version, kein Author, kein Datum... hättest du dort mal besser "Vorsicht Anfänger" reingeschrieben, die Eliteprogrammierer dieser Welt (also die besten der besten der besten) hätten dich mit Bier aufgewogen :D
2aggressive schrieb: > hätten dich mit Bier aufgewogen :D ja manchmal läuft es eben dumm hier. anders als man denkt. da hilft nur noch das getränk im anhang! und viel davon! :D na hoffen wir mal dass das falk-beispiel einige mal zum nachdenken anregt hier, wie man miteinander umgeht und wie nicht. > Naja, wer will in Zeiten von Corona schon Freunde. Geht besser ohne, gell? neeee, geht besser mit corona - ich sage mal: "lieber das corona-bier, als freunde bei mikrocontroller hier" :D
:
Bearbeitet durch User
Falk B. schrieb: > Damit sind die Platinen leider etwas tuerer geworden. Es gibt nur > UNBESTÜCKTE Platinen a 3 Euro + 2 Euro Versandkosten. Wer welche haben > will schreibt eine PM an mich mit seiner Postanschrift. Zahlung per > PayPal bevorzugt, ggf. auch Überweisung. 7 Platinen sind noch verfügbar. Wer will, wer will, wer hat noch nicht?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.