Category Archives: Art

Made a JavaScript plugin for Hydra

Control your effects using MQTT.

You can add anything to control your effects using RotaryEncoders, sensors and other data values.

I’m fixing the code to make use of free MQTT servers on the internet.
Then I’ll post the JavaScript in the Hydra forum or discord.


Calling the JavaScript in https://hydra.ojack.xyz/ website

https://gist.githubusercontent.com/fashice/2098d1301117b86caed94aca8f2101ff/raw/7d2a7300e7ddf42d4f1793f693dbb517e09bd2d8/gistfile1.txt
change mqtt server and add to hydra using
await loadScript("https://domain/script.js¨);

Busy .. work and play

While working on my clients projects, I’ve been busy with other Fun stuff.

All will be posted more about soon

  • Designing 3D models for printing
  • Testing Arduino Code for RS485!
  • Creating T-shirt prints using 3D printing and bleach/paint with Vincent !
  • Transforming my Lab
  • Testing UM25C logging possibilities
  • Testing queries on overpass-turbo.eu (So much fun)
  • Playing chiptune music using Synthcart + Midi
  • Made V2 displayer on my 64×64 HUB75 led display
  • Bought a directional Wi-Fi antenna, tweaking wireshark to pinpoint rogue access points and clients.

Animatronics Tentacle Test

Using 3x SG90s (metal gears).
These performed far better using my Servo tester than the cheap plastic ones.

First version using Openscad, with variables to control how it looks.

This is printed using TPU.

RepeatingBit = 4;
nr = 20;
difference(){
union(){
for (a =[0:nr]) {
    translate([0,0,(a * (RepeatingBit))]) {
        translate([0,0,a*a*1.3])
        
        cylinder ( h=1+(a*1.1), r1=1,r2=7.5+(a*(a/10)), $fn=30 );
        translate([0,0,a*a*1.3+1+(a*1.1)])
        cylinder ( h=3+(a*1.5), r1=7.5+(a*(a/10)),r2=7.5+(a*(a/10)), $fn=30 );
        
        }
}
translate([0,0,0])
cylinder( h=650, r1=2,r2=4 , $fn=30 );
}

translate([5,0,-10])
rotate([0,2.5,0])
cylinder( h=1000, r1=1,r2=1 , $fn=30 );
translate([-3,4,-10])
rotate([-4/2,-3/2,0])
cylinder( h=1000, r1=1,r2=1 , $fn=30 );
translate([-3,-4,-10])
rotate([4/2,-3/2,0])
cylinder( h=1000, r1=1,r2=1 , $fn=30 );

translate([2,3,-10])
rotate([-1.4,0.6,0])
cylinder( h=1000, r1=2,r2=nr*1.3 , $fn=30 );

translate([2,-3,-10])
rotate([1.6,0.7,0])
cylinder( h=1000, r1=2,r2=nr*1.3 , $fn=30 );

translate([-3.5,0,-10])
rotate([0,-1.8,0])
cylinder( h=1000, r1=2,r2=nr*1.3 , $fn=30 );

}

Video with some organic movement

Using a Raspberry Pi, Python3 and a Servo HAT.

Bottom part

Moving photo test

Using a bowden tube (PTFE tube 1mm) with a 3d printed holder.
(ptfe is very smooth)

This is a test setup.
I’ve removed arms and the flute on the bottom picture using AI.
Then printed backpicture and top on sticky paper and stuck it on sturdy heavy paper.

I want to make a moving picture which moves our band members when there is sound (music).
(Guitar, Harp, Bagpipes and Flute)

First test

Making a plotter from a Laser Cutter

I’ve got a SculpFun Laser Cutter.
I’m using this a lot … as lasercutter.

But you can also use a laser cutter as a Plotter or vinyl cutter!

Just remove the laser head, and replace it with a pen or knife!
(360 swivel blade)

First : replace laserhead and make a controllable pen holder.

My Laser Cutter can be controlled using G-codes real-time.
Example my etch a sketch.
Now I just have to add a Z axis controller to control pen up/down.

While I’m not afraid to cut things by hand. Like our front door decoration.

I like a more precise and repeatable way. I’ve cut lots of Nae Bother Logo’s like on my Laptop. (These were made using a computer cutter)

Test code (no gcode yet):

#include <Servo.h>
const int buttonPin = 16;  
int lastButtonState = 0;  

Servo myservo; 

void setup() {
  pinMode(buttonPin, INPUT);
  myservo.attach(2); 
  myservo.write(0);
  Serial.begin(115200);
}

void loop() {
  int reading = digitalRead(buttonPin);

      if (reading == 1 && lastButtonState == 0) {
        myservo.write(0);
        Serial.println("UP");
        lastButtonState = 1;
      }
      if (reading == 0 && lastButtonState == 1) {
        myservo.write(160);
        Serial.println("DOWN");
        lastButtonState = 0;
      }

}

Tiny animator for stop-motion

I was working on a RP2040 HID project, but I needed some components I didn’t have … right now .. again ..

So I made something else ..

A tiny animator for stop motion animations using my webcam, python and OpenCV.

For claymotion or lego or whatever.

The program displays your webcam with the previous snapshot overlayed, so you can position everything relative to your previous snapshot.

Difference between two shots.

Press B to take a frame.

Just a proof of concept using a (BAD) webcam. (Don’t look at my hand )

CODE (short but you need OpenCV)

import  cv2
from datetime import datetime
# black is just a start empty image .. 
img=cv2.imread("black.png");
cap = cv2.VideoCapture(0)

while True: 

    ret,vid=cap.read()
    dim = (800,600)
    img1 = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
    vid1 = cv2.resize(vid, dim, interpolation = cv2.INTER_AREA)

    result=cv2.addWeighted(img1,0.5,vid1,0.5,0)
    cv2.imshow('overlay', result)
    if(cv2.waitKey(10) & 0xFF == ord('b')):
            now = datetime.now()
            current_time = now.strftime("%d_%m_%Y_%H_%M_%S")
            filename = '%s.png' % current_time
            if not cv2.imwrite(filename, vid1):
                raise Exception("Could not write image")
            img=cv2.imread(filename);

Pressing B fills your directory with PNG’s
like 24_10_2023_00_01_01.png (date formatted)

convert to GIF

convert -delay 10 -loop 0 24*.png animation.gif