usec 단위로 했었는데.. Hysnc의 길이가 왜.. 3.77usec?

아무튼.. 다시 아래 문서대로 계산을 해보니 값이 좀 많이 다르게 나온다.

vga_640x480.xlsx

2018/06/05 - [모종의 음모/DE0-Nano VGA] - vga 640x480 실패중 그리고 800x600x60


---

VESA DMT 문서에 의하면(공식인지 모르겠지만)



흐음.. 여전히 안되네...

module vga640x480(

input clk,

input rst,

output [7:0] LED,

output hsync,

output vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


parameter HSYNC = 190;

parameter HBP = (190 + 96);

parameter HVID = (190 + 96 + 1271);

parameter HFP = (190 + 96 + 1271 + 32);

parameter HTOTAL = 1589;


parameter VSYNC = 3200;

parameter VBP = (3200 + 52400);

parameter VVID = (3200 + 52400 + 762650);

parameter VFP = (3200 + 52400 + 762650 + 15900);

parameter VTOTAL = 834150;


reg [19:0] cnt;


always @ (posedge clk or negedge rst)

begin

if (~rst)

begin

cnt <= 0;

end

else

begin

if(cnt < VTOTAL)

begin

cnt <= cnt + 1;

/*

if((cnt % HTOTAL) < HSYNC)

hsync <= 0;

else hsync <= 1;

if(cnt < VSYNC)

vsync <= 0;

else vsync <= 1;


if(vsync & hsync)

begin

r <= 4'b1111;

g <= 4'b1111;

b <= 4'b1111;

end

else

begin

r <= 4'b0000;

g <= 4'b0000;

b <= 4'b0000;

end

*/

end

else

cnt <= 0;

end

end


assign LED[0] = ~vsync;

assign LED[1] = ~hsync;

assign r[3:0] = ((VVID < cnt & VFP < cnt) & (HVID < (cnt % HTOTAL) && (cnt % HTOTAL) < HFP)) ? 4'b1111 : 4'b0000;

assign g[3:0] = ((VVID < cnt & VFP < cnt) & (HVID < (cnt % HTOTAL) && (cnt % HTOTAL) < HFP)) ? 4'b1111 : 4'b0000;

assign b[3:0] = ((VVID < cnt & VFP < cnt) & (HVID < (cnt % HTOTAL) && (cnt % HTOTAL) < HFP)) ? 4'b1111 : 4'b0000;

assign hsync = ((cnt % HTOTAL) < HSYNC)? 0 : 1;

assign vsync = ((cnt         ) < VSYNC)? 0 : 1;


endmodule 




Posted by 구차니

DE0-nano에 LemonLite RGB 보드 사용

모니터 마다 해상도 출력이 좀 다른데 머가 문제일까..

일단 눈을 띄우는데는 성공했으니 뭐가 문제인지는 좀 찾아 봐야 할 듯..



vga640x480 vga(

CLOCK_50,

KEY[0],

LED,

GP0[6],

GP0[5],

{GP0[16],GP0[19],GP0[18],GP0[21]},

{GP0[12],GP0[15],GP0[14],GP0[17]},

{GP0[8],GP0[9],GP0[10],GP0[13]}

); 


module vga640x480(

input clk,

input rst,

output [7:0] LED,

output reg hsync,

output reg vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


reg clk25;

reg [9:0] horizontal_counter;

reg [9:0] vertical_counter;


reg [9:0] X;

reg [9:0] Y;


wire [7:0] red;

wire [7:0] green;

wire [7:0] blue;


assign r[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? red : 4'b000; 

assign g[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? green : 4'b000; 

assign b[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? blue : 4'b000; 

assign red =   ((horizontal_counter >= 144)&&(horizontal_counter < 344) ) ? 4'b1111 : 4'b0000;

assign green = ((horizontal_counter >= 344)&&(horizontal_counter < 544) ) ? 4'b1111 : 4'b0000;

assign blue =  ((horizontal_counter >= 544)&&(horizontal_counter < 784) ) ? 4'b1111 : 4'b0000;


always @(posedge clk)

begin


if (clk25 == 0)

begin

   clk25 <= 1;

end   

else

begin

clk25 <= 0;

   end

end



always @(posedge clk25)

begin

if ((horizontal_counter > 0) && (horizontal_counter < 97))// -- 96+1

begin

hsync <= 0;

end

else

begin

hsync <= 1;

end 

if ((vertical_counter > 0 ) && (vertical_counter < 3 )) //-- 2+1

begin

vsync <= 0;

end

else

begin

vsync <= 1;

end

horizontal_counter <= horizontal_counter+1;

    

if (horizontal_counter == 800) 

begin

vertical_counter <= vertical_counter+1;

horizontal_counter <= 0;

end

    

if (vertical_counter == 521)

begin

vertical_counter <= 0;

end

end



endmodule  

[링크 : https://github.com/pmezydlo/DE0-Nano-SOC-VGA/blob/master/vgaram.v]

Posted by 구차니

소스 코드 수정중인데 안나오네

vga640x480 vga(

CLOCK_50,

KEY[0],

LED,

GP0[6],

GP0[5],

{GP0[16],GP0[19],GP0[18],GP0[21]},

{GP0[12],GP0[15],GP0[14],GP0[17]},

{GP0[8],GP0[9],GP0[10],GP0[13]}

); 


module vga640x480(

input clk,

input rst,

output [7:0] LED,

output hsync,

output vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


parameter HSYNC = 189;

parameter HBP = (HSYNC + 95);

parameter HVID = (HBP + 1260);

parameter HFP = (HVID + 47);


parameter VSYNC = 3000;

parameter VBP = (VSYNC + 51000);

parameter VVID = (VBP + 762500);

parameter VFP = (VVID + 17500);


reg [19:0] cnt;


always @ (posedge clk or negedge rst)

begin

if (!rst)

begin

cnt <= 0;

end

else

begin

cnt <= cnt + 1;

if(cnt > 834000)

cnt <= 0;

end

end


assign hsync = ((cnt % 1590) < 189) ? 0 : 1;

assign vsync = (cnt < 3000) ? 0 : 1;

assign r = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign g = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign b = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign LED[0] = ~vsync;

assign LED[1] = ~hsync;


endmodule 


V sync는 59.95

H sync는 31.31kHz 이고


sync 길이도 파형도 맞는거 같은데..

Vsync 60us 근처

Hsync 4us 근처


왜 안될까...



+

module vga800x600x60(

input clk,

input rst,

output [7:0] LED,

output hsync,

output vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


parameter HSYNC = 160;

parameter HBP = (HSYNC + 95);

parameter HVID = (HBP + 1260);

parameter HFP = (HVID + 47);


parameter VSYNC = 5300;

parameter VBP = (VSYNC + 51000);

parameter VVID = (VBP + 762500);

parameter VFP = (VVID + 17500);


reg [19:0] cnt;


always @ (posedge clk or negedge rst)

begin

if (!rst)

begin

cnt <= 0;

end

else

begin

cnt <= cnt + 1;

if(cnt > 828950)

cnt <= 0;

end

end


assign hsync = ((cnt % 1320) < 160) ? 0 : 1;

assign vsync = (cnt < 5300) ? 0 : 1;

assign r = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign g = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign b = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign LED[0] = ~vsync;

assign LED[1] = ~hsync;


endmodule  



For VESA 800*600 @ 60Hz: 

Fh (kHz) :37.88 

A (us) :26.4 

B (us) :3.2 

C (us) :2.2 

D (us) :20.0 

E (us) :1.0 


Fv (Hz) :60.32 

O (ms) :16.579 

P (ms) :0.106 

Q (ms) :0.607 

R (ms) :15.84 

S (ms) :0.026 

[링크 : http://www.epanorama.net/documents/pc/vga_timing.html]


+

640x480x60 에 빨간화면 확인

vga640x480 vga(

CLOCK_50,

KEY[0],

LED,

GP0[6],

GP0[5],

{GP0[16],GP0[19],GP0[18],GP0[21]},

{GP0[12],GP0[15],GP0[14],GP0[17]},

{GP0[8],GP0[9],GP0[10],GP0[13]}

); 


모니터에 따라 인식이 느리거나 안되기도 하네..

848x640x60 으로 인식... 머야(요즘 24인치 FHD LCD 모니터)

module vga640x480(

input clk,

input rst,

output [7:0] LED,

output reg hsync,

output reg vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


reg clk25;

reg [9:0] horizontal_counter;

reg [9:0] vertical_counter;


reg [9:0] X;

reg [9:0] Y;


wire [7:0] red;

wire [7:0] green;

wire [7:0] blue;


assign r[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? 4'b1111 : 4'b000; 

assign g[1:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? 4'b1111 : 4'b000; 

assign b[2:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? 4'b1111 : 4'b000; 

assign red =   ((horizontal_counter >= 144)&&(horizontal_counter < 344) ) ? 4'b1111 : 4'b0000;

assign green = ((horizontal_counter >= 344)&&(horizontal_counter < 544) ) ? 4'b1111 : 4'b0000;

assign blue =  ((horizontal_counter >= 544)&&(horizontal_counter < 784) ) ? 4'b1111 : 4'b0000;


always @(posedge clk)

begin


if (clk25 == 0)

begin

   clk25 <= 1;

end   

else

begin

clk25 <= 0;

   end

end



always @(posedge clk25)

begin

if ((horizontal_counter > 0) && (horizontal_counter < 97))// -- 96+1

begin

hsync <= 0;

end

else

begin

hsync <= 1;

end 

if ((vertical_counter > 0 ) && (vertical_counter < 3 )) //-- 2+1

begin

vsync <= 0;

end

else

begin

vsync <= 1;

end

horizontal_counter <= horizontal_counter+1;

    

if (horizontal_counter == 800) 

begin

vertical_counter <= vertical_counter+1;

horizontal_counter <= 0;

end

    

if (vertical_counter == 521)

begin

vertical_counter <= 0;

end

end

endmodule  


[링크 : https://github.com/pmezydlo/DE0-Nano-SOC-VGA/blob/master/vgaram.v]

Posted by 구차니

reset키(key[0])를 누르고있는 동안에는 영상이 나온다.

단순하게 posedge를 negedge로 바꾸려고 하는데 에러나네.. ㅠㅠ


빨강이 옆에 번지는건 왜일까..


800x600 72Hz 라고 출력된다.



vga_demo vga(

CLOCK_50,

KEY[0],

GP0[16],

GP0[12],

GP0[8],

GP0[6],

GP0[5],

); 


/*

VGA Demo 800x600 at 72Hz

http://www-mtl.mit.edu/Courses/6.111/labkit/vga.shtml

800x600, 72Hz 50.000 800 56 120 64 600 37 6 23

Pixel Clock (MHz): 50.000 

Horizontal (in Pixels)

    Active Video: 800 (16us)

    Front Porch:   56 (1.12us)

    Sync Pulse:   120 (2.4us)

    Back Porch:    64 (1.28us)

        Total pixel clock ticks: 1040 (20.8us)

Vertical (in Lines, so x20.8us)

    Active Video: 600 (12480us)

    Front Porch:   37 (769.6us)

    Sync Pulse:     6 (124.8us)

    Back Porch:    23 (478.4us)

        Total pixel clock ticks: 666 (13.32us)

Total pixel clock ticks: 692,640

50,000,000 / 692,640 = 72.187572188 = 72Hz

1 pixel clock = 1/50Mhz = 20ns = 0.02us

*/


module vga_demo

    (

        CLOCK_50,

        RESET,

        VGA_RED,

        VGA_GREEN,

        VGA_BLUE,

        VGA_HS,

        VGA_VS

    );

    input CLOCK_50;

    input RESET;

    output VGA_RED;

    output VGA_GREEN;

    output VGA_BLUE;

    output VGA_HS;

    output VGA_VS;


    /* Internal registers for horizontal signal timing */

    reg [10:0] hor_reg; // to count 1040 different values up to 1039

    reg hor_sync;

    wire hor_max = (hor_reg == 1039); // to tell when a line is full


    /* Internal registers for vertical signal timing */

    reg [9:0] ver_reg; // to count 666 different values up to 665

    reg ver_sync;

    reg red, green, blue;

    wire ver_max = (ver_reg == 665); // to tell when a line is full


    // Code


    

    /* Running through line */

    always @ (posedge CLOCK_50 or posedge RESET) begin


        if (RESET) begin 

            hor_reg <= 0;

            ver_reg <= 0;

        end

        else if (hor_max) begin

            hor_reg <= 0;


            /* Running through frame */

            if (ver_max)

                ver_reg <= 0;

            else

            ver_reg <= ver_reg + 1;


        end else

            hor_reg <= hor_reg + 1;


    end

    

    always @ (posedge CLOCK_50 or posedge RESET) begin

    

        if (RESET) begin 

            hor_sync <= 0;

            ver_sync <= 0;

        end

        else begin


            /* Generating the horizontal sync signal */

            if (hor_reg == 856)      // video (800) + front porch (56)

                hor_sync <= 1;       // turn on horizontal sync pulse

            else if (hor_reg == 976) // video (800) + front porch (56) + Sync Pulse (120)

                hor_sync <= 0;       // turn off horizontal sync pulse


            /* Generating the vertical sync signal */

            if (ver_reg == 637)      // LINES: video (600) +  front porch (37)

                ver_sync <= 1;       // turn on vertical sync pulse

            else if (ver_reg == 643) // LINES: video (600) + front porch (37) + Sync Pulse (6)

                ver_sync <= 0;       // turn off vertical sync pulse


                

            // Draw a single square.

            if (hor_reg >= 100 && hor_reg <= 200 && ver_reg >= 100 && ver_reg <= 200) begin

                red <= 1;

                green <= 0;

                blue <= 0;

            end 

            else begin

                red <= 1;

                green <= 1;

                blue <= 1;

            end

                

        end

    end


    // Send the sync signals to the output, inverted as the sync pulse is low.

    // Maybe wrong as this doc says pulse id positive http://tinyvga.com/vga-timing/800x600@72Hz

    assign VGA_HS = ~hor_sync;

    assign VGA_VS = ~ver_sync;

    

    // Send a pattern of colours (based on the registry bits) but do not output anything during the synchronization periods

    //assign VGA_RED = (!hor_reg[0] && !ver_reg[0] && ver_reg < 600 && hor_reg < 800);

    //assign VGA_GREEN = (!hor_reg[1] && !ver_reg[1] && ver_reg < 600 && hor_reg < 800);

    //assign VGA_BLUE = (!hor_reg[2] && !ver_reg[2] && ver_reg < 600 && hor_reg < 800);

    

    assign VGA_RED =  red && ver_reg < 600 && hor_reg < 800;

    assign VGA_GREEN = green && ver_reg < 600 && hor_reg < 800;

    assign VGA_BLUE = blue && ver_reg < 600 && hor_reg < 800;    

    

    // http://gerfficient.com/2013/02/11/fpga-to-vga-using-de0-nano/

    

endmodule 

[링크 : https://github.com/theapi/de0-nano/blob/master/vga/experiment/vga_demo.v]

Posted by 구차니

하다 보면 언젠간 언어도 익히고 작동도 하겠지머..

일단 sync만 인식을 하는지 절전모드였던 모니터가 살아나기는 하는데 해상도 정보까진 못 띄우네

DE0-nano에 시도중

vga640x480 vga(

CLOCK_50,

KEY[0],

LED,

GP0[6],

GP0[5],

{GP0[16],GP0[19],GP0[18],GP0[21]},

{GP0[12],GP0[15],GP0[14],GP0[17]},

{GP0[8],GP0[9],GP0[10],GP0[13]}

); 


module vga640x480(

input clk,

input rst,

output [7:0] LED,

output reg hsync,

output reg vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


parameter HSYNC = 189;

parameter HBP = (HSYNC + 95);

parameter HVID = (HBP + 1260);

parameter HFP = (HVID + 47);


parameter VSYNC = 3000;

parameter VBP = (VSYNC + 51000);

parameter VVID = (VBP + 762500);

parameter VFP = (VVID + 17500);


reg [19:0] cnt;


always @ (posedge clk or negedge rst)

begin

if (~rst)

cnt <= 0;

else

begin

if(cnt < 834000)

begin

cnt <= cnt + 1;

if((cnt % 1590) < HSYNC)

hsync <= 1;

else hsync <= 0;

if(cnt < VSYNC)

vsync <= 1;

else vsync <= 0;

end

else

cnt <= 0;

end

end


assign LED[0] = vsync;

assign LED[1] = hsync;


endmodule 


위의 수치는 아래의 계산에 의해서 나온 것 임.

vga_640x480.xlsx


+

parameter는 이전 값을 더해서 쓸수는 없는건가..

HFP를 이용해서 % 연산을 하면 정상적으로 작동하지 않는 것으로 보이네..



+

sync 구간에만 0이고 나머지는 1로 vsync/hsync 출력해야 하네?

[링크 : https://ws0.org/how-to-generate-a-vga-signal-with-a-fpga/]

[링크 : http://www.cs.ucr.edu/~jtarango/cs122a_lab4.html]

[링크 : https://www.nandland.com/goboard/vga-introduction-test-patterns.html]


+

단순하게 데이터만 출력한다고 나오는게 아닌가?

아무튼.. modelsim 쓰는법 배워서 출력 시그널 확인을 할 필요가 있을 듯...

module vga640x480(

input clk,

input rst,

output [7:0] LED,

output reg hsync,

output reg vsync,

output reg [3:0] r,

output reg [3:0] g,

output reg [3:0] b

);


parameter HSYNC = 189;

parameter HBP = (HSYNC + 95);

parameter HVID = (HBP + 1260);

parameter HFP = (HVID + 47);


parameter VSYNC = 3000;

parameter VBP = (VSYNC + 51000);

parameter VVID = (VBP + 762500);

parameter VFP = (VVID + 17500);


reg [19:0] cnt;


always @ (posedge clk or negedge rst)

begin

if (~rst)

begin

cnt <= 0;

hsync <= 1;

vsync <= 1;

end

else

begin

if(cnt < 834000)

begin

cnt <= cnt + 1;

if((cnt % 1590) < HSYNC)

hsync <= 0;

else hsync <= 1;

if(cnt < VSYNC)

vsync <= 0;

else vsync <= 1;

if(vsync & hsync)

begin

r <= 4'b1111;

g <= 4'b1111;

b <= 4'b1111;

end

else

begin

r <= 4'b0000;

g <= 4'b0000;

b <= 4'b0000;

end

end

else

cnt <= 0;

end

end


assign LED[0] = ~vsync;

assign LED[1] = ~hsync;


endmodule 


+

2018.06.04

하드웨어 구조는 모르겠지만 동일 셋트 예제 발견

[링크 : https://github.com/theapi/de0-nano/blob/master/vga/experiment/vga_demo.v]

Posted by 구차니

VGA Test Pattern Generator 만들기 준비중

일단 핀배열은 다음과 같고..


핀 배열상 어쩔수 없으니 Blue3는 포기(회로도 확인하니 두번째로 작은 비트)

그래서 GPIO1 번의 왼쪽에서 첫 핀은 빼고 연결하도록 일단 구상 중


회로는 공개할 수 없으니 비슷한거 검색해서 걸기!

[링크 : https://electronics.stackexchange.com/...-pattern-to-generate-vga-signal-with-micro-controller]

Posted by 구차니

뜬금없이 이상한쪽으로(?) 호기심 발동중.. OTL

생각해보니.. Cortex-M4에 USB 있으니까 그걸 이용하면

USB HID 구현하고 Force Feedback 합쳐서 하나의 완전한 제품을 만들 수 있을 듯?


----

아두이노 레오나르도 계열은 USB PHY 내장 이라고 표현하면 되려나?

아무튼 ATmega32u4을 사용중인데 u가 USB의 식별자 인 듯..

[링크 : http://ww1.microchip.com/.../Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Summary.pdf]


  • Arduino Leonardo / Arduino Micro - ATmega32u4 based

[링크 : http://www.instructables.com/id/Add-USB-Game-Controller-to-Arduino-LeonardoMicro/]

[링크 : https://github.com/MHeironimus/ArduinoJoystickLibrary]


  • Arduino Nano

Nano에 GPIO를 이용하여 Software USB를 구현

[링크 : http://www.playwithtransistors.com/index.php/78-microcontroller/130-arduino-nano-arcade]



+

FFB(Force Feed Back)

[링크 : http://opensimwheel.wikidot.com/]

[링크 : https://github.com/OpenSimwheel]

[링크 : http://ascher-racing.com/wp-content/uploads/OpenSimwheel-Tutorial.pdf]

[링크 : https://code.google.com/archive/p/adapt-ffb-joy/]

[링크 : https://granitedevices.com/wiki/SimuCUBE]


로지텍 포스 피드백 프로토콜 V1.5

[링크 : https://opensource.logitech.com/opensource/index.php/Technical_Information]


DirectX SDK에 FEdit이라고 Force Editor가 포함되어 있는 듯?

[링크 : http://web.uvic.ca/~gleung86/courses/ENGR%20446/engr446-ffb-report.docx]


MSFFB2 - Microsoft Sidewinder Force Feedback 2

[링크 : https://forums.eagle.ru/showthread.php?t=146726]


DX8.1 SDK 에 있다는데.. 요즘꺼에는 없거나 다른걸로 대체 되었나?

[링크 : https://www.gamedev.net/forums/topic/575629-force-feedback-editor/]


[링크 : https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb153254(v=vs.85).aspx]

[링크 : https://www.codeproject.com/Articles/24412/Force-Feedback-in-Managed-DirectX]


구버전의 DirectInput에서 XInput으로 대체 되면서

haptic 어쩌구로 명쳥이 변경된건가?

[링크 : https://msdn.microsoft.com/ko-kr/library/windows/desktop/ee417001(v=vs.85).aspx]


아무래도 XInput에 XBOX360 부터 나온거라 모터가 2개 까지 지원하도록 된 듯?

[링크 : https://msdn.microsoft.com/.../microsoft.directx_sdk.reference.xinput_vibration(v=vs.85).aspx]

[링크 : https://msdn.microsoft.com/.../microsoft.directx_sdk.reference.xinputsetstate(v=vs.85).aspx]


+

I'm using a Pololu serial servo driver and X-Sim 2 Beta software. The game is Live For Speed

[링크 : https://www.youtube.com/watch?v=R5cuLQnAu9w]

    [링크 : https://www.pololu.com/product/207]

    [링크 : http://www.x-sim.de/software.php?lang=eng&page=termsprivate]


[링크 : https://www.xsimulator.net/community/threads/my-simple-sim-motion-chair.1667/]

[링크 : https://www.youtube.com/watch?v=BOufJuZHUOU]

    [링크 : https://www.lfs.net/]


완제품?

[링크 : http://www.frex.com/gp/]

[링크 : https://www.vesaro.com/store/pc/Home.asp] <- F1 레이싱 게임 관련해서 검색중 발견

'모종의 음모 > force feedback' 카테고리의 다른 글

new-lg4ff 와 oversteer 설치 시도  (0) 2024.10.12
플심용 자작 시뮬레이터  (2) 2024.10.11
ffb (force feedback) linux driver  (0) 2024.10.07
ffb - force feedback  (0) 2023.08.25
AVR FFB(force feedback)  (0) 2021.06.29
Posted by 구차니

먼가 무진장 헷갈리는 단어다.

가시광선은 인간이 잘 보는 빨간색 부터 보라색까지의 영역

Visible Spectrum / Light / Ray wavelength 등 용어도 참 다양하다


엄밀하게 우리가 말하는 영화상/열영상/열상 이나

CCTV 등에서 말하는 적외선 카메라나 모두

Infrared 영역을 사용하니 적(Red)외(infra)선(ray) 은 맞는데

NIR SWIR/MWIR/LWIR로 조금 더 세분화 되어


CMOS나 CCD 센서가 가시광선 + NIR 영역을 보기에

단순하게 IR Cut Filter로 광학적/기계적으로 구분한다면

SWIR/MWIR/LWIR은 센서 자체가 달라지는 듯?


아무튼 FLIR로 대변되는(?) 열영상은 micro-Bolometer 로 촬영한다.

bolometer is a device for measuring the power of incident electromagnetic radiation via the heating of a material with a temperature-dependent electrical resistance. It was invented in 1878 by the American astronomer Samuel Pierpont Langley. 

[링크 : https://en.wikipedia.org/wiki/Microbolometer]

[링크 : https://en.wikipedia.org/wiki/Bolometer]


스펠링이 비슷해서 헷갈렸는데 얘는 Barometer 기압계

[링크 : https://en.wikipedia.org/wiki/Barometer]


[링크 : ftp://ftp.stemmer-imaging.com/...-SIWR-and-LWIR-camera-technology-KAVTO36-201306.pdf]


적외선 영상

나무잎은 반사되서 하얗게 나오고 몸체는 회색이나 검은색으로 나온다.

[링크 :http://mstecker.com/pages/irgallery_fp.htm]


가시광선 & 열영상

일반 카메라와 FLIR 촬영했는데, 나무잎이 없어서 머라고 표현하기 애매한 상황..

[링크 :https://www.youtube.com/watch?v=_bS6Yd_Ay7Q]

    [링크 : http://www.bowsite.com/BOWSITE/features/articles/equipment/FLIR/]


가시광선 & 열영상

추가적인 정보가 없어서 모르겠지만.. 하늘은 검고(우주는 추우니까?)

나무는 땅보다 열이 적어서 검게 나온다. 그러니까 반사되는 빛을 찍는게 아닌 듯


[링크 : https://youtu.be/wuc-sHVSV8M?t=36]


[링크 : https://www.scoutbasecamp.com/content/flir-scout-faq.html]

'모종의 음모 > 적외선(IR)' 카테고리의 다른 글

열영상과 적외선 영상의 차이점  (0) 2010.07.15
적외선 카메라 만들기  (8) 2010.07.02
웹캠을 적외선 웹캠으로  (0) 2009.12.11
Posted by 구차니



[링크 : https://www.korean.go.kr/hangeul/principle/001.html]

[링크 : https://www.korean.go.kr/nkview/news/12/128.htm]

'모종의 음모 > 폰트 생성기' 카테고리의 다른 글

opentype font format  (0) 2017.07.26
폰트제작 프로그램  (0) 2017.07.26
fontforge - 벡터 폰트 제작기  (0) 2013.02.14
Posted by 구차니


[링크 : https://www.microsoft.com/typography/otspec/otff.htm]

[링크 : https://en.wikipedia.org/wiki/TrueType]

[링크 : https://superuser.com/questions/96390/difference-between-otf-open-type-or-ttf-true-type-font-formats]

'모종의 음모 > 폰트 생성기' 카테고리의 다른 글

한글의 구성  (2) 2017.07.26
폰트제작 프로그램  (0) 2017.07.26
fontforge - 벡터 폰트 제작기  (0) 2013.02.14
Posted by 구차니