<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++]]></title><description><![CDATA[<p>Hello!</p>
<p>Für meine Abschlussarbeit habe ich eine Lichtquelle mit LEDs, die in 20 ansteuerbare Kanäle unterteilt ist.<br />
Die Ansteuerungssoftware ist in C++ geschrieben. Ich kann die Lichtquelle über den Befehl ansteuern:</p>
<pre><code>led-&gt; setChannelIntensity(channelID, intensity)
</code></pre>
<p>Das funktioniert. Der entsprechende Kanal wird mit einer bestimmten Intensität dauerhaft angesteuert und der LED-Kanal leuchtet.<br />
Für meinen Versuch muss die Lichtquelle jedoch nicht dauerhaft leuchten, sondern sie darf nur für eine vorgegebene Zeit aufblitzen.<br />
Der Befehl dazu soll heißen:</p>
<pre><code>led-&gt; setChannelIntensity(channelID, intensity, time)
</code></pre>
<p>Für die Dauer von 'time' (mindestens 40 Millisekunden), soll der entsprechende Kanal mit der Intensität aufblitzen.<br />
Bis jetzt hatte ich es folgendermaßen mit der Sleep-Funktion gelöst:</p>
<pre><code>channelID = 5;
    intens    = 1000;
    time      = 50  //milliseconds

    led-&gt;setChannelIntensity(channelID, intens);
    Sleep(time);
    led-&gt;setChannelIntensity(channelID, 0);
</code></pre>
<p>Das funktioniert, ist jedoch leider zu ungenau. Es entsteh immer einer Abweichung von ca. +/- 5 Prozent. Wie kann ich das Blitzen der Lichtquelle implementieren, so dass die Blitzzeit nahezu immer gleich ist? Mir wurde gesagt, dass ich es mit Event-Timer in C++ machen kann. Nur leider kapiere ich das nicht. Ich habe mir im Internet Beispiele angesehen, aber das sieht schon sehr kompliziert aus.<br />
Ich bin leider kein guter Programmierer und kenne mich nicht gut damit aus.<br />
Kann mir irgendwer helfen und hat vielleicht ein Code Beispiel für mich?</p>
<p>Das wäre total super. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327707/lichtquelle-mit-leds-blitzen-lassen-timer-event-c</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 13:32:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327707.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Aug 2014 11:38:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++ on Fri, 29 Aug 2014 11:40:08 GMT]]></title><description><![CDATA[<p>Hello!</p>
<p>Für meine Abschlussarbeit habe ich eine Lichtquelle mit LEDs, die in 20 ansteuerbare Kanäle unterteilt ist.<br />
Die Ansteuerungssoftware ist in C++ geschrieben. Ich kann die Lichtquelle über den Befehl ansteuern:</p>
<pre><code>led-&gt; setChannelIntensity(channelID, intensity)
</code></pre>
<p>Das funktioniert. Der entsprechende Kanal wird mit einer bestimmten Intensität dauerhaft angesteuert und der LED-Kanal leuchtet.<br />
Für meinen Versuch muss die Lichtquelle jedoch nicht dauerhaft leuchten, sondern sie darf nur für eine vorgegebene Zeit aufblitzen.<br />
Der Befehl dazu soll heißen:</p>
<pre><code>led-&gt; setChannelIntensity(channelID, intensity, time)
</code></pre>
<p>Für die Dauer von 'time' (mindestens 40 Millisekunden), soll der entsprechende Kanal mit der Intensität aufblitzen.<br />
Bis jetzt hatte ich es folgendermaßen mit der Sleep-Funktion gelöst:</p>
<pre><code>channelID = 5;
    intens    = 1000;
    time      = 50  //milliseconds

    led-&gt;setChannelIntensity(channelID, intens);
    Sleep(time);
    led-&gt;setChannelIntensity(channelID, 0);
</code></pre>
<p>Das funktioniert, ist jedoch leider zu ungenau. Es entsteh immer einer Abweichung von ca. +/- 5 Prozent. Wie kann ich das Blitzen der Lichtquelle implementieren, so dass die Blitzzeit nahezu immer gleich ist? Mir wurde gesagt, dass ich es mit Event-Timer in C++ machen kann. Nur leider kapiere ich das nicht. Ich habe mir im Internet Beispiele angesehen, aber das sieht schon sehr kompliziert aus.<br />
Ich bin leider kein guter Programmierer und kenne mich nicht gut damit aus.<br />
Kann mir irgendwer helfen und hat vielleicht ein Code Beispiel für mich?</p>
<p>Das wäre total super. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415305</guid><dc:creator><![CDATA[baronsocke]]></dc:creator><pubDate>Fri, 29 Aug 2014 11:40:08 GMT</pubDate></item><item><title><![CDATA[Reply to Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++ on Fri, 29 Aug 2014 11:52:53 GMT]]></title><description><![CDATA[<p>Hallo baronsocke,</p>
<p>C++ kennt weder Events noch Timer. Welches Betriebssystem benutzt Du?<br />
Vielleicht hilft <a href="http://www.boost.org/doc/libs/1_56_0/doc/html/boost_asio/tutorial/tuttimer1.html" rel="nofollow">boost.asio</a>; ich melde mich ggf. heute Abend noch mal.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415306</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 29 Aug 2014 11:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++ on Fri, 29 Aug 2014 11:55:03 GMT]]></title><description><![CDATA[<p>Ich weiß nicht ob dir das genau genug ist:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;chrono&gt;
#include &lt;thread&gt;

void wait()
{
    led-&gt;setChannelIntensity(channelID, intens);
    std::chrono::milliseconds seconds( 2000 );
    std::this_thread::sleep_for( seconds );
    led-&gt;setChannelIntensity(channelID, 0);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2415307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415307</guid><dc:creator><![CDATA[cppvoid]]></dc:creator><pubDate>Fri, 29 Aug 2014 11:55:03 GMT</pubDate></item><item><title><![CDATA[Reply to Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++ on Fri, 29 Aug 2014 12:07:18 GMT]]></title><description><![CDATA[<p>Oh Dankeschön! Funktionieren tut es. Ich werde gleich mal mit dem Oszilloskop messen, wie genau die Funktion arbeitet...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415310</guid><dc:creator><![CDATA[baronsocke]]></dc:creator><pubDate>Fri, 29 Aug 2014 12:07:18 GMT</pubDate></item><item><title><![CDATA[Reply to Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++ on Fri, 29 Aug 2014 13:20:24 GMT]]></title><description><![CDATA[<p>cppvoid schrieb:</p>
<blockquote>
<p>Ich weiß nicht ob dir das genau genug ist:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;chrono&gt;
#include &lt;thread&gt;

void wait()
{
    led-&gt;setChannelIntensity(channelID, intens);
    std::chrono::milliseconds seconds( 2000 );
    std::this_thread::sleep_for( seconds );
    led-&gt;setChannelIntensity(channelID, 0);
}
</code></pre>
</blockquote>
<p>Hey vielen Dank! Die ersten Messungen haben bei 10maligem Blitzen eine Abweichung von ca. 0,5 %!!!<br />
Damit kann ich schon mal arbeiten.</p>
<p>Vielen vielen Dank!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415318</guid><dc:creator><![CDATA[baronsocke]]></dc:creator><pubDate>Fri, 29 Aug 2014 13:20:24 GMT</pubDate></item><item><title><![CDATA[Reply to Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++ on Fri, 29 Aug 2014 13:54:11 GMT]]></title><description><![CDATA[<p>Lol.<br />
Wieso misst du den Fehler im Prozent? Windows macht hier keinen nennenswerten prozentuellen Fehler, sondern einen absoluten.<br />
Schreib Sleep(10000) hin und der prozentuelle Fehler wird gleich nochmal besser.</p>
<p>std::this_thread::sleep_for verwendet intern ziemlich sicher auch nur Sleep.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415324</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 29 Aug 2014 13:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++ on Fri, 29 Aug 2014 14:04:43 GMT]]></title><description><![CDATA[<p>Als ich es mit Sleep gemacht habe, zeigte der Trigger Ausschlag auf dem Oszilloskop immer veränderte Belichtungszeiten...</p>
<p>Jetzt nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415329</guid><dc:creator><![CDATA[baronsocke]]></dc:creator><pubDate>Fri, 29 Aug 2014 14:04:43 GMT</pubDate></item><item><title><![CDATA[Reply to Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++ on Fri, 29 Aug 2014 14:26:28 GMT]]></title><description><![CDATA[<p><a href="http://omeg.pl/blog/2011/11/on-winapi-timers-and-their-resolution/" rel="nofollow">On WinAPI timers and their resolution</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415334</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Fri, 29 Aug 2014 14:26:28 GMT</pubDate></item><item><title><![CDATA[Reply to Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++ on Fri, 29 Aug 2014 15:38:07 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8250">@Swordfish</a><br />
Danke.<br />
Mal sehen wie oft ich noch Unsinn schreibe bis ich in meinen Schädel reinbekomme dass es Wait-Funktionen unter Windows gibt die genauer als Sleep sind...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415345</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 29 Aug 2014 15:38:07 GMT</pubDate></item><item><title><![CDATA[Reply to Lichtquelle mit LEDs blitzen lassen, Timer-Event?  C++ on Sat, 30 Aug 2014 13:14:15 GMT]]></title><description><![CDATA[<p>Seit NT kann man unter Windows den Takt ändern mit dem der Scheduler arbeitet. Standard ist 16,5 ms. Kann man problemlos auf 1ms runter stellen.</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;Windows.h&gt;
#pragma comment(lib, &quot;winmm.lib&quot;)

...

timeBeginPeriod(1);
</code></pre>
<p>Dann ist Sleep recht genau 1ms lang.</p>
<p>Unter Linux kannst du nanosleep verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415455</guid><dc:creator><![CDATA[Osbios]]></dc:creator><pubDate>Sat, 30 Aug 2014 13:14:15 GMT</pubDate></item></channel></rss>