Hi, vieleicht kennt sich ja jemand mit control6-scripts in ethersex aus und kann mir ein wenig weiter helfen. Ich möchte gern folgendes realisieren: An einem ADC-Port ein Poti hängen und abhängig von dem Wert per stella (PWM Modul) eine LED in der Helligkeit steuern. Das klappt auch, nur kann ich stella wohl nicht aus control6 herraus direkt steuern, 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). [code] 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 [code] vieleicht fällt je jemand was besseres ein. Danke erstmal
schreib am Besten an die Mailingliste von Ethersex. http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel Da wird dir bestimmt geholfen... Gruß Martin
also die ethersex mailingliste hat geholfen, eine lösung wäre:
1 | #include "services/stella/stella.h" |
2 | |
3 | CONTROL_START |
4 | |
5 | THREAD(testing) |
6 | ECMD_GLOBAL(wert, 0, uint16_t); |
7 | wert = ADC_GET(7); |
8 | ON wert < 512 DO stella_setValue(STELLA_SET_IMMEDIATELY, 0, 0); END |
9 | ON wert > 511 DO stella_setValue(STELLA_SET_IMMEDIATELY, 0, 255); END |
10 | THREAD_END(testing) |
11 | |
12 | ON STARTUP |
13 | DO THREAD_START(testing); |
14 | END |
15 | |
16 | CONTROL_END |
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.