mirror of
https://github.com/TomHodson/tomhodson.github.com.git
synced 2025-07-11 06:02:06 +02:00
Update projects
This commit is contained in:
parent
655c777c2c
commit
bd1cdbb187
@ -4,6 +4,7 @@ layout: project
|
||||
excerpt: An old ceiling mounted LED downlight becomes a chonky bike light.
|
||||
permalink: /projects/downlight_bikelight
|
||||
assets: /assets/projects/downlight_bikelight
|
||||
images: /assets/projects/downlight_bikelight/img
|
||||
date: 2025-05-11
|
||||
|
||||
img:
|
||||
@ -12,11 +13,33 @@ img:
|
||||
src: /assets/projects/downlight_bikelight/thumbnail.png
|
||||
|
||||
social_image: /assets/projects/downlight_bikelight/thumbnail.png
|
||||
model: /assets/projects//downlight_bikelight/models
|
||||
draft: True
|
||||
model: /assets/projects/downlight_bikelight/models
|
||||
|
||||
head: |
|
||||
<script src="/assets/js/expand_img_tags.js" defer></script>
|
||||
---
|
||||
I pulled this dying LED downlight out of my kitchen ceiling.
|
||||
<figure>
|
||||
<img src="{{page.images}}/original_location.jpeg" alt="My hand pulling a circular LED downlight out of the ceiling.">
|
||||
</figure>
|
||||
|
||||
In doing so I realised that this downlight has an amusingly chonky heatsink and a nice lens.
|
||||
|
||||
<figure class = "two-wide">
|
||||
<img src="{{page.images}}/laid_out_front.jpeg" alt="All the parts of the downlight laid out on the carpet. There's a lens, LED and various spacers.">
|
||||
<img src="{{page.images}}/laid_out_top.jpeg" alt="All the parts of the downlight laid out on the carpet. There's a lens, LED and various spacers.">
|
||||
</figure>
|
||||
|
||||
So I made a front plate for it to turn it into a bicycle light. I think it suits the current cobbled together, solarpunky aesthetic of my bike.
|
||||
|
||||
<outline-model-viewer model = "{{page.model}}/fbx_export.glb" camera='{"type":"perspective","fov":30,"near":10,"far":10000,"position":[848.5,470.2,-294.9],"rotation":[-2.131,0.9915,2.214],"zoom":300,"target":[0,0,0]}'>
|
||||
<img class="outline-model-poster no-wc" src = "{{page.assets}}/thumbnail.svg">
|
||||
<p class="has-wc">Loading model...</p>
|
||||
</outline-model-viewer>
|
||||
|
||||
|
||||
Next job is to actually mount it!
|
||||
|
||||
<figure>
|
||||
<img src="{{page.images}}/cad.jpeg" alt="Me holding the printed out new front ring in front of the CAD model on my laptop.">
|
||||
</figure>
|
@ -12,7 +12,7 @@ img:
|
||||
src: /assets/projects/elegoo_mount/thumbnail.png
|
||||
|
||||
social_image: /assets/projects/elegoo_mount/thumbnail.png
|
||||
draft: True
|
||||
draft: false
|
||||
---
|
||||
|
||||
This is just a quick mount for a [BIQU H2V2](https://biqu.equipment/products/biqu-h2-v2-0-extruder) hotend on an Elegoo Neptune 2.
|
||||
|
@ -11,6 +11,7 @@ img:
|
||||
|
||||
social_image: /assets/projects/helmet_lights/thumbnail.png
|
||||
models: /assets/projects/helmet_lights/models
|
||||
date: 2023-01-01
|
||||
|
||||
---
|
||||
|
||||
|
@ -4,6 +4,8 @@ layout: project
|
||||
excerpt: 3D Printed Lamp Shades
|
||||
permalink: /projects/lamps
|
||||
assets: /assets/projects/lamps
|
||||
date: 2023-01-01
|
||||
draft: true
|
||||
|
||||
img:
|
||||
alt: A CAD model of a 3D printable mount for a common LED light onto a helmet.
|
||||
|
@ -125,10 +125,16 @@ hr.heading {
|
||||
width: 100%;
|
||||
margin-top: 0;
|
||||
margin-bottom: 2em;
|
||||
border: 1px solid rgba(128, 128, 128, 0.2);
|
||||
height: 0;
|
||||
border: 1px solid rgba(128, 128, 128, 0.2);
|
||||
}
|
||||
|
||||
hr.byline {
|
||||
margin-top: 0.2em;
|
||||
margin-bottom: 0.5em;
|
||||
border: 1px solid rgba(128, 128, 128, 0.2);
|
||||
}
|
||||
|
||||
// Used for both blog and project summaries
|
||||
@mixin time-text {
|
||||
font-size: 0.75em;
|
||||
@ -163,10 +169,7 @@ section.byline-time {
|
||||
}
|
||||
}
|
||||
|
||||
hr.byline {
|
||||
margin-top: 0.2em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
|
||||
section.byline {
|
||||
font-style: italic;
|
||||
|
62
assets/js/expand_img_tags.js
Normal file
62
assets/js/expand_img_tags.js
Normal file
@ -0,0 +1,62 @@
|
||||
function isIOS() {
|
||||
return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
||||
}
|
||||
|
||||
function enterFullscreen(element) {
|
||||
if (element.requestFullscreen) {
|
||||
element.requestFullscreen();
|
||||
} else if (element.webkitRequestFullscreen) {
|
||||
element.webkitRequestFullscreen();
|
||||
} else {
|
||||
console.warn("Fullscreen API not supported on this browser");
|
||||
}
|
||||
}
|
||||
|
||||
function exitFullscreen() {
|
||||
if (document.exitFullscreen) {
|
||||
document.exitFullscreen();
|
||||
} else if (document.webkitExitFullscreen) {
|
||||
document.webkitExitFullscreen();
|
||||
}
|
||||
}
|
||||
|
||||
// Create and style fullscreen overlay container
|
||||
const fullscreenContainer = document.createElement("div");
|
||||
fullscreenContainer.style.position = "fixed";
|
||||
fullscreenContainer.style.top = 0;
|
||||
fullscreenContainer.style.left = 0;
|
||||
fullscreenContainer.style.width = "100vw";
|
||||
fullscreenContainer.style.height = "100vh";
|
||||
fullscreenContainer.style.background = "rgba(0, 0, 0, 0.95)";
|
||||
fullscreenContainer.style.display = "flex";
|
||||
fullscreenContainer.style.alignItems = "center";
|
||||
fullscreenContainer.style.justifyContent = "center";
|
||||
fullscreenContainer.style.zIndex = 9999;
|
||||
fullscreenContainer.style.cursor = "zoom-out";
|
||||
fullscreenContainer.style.visibility = "hidden";
|
||||
|
||||
const fullscreenImage = document.createElement("img");
|
||||
fullscreenImage.style.maxWidth = "90vw";
|
||||
fullscreenImage.style.maxHeight = "90vh";
|
||||
fullscreenImage.style.boxShadow = "0 0 20px rgba(0,0,0,0.8)";
|
||||
fullscreenContainer.appendChild(fullscreenImage);
|
||||
|
||||
document.body.appendChild(fullscreenContainer);
|
||||
|
||||
document.querySelectorAll("img").forEach((img) => {
|
||||
img.style.cursor = "zoom-in";
|
||||
img.addEventListener("click", () => {
|
||||
console.log("Image clicked:", img.src);
|
||||
fullscreenImage.src = img.src;
|
||||
fullscreenContainer.style.visibility = "visible";
|
||||
|
||||
// Only attempt fullscreen if supported
|
||||
enterFullscreen(fullscreenContainer);
|
||||
});
|
||||
});
|
||||
|
||||
fullscreenContainer.addEventListener("click", () => {
|
||||
console.log("Exiting fullscreen");
|
||||
fullscreenContainer.style.visibility = "hidden";
|
||||
exitFullscreen();
|
||||
});
|
BIN
assets/projects/downlight_bikelight/img/cad.jpeg
Normal file
BIN
assets/projects/downlight_bikelight/img/cad.jpeg
Normal file
Binary file not shown.
After ![]() (image error) Size: 250 KiB |
BIN
assets/projects/downlight_bikelight/img/laid_out_front.jpeg
Normal file
BIN
assets/projects/downlight_bikelight/img/laid_out_front.jpeg
Normal file
Binary file not shown.
After ![]() (image error) Size: 367 KiB |
BIN
assets/projects/downlight_bikelight/img/laid_out_top.jpeg
Normal file
BIN
assets/projects/downlight_bikelight/img/laid_out_top.jpeg
Normal file
Binary file not shown.
After ![]() (image error) Size: 530 KiB |
BIN
assets/projects/downlight_bikelight/img/original_location.jpeg
Normal file
BIN
assets/projects/downlight_bikelight/img/original_location.jpeg
Normal file
Binary file not shown.
After ![]() (image error) Size: 176 KiB |
BIN
assets/projects/downlight_bikelight/models/fbx_export.glb
Normal file
BIN
assets/projects/downlight_bikelight/models/fbx_export.glb
Normal file
Binary file not shown.
@ -45,7 +45,7 @@ Welcome to my little home on the web! Below you'll find recent blog posts, proje
|
||||
<span class="dt-label">Last Modified</span>
|
||||
</section>
|
||||
<hr class="heading">
|
||||
{% assign projects = site.projects | sort_natural: "last_modified_at"%}
|
||||
{% assign projects = site.projects | sort_natural: "date" | reverse %}
|
||||
{% for post in projects limit:5 %}
|
||||
{% if post.draft == false or jekyll.environment == "development" %}
|
||||
{% include project_summary.html %}
|
||||
|
Loading…
x
Reference in New Issue
Block a user