Friday, August 16, 2024

Istilah-istilah di kompresor angin

Kompresor Udara Bertekanan Rendah: di bawah 145 PSI (atau 10 bar) Kompresor Udara Bertekanan Sedang: antara 145 dan 1.160 PSI (atau 10 hingga 80 bar) Kompresor Udara Bertekanan Tinggi: antara 1.160 dan 15.000 PSI (80 dan 1.000 bar) Hyper -Kompresor Udara Bertekanan dan Sangat Tinggi: lebih dari 15.000 PSI (1.000 bar).

Pada spray gun ini jarak dan tekanan udara sangat mempengaruhi hasil dari pelapisan yang dilakukan, jarak spray yang terjadi pada umumnya adalah 152,4 mm – 300 mm serta besar tekanan udara yang baik agar spray gun dapat beratomasi dengan baik sebesar 2 - 5 bar [3].

Tekanan yang dihasilkan di dalam tangki kompresor udara diukur dalam bar dan pound per inci persegi, atau PSI. Kebanyakan kompresor memiliki tekanan kerja 8 bar atau 115 PSI, yang lebih dari cukup untuk peralatan udara DIY dan hobi (biasanya sekitar 90 PSI).

Namun sebaiknya Anda memiliki kompresor yang menghasilkan PSI lebih tinggi dari yang Anda perlukan karena tekanan udara akan turun seiring penggunaan. Aturan praktis yang baik adalah memiliki setidaknya 35% lebih banyak dari 90 PSI yang diperlukan untuk alat tersebut, atau sekitar 120 PSI . Dengan cara ini, Anda akan yakin akan tekanan yang konsisten. 

1/2 HP ~ 7 BAR ~ 101.5 PSI s/d 8 BAR ~ 116 PSI 

3/4 HP ~ 10 BAR ~ 145 PSI

Friday, August 9, 2024

java: graphics2d and rotation test

 

import java.awt.BasicStroke;

import java.awt.EventQueue;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.geom.AffineTransform;

import java.awt.image.BufferedImage;

import java.io.IOException;


import javax.imageio.ImageIO;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;


public class JFrameRotate extends JFrame {


private static final long serialVersionUID = 1L;

private JPanel contentPane;


/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

JFrameRotate frame = new JFrameRotate();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

int panelWidth=600, panelHeight=600;


/**

* Create the frame.

*/

public JFrameRotate() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(0, 0, panelWidth, panelHeight);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));


setContentPane(contentPane);

loadCard();

}


// JFrame: public void paint(Graphics g)

// JPanel: protected void paintComponent(Graphics g)

@Override

public void paint(Graphics g) {

if (bImg!=null) {

//g.drawImage(bImg, xCenter, yCenter, this);

// draw the image

Graphics2D g2d = (Graphics2D) g;

g2d.drawImage(bImg, rotate(10), contentPane);

g2d.drawImage(bImg, rotate(45), contentPane);

g2d.drawImage(bImg, rotate(90), contentPane);

g2d.drawImage(bImg, rotate90(), contentPane);

}

}

int strokeImg =1, widthImg=100, heightImg=150;

int xCenter=200, yCenter=300;

BufferedImage bImg;

private void loadCard() {

bImg = new BufferedImage(widthImg,

heightImg, BufferedImage.TYPE_INT_BGR);

Graphics2D g2d = bImg.createGraphics();

g2d.setStroke(new BasicStroke(1)); // 1 pixel

// https://stackoverflow.com/questions/31152233/opening-image-asset-java-jdk-8

String sFName = "/images/KC.png"; // See here to setup image resources

BufferedImage img;

try {

img = ImageIO.read(getClass().getResource(sFName));

g2d.drawImage(img, strokeImg, strokeImg, widthImg-(2*strokeImg),

heightImg-(2*strokeImg), this);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

private AffineTransform rotate(int degree) {


double rotationAngle=degree*Math.PI/180;

AffineTransform transform = new AffineTransform();

transform.rotate(rotationAngle, xCenter, yCenter);

//transform.rotate(rotationAngle);

transform.translate(xCenter, yCenter);

return transform;

}

/*

* 90 degree only, keep on position top left

*/

private AffineTransform rotate90() {


double rotationAngle=90*Math.PI/180;

AffineTransform transform = new AffineTransform();

transform.rotate(rotationAngle, xCenter, yCenter);

// yCenter-heightImg = horizontal position

// xCenter: vertical position

transform.translate(xCenter, yCenter-heightImg);

return transform;

}

}

Wednesday, August 7, 2024

Eclipse: how to read images from resources

Create resources folder

  1. create "res" folder via "Package Explorer".
  2. right click on "res" folder -> "Build Path" -> "Use as Source Folder". "res" will  be root of your resource.
  3. create "images" folder inside "res" folder. Copy your images into this folder. Path your file becomes "/images/example.jpg".

Accessing images from the "images" folder, use this piece of code into your java source code:

        String cName = "example.jpg";
        String sFName = "/images/"+cName;
        BufferedImage img = ImageIO.read(this.getClass().getResource(sFName));

References:

https://stackoverflow.com/questions/31152233/opening-image-asset-java-jdk-8

Monday, August 5, 2024

windows: disable fast start for multiple OS (dual boot)

Hibernation saves an image of your work and shuts down your computer or put your computer into sleep mode.

Fast Startup only saves an image of the system kernel and loaded drivers to reduce boot time.

Fast Startup may not suitable for System:

  1. multiple os except you never access/share data between multiple os.
  2. maintenance
  3. hardware change

Step to disable fast startup 

  1. Search -> Choose a power plan -> Choose what the power buttons do -> Change settings that are currently unavailable
  2. uncheck "Turn on fast start (recommendation)"
  3. save change and restart

 

Wednesday, July 17, 2024

Debian: using Festival to generate voice from text (Text To Speech/TTS) - AI TTS

folder voice

$ ls /usr/share/festival/voices/english/

Using command interpreter:

$ festival
...
festival> (voice.list)
(kal_diphone)
festival> (SayText "Hello")
#<Utterance 0x7f8747f99ef0>

festival> (quit)

Load text from file output direct to sound

$ festival --tts ./hello.txt 

Load text from file output direct to file

$ text2wave ./hello.txt -o text1.wav