hallo sebastian,

kleinere wartezeiten sind kein problem, die c6 programm teile werden 50 mal in 
der sekunde aufgerufen, so könntest du hier einen zähler machen um eine warte 
zeit zwichen 20 ms und 1 s zu realiseren, was du auch machen köntest 
zusätzlich, den alten wert immer abspeichern und erst erneut senden, wenn der 
wert sich um x abweichend vom alten geändert hat, eventuell noch mit einem 
mittelwert um das rauschen merh zu unterdrücken.

gruß

michael




On Friday 13 August 2010, Sebastian Gillwaldt wrote:
> Hi,
>
> Ich möchte gern folgendes realisieren:
>
> An einem ADC-Port ein Poti hängen und abhängig von dem Wert per Stella eine
> LED in der Helligkeit steuern.
>
> Das klappt auch, nur kann ich stella wohl nicht aus control6 herraus
> direkt steuern (oder geht das doch?), sondern wie im code unten per esend.
> Wenn ich nun das WAIT weglasse funktioniert nix mehr (ich nehme an, er
> schickt unendlich viele esends, wäre logisch) mit 1 Sekunde, ist das aber
> zu langsam.
>
> Ich hab einen Schiebepoti und in 1 Sekunde kann ich den von einer Seite
> auf die andere schieben und die Reaktion kommt dann halt erst 1 Sekunde
> später. Da ich später Farben mischen möchte (RGB LEDs - 3 Schieberegler)
> ist 1 Sekunde einfach zu lang.
>
> Ich verwende Pollin NetIO, da ich die Einstellungen sowohl übers Netz
> als auch "am Gerät" verändern können möchte.
>
> Ich hab mir schon nen paar gedanken gemacht wie ich mein Problem lösen
> könnte, aber die sind alle irgendwie doof:
>
>  - mehrere dieser Threads mit 1 sek Starten und hoffen das sie zeitlich
> versetzt laufen.
>  - einen ADC Wert merken und nur esend benutzen wenn dieser sich
> verändert hat (dann tritt wahrscheinlich das problem "nur" nach auf wenn
> ich den schiebepoti bewege ).
>  - eine globale Variable einfuegen, in der ich die Anzahl der gesendeten
> esends speicher, wenn der grösser als x ist werden keine mehr gesendet
> und jede sekunde diese Variable auf 0 setzen (per 2. thread).
>
> CONTROL_START
>
>    THREAD(testing)
>       ECMD_GLOBAL(wert, 0, uint16_t);
>       wert = ADC_GET(7);
>       WAIT(1)
>       ON wert < 512 DO ESEND(192.168.7.3, "channel 0 0\n"); END
>       ON wert > 511 DO ESEND(192.168.7.3, "channel 0 255\n"); END
>    THREAD_END(testing)
>
>    ON STARTUP
>       DO THREAD_START(testing);
>    END
>
> CONTROL_END
>
> jemand ne bessere Idee? Danke für eure Hilfe



_______________________________________________
Ethersex-devel mailing list
Ethersex-devel@list.zerties.org
https://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel

Antwort per Email an