Forum: Mikrocontroller und Digitale Elektronik Ethersex (Control6-Script)


von Sebastian G. (gilly) Benutzerseite


Lesenswert?

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

von Martin Maier (Gast)


Lesenswert?

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

von Sebastian G. (gilly) Benutzerseite


Lesenswert?

jop wäre mein nächster schritt ;) aber danke für den tip.

von Sebastian G. (gilly) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.