Clock
2 posters
RigidChips :: Rigid-Chips :: Files :: Others
Page 1 of 1
Clock
Yup, that's exactly what it is, a mechanical clock. I've made the skeleton and scripting, but it would be nice if someone could cowl it for me.
- Code:
// [RCD]
Val
{
HRP(default=0, min=-999999999, max=999999999, disp=0)
MNP(default=0, min=-999999999, max=999999999, disp=0)
SCP(default=0, min=-999999999, max=999999999, disp=0)
PENDP(default=0, min=-999999999, max=999999999, disp=0)
}
Key
{
}
Body
{
Core() {
S:Weight() {
E:Weight() {
E:Weight() {
E:Weight() {
E:Weight(angle=90) {
N:Weight() {
N:Weight() { }
}
S:Weight() {
S:Weight() { }
}
}
}
}
}
W:Weight() {
W:Weight() {
W:Weight() {
W:Weight(angle=90) {
S:Weight() {
S:Weight() { }
}
N:Weight() {
N:Weight() { }
}
}
}
}
}
S:Jet(angle=-90) {
S:Jet() {
S:Jet() {
S:Jet() {
S:Jet() {
S:Jet() {
S:Jet() {
S:Jet(angle=-90) {
S:RLW(angle=-90, power=SCP, name=SC) {
S:TrimF(angle=90) {
S:Frame() {
S:Frame() { }
}
}
}
S:RLW(angle=-90, power=MNP, name=MN) {
S:TrimF(angle=90) {
S:Frame() {
S:Frame() { }
}
}
}
S:RLW(angle=-90, power=HRP, name=HR) {
S:TrimF(angle=90) {
S:Frame() { }
}
}
}
}
}
S:Jet(angle=-30) {
S:RLW(angle=-150, power=PENDP, name=PD) {
S:Frame() {
S:Frame() {
S:Frame() {
S:Wheel(brake=999, option=2) { }
}
}
}
}
}
}
}
}
}
}
}
}
}
Lua
{require("Bernard/Basic.lua")
function init()
time = 0
sec = 0
tick = 0
sc = {i=0,p=0,d=0}
mn = {i=0,p=0,d=0}
hr = {i=0,p=0,d=0}
key = {}
for i = 0,16 do
key[i] = {up = 0, dn = 0, st = 0, out = 0, d1 = 0, d2 = 0}
end
end
function OnInit()
init()
end
function OnReset()
init()
end
function normaltime(t)
while t >= 360 do
t = t-720
end
while t < -360 do
t = t+720
end
return t
end
function cycletime(t)
return normaltime(t-360)+360
end
function getkey()
for i = 0,16 do
key[i].st = _KEY(i)
key[i].dn = _KEYDOWN(i)
key[i].up = _KEYUP(i)
if key[i].dn == 1 then
key[i].out = 1
else
key[i].out = 0
end
if key[i].st == 0 then
key[i].out = 0
key[i].d1 = 0
key[i].d2 = 0
else
if key[i].d1 < 20 then
key[i].d1 = key[i].d1+1
else
if key[i].d2 == 0 then
key[i].out = 1
end
key[i].d2 = key[i].d2 + 1
if key[i].d2 >= 5 then key[i].d2 = 0 end
end
end
end
end
function timectrl()
tick = tick+1
if tick == 30 then
tick = 0
sec = sec+1
if sec == 60 then
sec = 0
time = time+1
if time == 720 then
time = 0
end
end
end
mn.num = mod(time,60)
hr.num = floor(time/60)
if hr.num == 0 then hr.num = 12 end
sc.ang = sec*6
mn.ang = mn.num*6+sec*0.1
hr.ang = hr.num*30+mn.num*0.5
time = cycletime(time+(key[7].out-key[4].out)*60+(key[8].out-key[5].out))
end
function getstate()
sc.ry = deg(-_RY(SC,SC-1))+180
mn.ry = deg(-_RY(MN,MN-1))+180
hr.ry = deg(-_RY(HR,HR-1))+180
sc.wy = _WY(SC)
mn.wy = _WY(MN)
hr.wy = _WY(HR)
sc.da = normaldeg(sc.ry-sc.ang)
mn.da = normaldeg(mn.ry-mn.ang)
hr.da = normaldeg(hr.ry-hr.ang)
end
function handctrl()
sc.i = limit(sc.i+sc.da*0.02,-1,1)
sc.p = limit(sc.da*0.3,-1,1)
sc.d = -sc.wy*0.5
mn.i = limit(mn.i+mn.da*0.02,-1,1)
mn.p = limit(mn.da*0.3,-1,1)
mn.d = -mn.wy*0.5
hr.i = limit(hr.i+hr.da*0.001,-1,1)
hr.p = limit(hr.da*0.4,-1,1)
hr.d = -hr.wy*0.7
SCP = (sc.i+sc.p+sc.d)*500000/(abs((sc.wy)+100)*0.6)
MNP = (mn.i+mn.p+mn.d)*500000/(abs((mn.wy)+100)*0.6)
HRP = (hr.i+hr.p+hr.d)*200000/(abs((hr.wy)+100)*0.6)
PENDP = sgn(_RY(PD,PD-1))*1000
end
function OnFrame()
getkey()
timectrl()
getstate()
handctrl()
out(0,"Clock by Bernard (bwansy)")
sctxt = sec
if sec < 10 then sctxt = "0"..sctxt end
mntxt = mn.num
if mn.num < 10 then mntxt = "0"..mntxt end
hrtxt = hr.num
if hr.num < 10 then hrtxt = "0"..hrtxt end
out(2,string.format("%s:%s:%s",hrtxt,mntxt,sctxt))
out(4,"[A/Z] Adjust hour")
out(5,"[S/X] Adjust minute")
end}
Re: Clock
Wow! It's an analogue clock. And a precise control over the RLW's. Nice!
Well, here it is. My cowling of bwansy's mechanical clock.
The only chips I added, besides cowls, are some frames and trimf's to aid the cowling.
I hope you like it bwansy!
Well, here it is. My cowling of bwansy's mechanical clock.
The only chips I added, besides cowls, are some frames and trimf's to aid the cowling.
I hope you like it bwansy!
- Code:
// [RCD]
Val
{
HRP(default=0, min=-999999999, max=999999999, disp=0)
MNP(default=0, min=-999999999, max=999999999, disp=0)
PENDP(default=0, min=-999999999, max=999999999, disp=0)
SCP(default=0, min=-999999999, max=999999999, disp=0)
}
Key
{
}
Body
{
Core() {
S:Weight() {
E:Weight() {
E:Weight() {
E:Weight() {
E:Weight(angle=90) {
N:Weight() {
N:Weight() {
N:Cowl(color=#808080) { }
}
}
S:Weight() {
S:Weight() {
S:Cowl(color=#808080) { }
}
}
}
N:Cowl(angle=-1, color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(angle=90, color=#808080) { }
}
}
}
S:Cowl(angle=-1, color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(angle=90, color=#808080) { }
}
}
}
}
N:Cowl(angle=-1, color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(angle=90, color=#808080) { }
}
}
}
S:Cowl(angle=-1, color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(angle=90, color=#808080) { }
}
}
}
}
N:Cowl(angle=-1, color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(angle=90, color=#808080) { }
}
}
}
S:Cowl(angle=-1, color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(angle=90, color=#808080) { }
}
}
}
}
W:Weight() {
W:Weight() {
W:Weight() {
W:Weight(angle=90) {
S:Weight() {
S:Weight() {
S:Cowl(color=#808080) { }
}
}
N:Weight() {
N:Weight() {
N:Cowl(color=#808080) { }
}
}
}
N:Cowl(angle=-1, color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(angle=90, color=#808080) { }
}
}
}
S:Cowl(angle=-1, color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(angle=90, color=#808080) { }
}
}
}
}
N:Cowl(angle=-1, color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(angle=90, color=#808080) { }
}
}
}
S:Cowl(angle=-1, color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(angle=90, color=#808080) { }
}
}
}
}
N:Cowl(angle=-1, color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(angle=90, color=#808080) { }
}
}
}
S:Cowl(angle=-1, color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(angle=90, color=#808080) { }
}
}
}
}
S:Jet(angle=-90) {
S:Jet() {
S:Jet() {
S:Jet() {
S:Jet() {
S:Jet() {
S:Jet() {
S:Jet(angle=-90) {
S:RLW(angle=-90, power=SCP, name=SC) {
S:TrimF(angle=90) {
S:Frame() {
S:Frame() {
S:Cowl(angle=157, effect=#F000) {
E:Cowl(angle=91, option=3) { }
}
}
}
}
}
S:RLW(angle=-90, power=MNP, name=MN) {
S:TrimF(angle=90) {
S:Frame() {
S:Frame() {
S:Cowl(angle=-157, effect=#F000) {
E:Cowl(angle=-91, option=3) { }
}
}
}
}
}
S:RLW(angle=-90, power=HRP, name=HR) {
S:TrimF(angle=90) {
S:Frame() {
S:Cowl(angle=157, effect=#F000) {
E:Cowl(angle=92, option=3) { }
}
}
}
}
}
}
S:Frame(angle=60, option=1) {
S:Frame(angle=-150, option=1) {
S:TrimF(angle=-15) {
N:Cowl(angle=91, color=#202020) {
N:Cowl(color=#000000) {
N:Cowl(color=#000000) {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
}
}
E:Cowl(color=#000000) { }
W:Cowl(color=#000000) { }
}
}
}
N:Cowl(angle=-91, color=#202020) {
N:Cowl(color=#000000) {
N:Cowl(color=#000000) {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
}
}
E:Cowl(color=#000000) { }
W:Cowl(color=#000000) { }
}
}
}
}
S:TrimF(angle=-45) {
N:Cowl(angle=91, color=#202020) {
N:Cowl(color=#000000) {
N:Cowl(color=#000000) {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
}
}
E:Cowl(color=#000000) { }
W:Cowl(color=#000000) { }
}
}
}
N:Cowl(angle=-91, color=#202020) {
N:Cowl(color=#000000) {
N:Cowl(color=#000000) {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
}
}
E:Cowl(color=#000000) { }
W:Cowl(color=#000000) { }
}
}
}
}
S:TrimF(angle=15) {
N:Cowl(angle=91, color=#202020) {
N:Cowl() {
N:Cowl() {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
}
}
E:Cowl() { }
W:Cowl() { }
}
}
}
N:Cowl(angle=-91, color=#202020) {
N:Cowl() {
N:Cowl() {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
}
}
W:Cowl() { }
E:Cowl() { }
}
}
}
}
S:TrimF(angle=-75) {
N:Cowl(angle=91, color=#202020) {
N:Cowl(color=#000000) {
N:Cowl(color=#000000) {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
}
}
W:Cowl(color=#000000) { }
E:Cowl(color=#000000) { }
}
}
}
N:Cowl(angle=-91, color=#202020) {
N:Cowl(color=#000000) {
N:Cowl(color=#000000) {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
}
}
W:Cowl(color=#000000) { }
E:Cowl(color=#000000) { }
}
}
}
}
S:TrimF(angle=45) {
N:Cowl(angle=91, color=#202020) {
N:Cowl() {
N:Cowl() {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
}
}
W:Cowl() { }
E:Cowl() { }
}
}
}
N:Cowl(angle=-91, color=#202020) {
N:Cowl() {
N:Cowl() {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
}
}
W:Cowl() { }
E:Cowl() { }
}
}
}
}
S:TrimF(angle=75) {
N:Cowl(angle=91, color=#202020) {
N:Cowl() {
N:Cowl() {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=91, color=#202020) { }
}
}
}
W:Cowl() { }
E:Cowl() { }
}
}
}
N:Cowl(angle=-91, color=#202020) {
N:Cowl() {
N:Cowl() {
N:Cowl(color=#202020) {
N:Cowl(angle=90, effect=#F000) {
W:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
E:Cowl(angle=15, effect=#F000) {
S:Cowl(angle=89, color=#202020) { }
}
}
}
W:Cowl() { }
E:Cowl() { }
}
}
}
}
}
}
}
S:Jet(angle=-30) {
S:RLW(angle=-150, power=PENDP, name=PD) {
S:Frame() {
S:Frame() {
S:Frame() {
S:Wheel(brake=999, option=2) { }
}
}
}
}
}
}
}
}
}
}
N:Cowl(angle=-1, color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(color=#808080) {
N:Cowl(angle=90, color=#808080) { }
}
}
N:Cowl(angle=-1, option=2, color=#FF0000) { }
}
S:Cowl(angle=-1, color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(color=#808080) {
S:Cowl(angle=90, color=#808080) { }
}
}
}
}
}
}
Lua
{require("Bernard/Basic.lua")
function init()
time = 0
sec = 0
tick = 0
sc = {i=0,p=0,d=0}
mn = {i=0,p=0,d=0}
hr = {i=0,p=0,d=0}
key = {}
for i = 0,16 do
key[i] = {up = 0, dn = 0, st = 0, out = 0, d1 = 0, d2 = 0}
end
end
function OnInit()
init()
end
function OnReset()
init()
end
function normaltime(t)
while t >= 360 do
t = t-720
end
while t < -360 do
t = t+720
end
return t
end
function cycletime(t)
return normaltime(t-360)+360
end
function getkey()
for i = 0,16 do
key[i].st = _KEY(i)
key[i].dn = _KEYDOWN(i)
key[i].up = _KEYUP(i)
if key[i].dn == 1 then
key[i].out = 1
else
key[i].out = 0
end
if key[i].st == 0 then
key[i].out = 0
key[i].d1 = 0
key[i].d2 = 0
else
if key[i].d1 < 20 then
key[i].d1 = key[i].d1+1
else
if key[i].d2 == 0 then
key[i].out = 1
end
key[i].d2 = key[i].d2 + 1
if key[i].d2 >= 5 then key[i].d2 = 0 end
end
end
end
end
function timectrl()
tick = tick+1
if tick == 30 then
tick = 0
sec = sec+1
if sec == 60 then
sec = 0
time = time+1
if time == 720 then
time = 0
end
end
end
mn.num = mod(time,60)
hr.num = floor(time/60)
if hr.num == 0 then hr.num = 12 end
sc.ang = sec*6
mn.ang = mn.num*6+sec*0.1
hr.ang = hr.num*30+mn.num*0.5
time = cycletime(time+(key[7].out-key[4].out)*60+(key[8].out-key[5].out))
end
function getstate()
sc.ry = deg(-_RY(SC,SC-1))+180
mn.ry = deg(-_RY(MN,MN-1))+180
hr.ry = deg(-_RY(HR,HR-1))+180
sc.wy = _WY(SC)
mn.wy = _WY(MN)
hr.wy = _WY(HR)
sc.da = normaldeg(sc.ry-sc.ang)
mn.da = normaldeg(mn.ry-mn.ang)
hr.da = normaldeg(hr.ry-hr.ang)
end
function handctrl()
sc.i = limit(sc.i+sc.da*0.02,-1,1)
sc.p = limit(sc.da*0.3,-1,1)
sc.d = -sc.wy*0.5
mn.i = limit(mn.i+mn.da*0.02,-1,1)
mn.p = limit(mn.da*0.3,-1,1)
mn.d = -mn.wy*0.5
hr.i = limit(hr.i+hr.da*0.001,-1,1)
hr.p = limit(hr.da*0.4,-1,1)
hr.d = -hr.wy*0.7
SCP = (sc.i+sc.p+sc.d)*500000/(abs((sc.wy)+100)*0.6)
MNP = (mn.i+mn.p+mn.d)*500000/(abs((mn.wy)+100)*0.6)
HRP = (hr.i+hr.p+hr.d)*200000/(abs((hr.wy)+100)*0.6)
PENDP = sgn(_RY(PD,PD-1))*1000
end
function OnFrame()
getkey()
timectrl()
getstate()
handctrl()
out(0,"Clock by Bernard (bwansy)")
sctxt = sec
if sec < 10 then sctxt = "0"..sctxt end
mntxt = mn.num
if mn.num < 10 then mntxt = "0"..mntxt end
hrtxt = hr.num
if hr.num < 10 then hrtxt = "0"..hrtxt end
out(2,string.format("%s:%s:%s",hrtxt,mntxt,sctxt))
out(4,"[A/Z] Adjust hour")
out(5,"[S/X] Adjust minute")
end}
T-Bouw- Car
- Posts : 22
Join date : 2010-07-22
Age : 40
Location : The Netherlands
RigidChips :: Rigid-Chips :: Files :: Others
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum