<?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[Clock Clock 24]]></title><description><![CDATA[<p dir="auto">Hello, has anyone ever tried to make a module for clock clock 24? The original Clock Clock 24 is kinetic art by Humans since 1982. Twenty-four analog clocks form a large digital clock. Clever arrangement of the clock hands transforms the analog clocks into seven-segment displays. At the time of writing you can buy the clock at $ 5,999.00 in the MoMA store. I found a guy who actualy created the code for this all this requires is just creating a module for this for MM which i can’t do. Check out the link <a href="https://codepen.io/Lorti/details/XpQewQ" target="_blank" rel="noopener noreferrer nofollow ugc">https://codepen.io/Lorti/details/XpQewQ</a>.</p>
]]></description><link>https://forum.magicmirror.builders/topic/13173/clock-clock-24</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 16:50:07 GMT</lastBuildDate><atom:link href="https://forum.magicmirror.builders/topic/13173.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Jun 2020 00:49:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Clock Clock 24 on Fri, 10 Jul 2020 01:49:14 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/piranha1605" aria-label="Profile: Piranha1605">@<bdi>Piranha1605</bdi></a> Thanks for the help works perfectly with watchstore couldn’t get it to work with iframe.</p>
]]></description><link>https://forum.magicmirror.builders/post/78270</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/78270</guid><dc:creator><![CDATA[cmgp]]></dc:creator><pubDate>Fri, 10 Jul 2020 01:49:14 GMT</pubDate></item><item><title><![CDATA[Reply to Clock Clock 24 on Wed, 01 Jul 2020 20:00:43 GMT]]></title><description><![CDATA[<p dir="auto">Download the zip file from codepen and load everything with <a href="https://github.com/alberttwong/MMM-iFrame" target="_blank" rel="noopener noreferrer nofollow ugc">MMM-iFrame</a> or with my <a href="https://github.com/Piranha1605/MMM-Watchstore" target="_blank" rel="noopener noreferrer nofollow ugc">MMM-Watchstore</a>.</p>
]]></description><link>https://forum.magicmirror.builders/post/77890</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/77890</guid><dc:creator><![CDATA[Piranha1605]]></dc:creator><pubDate>Wed, 01 Jul 2020 20:00:43 GMT</pubDate></item><item><title><![CDATA[Reply to Clock Clock 24 on Wed, 01 Jul 2020 19:29:48 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lavolp3" aria-label="Profile: lavolp3">@<bdi>lavolp3</bdi></a> Actually the programmer posted the code too bad i can’t make a module:</p>
<p dir="auto">HTML<br />
.art</p>
<ul>
<li>var d = 0;<br />
while d &lt; 4<br />
.digit<br />
- var c = 0;<br />
while c &lt; 6<br />
svg(class=<code>clock clock--${d * 6 + c}</code> width=“100” height=“100” viewBox=“0 0 100 100”)<br />
path(class=“clock-smallHand” d=“M50,47 C48.3431458,47 47,48.3431458 47,50 C47,51.6568542 48.3431458,53 50,53 L95,53 L95,47 L50,47 Z” stroke=“none” fill=“#4A4A4A” fill-rule=“evenodd”)<br />
path(class=“clock-largeHand” d=“M50,47 C48.3431458,47 47,48.3431458 47,50 C47,51.6568542 48.3431458,53 50,53 L100,53 L100,47 L50,47 Z” stroke=“none” fill=“#4A4A4A” fill-rule=“evenodd”)<br />
- c++<br />
- d++<br />
.text<br />
h1 Clock Clock 24<br />
p<br />
small Code<br />
br<br />
a(href=“<a href="https://manu.ninja/" target="_blank" rel="noopener noreferrer nofollow ugc">https://manu.ninja/</a>”) Manuel Wieser<br />
p<br />
small Design<br />
br<br />
a(href=“<a href="http://www.humanssince1982.com/" target="_blank" rel="noopener noreferrer nofollow ugc">http://www.humanssince1982.com/</a>”) Humans since 1982<br />
.trigger.trigger–left<br />
.trigger.trigger–right</li>
</ul>
<p dir="auto">CSS</p>
<p dir="auto">html {<br />
width: 100%;<br />
height: 100%;<br />
}</p>
<p dir="auto">body {<br />
min-height: 100%;</p>
<p dir="auto">display: flex;<br />
flex-direction: column;<br />
align-items: center;<br />
justify-content: center;</p>
<p dir="auto">font-family: ‘Source Sans Pro’, sans-serif;<br />
color: #4a4a4a;</p>
<p dir="auto">cursor: default;<br />
}</p>
<p dir="auto">.art {<br />
cursor: zoom-in;<br />
margin: 5vw 0;<br />
}</p>
<p dir="auto">.art–full {<br />
cursor: zoom-out;<br />
}</p>
<p dir="auto">.text {<br />
margin-bottom: 5vw;<br />
text-align: center;<br />
}</p>
<p dir="auto">a {<br />
color: lighten(#4a4a4a, 25%);<br />
text-decoration: none;<br />
}</p>
<p dir="auto">.digit {<br />
float: left;<br />
}</p>
<p dir="auto">.clock {<br />
–small-hand: -135deg;<br />
–large-hand: -45deg;</p>
<p dir="auto">margin: .3vw; // 3px<br />
width: 10vw;<br />
height: 10vw;</p>
<p dir="auto">border-radius: 50%;<br />
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .25);</p>
<p dir="auto">float: left;<br />
&amp;:nth-of-type(2n+1) {<br />
clear: left;<br />
}<br />
}</p>
<p dir="auto">.clock-smallHand,<br />
.clock-largeHand {<br />
transform-origin: 50px center;<br />
transition: transform 10s;<br />
}</p>
<p dir="auto">.clock-smallHand {<br />
transform: rotateZ(var(–small-hand));<br />
}</p>
<p dir="auto">.clock-largeHand {<br />
transform: rotateZ(var(–large-hand));<br />
}</p>
<p dir="auto">.s-hidden {<br />
display: none;<br />
}</p>
<p dir="auto">.trigger {<br />
position: fixed;<br />
bottom: 0;<br />
width: 25%;<br />
height: 5vw;<br />
cursor: help;<br />
}</p>
<p dir="auto">.trigger–left {<br />
left: 0;<br />
}</p>
<p dir="auto">.trigger–right {<br />
right: 0;<br />
}</p>
<p dir="auto">JS</p>
<p dir="auto">const digits = [<br />
[    // 0<br />
{ hour: 6, minute: 15 },<br />
{ hour: 9, minute: 30 },<br />
{ hour: 6, minute: 0 },<br />
{ hour: 0, minute: 30 },<br />
{ hour: 3, minute: 0 },<br />
{ hour: 0, minute: 45 }<br />
], [ // 1<br />
{ hour: 7.5, minute: 37.5 },<br />
{ hour: 6, minute: 30 },<br />
{ hour: 7.5, minute: 37.5 },<br />
{ hour: 6, minute: 0 },<br />
{ hour: 7.5, minute: 37.5 },<br />
{ hour: 0, minute: 0 }<br />
], [ // 2<br />
{ hour: 3, minute: 15 },<br />
{ hour: 9, minute: 30 },<br />
{ hour: 6, minute: 15 },<br />
{ hour: 0, minute: 45 },<br />
{ hour: 0, minute: 15 },<br />
{ hour: 9, minute: 45 }<br />
], [ // 3<br />
{ hour: 3, minute: 15 },<br />
{ hour: 9, minute: 30 },<br />
{ hour: 3, minute: 15 },<br />
{ hour: 9, minute: 0 },<br />
{ hour: 3, minute: 15 },<br />
{ hour: 9, minute: 0 }<br />
], [ // 4<br />
{ hour: 6, minute: 30 },<br />
{ hour: 6, minute: 30 },<br />
{ hour: 0, minute: 15 },<br />
{ hour: 6, minute: 0 },<br />
{ hour: 7.5, minute: 37.5 },<br />
{ hour: 0, minute: 0 }<br />
], [ // 5<br />
{ hour: 6, minute: 15 },<br />
{ hour: 9, minute: 45 },<br />
{ hour: 0, minute: 15 },<br />
{ hour: 6, minute: 45 },<br />
{ hour: 3, minute: 15 },<br />
{ hour: 0, minute: 45 }<br />
], [ // 6<br />
{ hour: 6, minute: 15 },<br />
{ hour: 9, minute: 45 },<br />
{ hour: 6, minute: 0 },<br />
{ hour: 6, minute: 45 },<br />
{ hour: 0, minute: 15 },<br />
{ hour: 0, minute: 45 }<br />
], [ // 7<br />
{ hour: 3, minute: 15 },<br />
{ hour: 6, minute: 45 },<br />
{ hour: 7.5, minute: 37.5 },<br />
{ hour: 6, minute: 0 },<br />
{ hour: 7.5, minute: 37.5 },<br />
{ hour: 0, minute: 0 }<br />
], [ // 8<br />
{ hour: 6, minute: 15 },<br />
{ hour: 6, minute: 45 },<br />
{ hour: 0, minute: 15 },<br />
{ hour: 0, minute: 45 },<br />
{ hour: 0, minute: 15 },<br />
{ hour: 0, minute: 45 }<br />
], [ // 9<br />
{ hour: 6, minute: 15 },<br />
{ hour: 6, minute: 45 },<br />
{ hour: 3, minute: 0 },<br />
{ hour: 6, minute: 0 },<br />
{ hour: 3, minute: 15 },<br />
{ hour: 0, minute: 45 }<br />
]<br />
];</p>
<p dir="auto">const happyDigit = Array(6).fill({ hour: 22.5, minute: 7.5 });<br />
const neutralDigit = Array(6).fill({ hour: 7.5, minute: 7.5 });</p>
<p dir="auto">function showSpecialState(digit) {<br />
stopClock();<br />
for (let x = 0; x &lt; 4; x++) {<br />
setDigit(x, digit);<br />
}<br />
window.setTimeout(() =&gt; startClock(), 10000);<br />
}</p>
<p dir="auto">document.querySelector(‘.trigger–left’).addEventListener(‘click’, e =&gt; {<br />
showSpecialState(happyDigit);<br />
});</p>
<p dir="auto">document.querySelector(‘.trigger–right’).addEventListener(‘click’, e =&gt; {<br />
showSpecialState(neutralDigit);<br />
});</p>
<p dir="auto">window.addEventListener(‘keydown’, e =&gt; {<br />
const h = 72;<br />
const n = 78;<br />
if (h === e.keyCode) {<br />
showSpecialState(happyDigit);<br />
}<br />
if (n === e.keyCode) {<br />
showSpecialState(neutralDigit);<br />
}<br />
});</p>
<p dir="auto">document.querySelector(‘.art’).addEventListener(‘click’, e =&gt; {<br />
document.querySelector(‘.text’).classList.toggle(‘s-hidden’);<br />
document.querySelector(‘.art’).classList.toggle(‘art–full’);<br />
})</p>
<p dir="auto">function hourToDegrees(hour) {<br />
return hour * (360 / 12) - 90;<br />
}</p>
<p dir="auto">function minuteToDegrees(minute) {<br />
return minute * (360 / 60) - 90;<br />
}</p>
<p dir="auto">function setHands(id, hour, minute) {<br />
const clock = document.querySelector(<code>.clock--${id}</code>);<br />
clock.style.setProperty(<code>--small-hand</code>, <code>${hourToDegrees(hour) + 360}deg</code>);<br />
clock.style.setProperty(<code>--large-hand</code>, <code>${minuteToDegrees(minute) - 360}deg</code>);<br />
}</p>
<p dir="auto">function setDigit(id, values) {<br />
for (let x = 0; x &lt; 6; x++) {<br />
setHands(id * 6 + x, values[x].hour, values[x].minute);<br />
}<br />
}</p>
<p dir="auto">function setTime(time) {<br />
setDigit(0, digits[time.charAt(0)]);<br />
setDigit(1, digits[time.charAt(1)]);<br />
setDigit(2, digits[time.charAt(3)]);<br />
setDigit(3, digits[time.charAt(4)]);<br />
}</p>
<p dir="auto">let state;<br />
let interval;</p>
<p dir="auto">function startClock() {<br />
state = ‘----’;<br />
interval = window.setInterval(() =&gt; {<br />
const time = new Date(Date.now() + 10000).toTimeString();<br />
if (time !== state) {<br />
setTime(time);<br />
state = time;<br />
}<br />
}, 1000);<br />
}</p>
<p dir="auto">function stopClock() {<br />
clearInterval(interval);<br />
}</p>
<p dir="auto">startClock();</p>
]]></description><link>https://forum.magicmirror.builders/post/77887</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/77887</guid><dc:creator><![CDATA[cmgp]]></dc:creator><pubDate>Wed, 01 Jul 2020 19:29:48 GMT</pubDate></item><item><title><![CDATA[Reply to Clock Clock 24 on Tue, 30 Jun 2020 20:49:47 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/piranha1605" aria-label="Profile: Piranha1605">@<bdi>Piranha1605</bdi></a> <a class="plugin-mentions-user plugin-mentions-a" href="/user/cmgp" aria-label="Profile: cmgp">@<bdi>cmgp</bdi></a>  LOL!</p>
]]></description><link>https://forum.magicmirror.builders/post/77864</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/77864</guid><dc:creator><![CDATA[lavolp3]]></dc:creator><pubDate>Tue, 30 Jun 2020 20:49:47 GMT</pubDate></item><item><title><![CDATA[Reply to Clock Clock 24 on Tue, 30 Jun 2020 18:29:38 GMT]]></title><description><![CDATA[<p dir="auto">Do you mean it</p>
<p dir="auto"><img src="/assets/uploads/files/1593541731430-unbenannt.jpg" alt="Unbenannt.jpg" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.magicmirror.builders/post/77859</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/77859</guid><dc:creator><![CDATA[Piranha1605]]></dc:creator><pubDate>Tue, 30 Jun 2020 18:29:38 GMT</pubDate></item><item><title><![CDATA[Reply to Clock Clock 24 on Tue, 30 Jun 2020 14:20:32 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/cmgp" aria-label="Profile: cmgp">@<bdi>cmgp</bdi></a> looks good. Have fun programming it :-D<br />
Seriously, the mirror has proven not to be very strong with animations. You could think about leaving the animations out.<br />
I think that would miss the fun part.</p>
]]></description><link>https://forum.magicmirror.builders/post/77849</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/77849</guid><dc:creator><![CDATA[lavolp3]]></dc:creator><pubDate>Tue, 30 Jun 2020 14:20:32 GMT</pubDate></item></channel></rss>