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.
|
excerpt: An old ceiling mounted LED downlight becomes a chonky bike light.
|
||||||
permalink: /projects/downlight_bikelight
|
permalink: /projects/downlight_bikelight
|
||||||
assets: /assets/projects/downlight_bikelight
|
assets: /assets/projects/downlight_bikelight
|
||||||
|
images: /assets/projects/downlight_bikelight/img
|
||||||
date: 2025-05-11
|
date: 2025-05-11
|
||||||
|
|
||||||
img:
|
img:
|
||||||
@ -12,11 +13,33 @@ img:
|
|||||||
src: /assets/projects/downlight_bikelight/thumbnail.png
|
src: /assets/projects/downlight_bikelight/thumbnail.png
|
||||||
|
|
||||||
social_image: /assets/projects/downlight_bikelight/thumbnail.png
|
social_image: /assets/projects/downlight_bikelight/thumbnail.png
|
||||||
model: /assets/projects//downlight_bikelight/models
|
model: /assets/projects/downlight_bikelight/models
|
||||||
draft: True
|
|
||||||
|
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]}'>
|
<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">
|
<img class="outline-model-poster no-wc" src = "{{page.assets}}/thumbnail.svg">
|
||||||
<p class="has-wc">Loading model...</p>
|
<p class="has-wc">Loading model...</p>
|
||||||
</outline-model-viewer>
|
</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
|
src: /assets/projects/elegoo_mount/thumbnail.png
|
||||||
|
|
||||||
social_image: /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.
|
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
|
social_image: /assets/projects/helmet_lights/thumbnail.png
|
||||||
models: /assets/projects/helmet_lights/models
|
models: /assets/projects/helmet_lights/models
|
||||||
|
date: 2023-01-01
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@ layout: project
|
|||||||
excerpt: 3D Printed Lamp Shades
|
excerpt: 3D Printed Lamp Shades
|
||||||
permalink: /projects/lamps
|
permalink: /projects/lamps
|
||||||
assets: /assets/projects/lamps
|
assets: /assets/projects/lamps
|
||||||
|
date: 2023-01-01
|
||||||
|
draft: true
|
||||||
|
|
||||||
img:
|
img:
|
||||||
alt: A CAD model of a 3D printable mount for a common LED light onto a helmet.
|
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%;
|
width: 100%;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 2em;
|
margin-bottom: 2em;
|
||||||
border: 1px solid rgba(128, 128, 128, 0.2);
|
|
||||||
height: 0;
|
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
|
// Used for both blog and project summaries
|
||||||
@mixin time-text {
|
@mixin time-text {
|
||||||
font-size: 0.75em;
|
font-size: 0.75em;
|
||||||
@ -163,10 +169,7 @@ section.byline-time {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hr.byline {
|
|
||||||
margin-top: 0.2em;
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
section.byline {
|
section.byline {
|
||||||
font-style: italic;
|
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 Width: | Height: | 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 Width: | Height: | 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 Width: | Height: | 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 Width: | Height: | 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>
|
<span class="dt-label">Last Modified</span>
|
||||||
</section>
|
</section>
|
||||||
<hr class="heading">
|
<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 %}
|
{% for post in projects limit:5 %}
|
||||||
{% if post.draft == false or jekyll.environment == "development" %}
|
{% if post.draft == false or jekyll.environment == "development" %}
|
||||||
{% include project_summary.html %}
|
{% include project_summary.html %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user