차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

comfilepi:backlight:index [2026/02/20 15:34] – 만듦 - 바깥 편집 127.0.0.1comfilepi:backlight:index [2026/07/14 04:36] (현재) mfranklin
줄 1: 줄 1:
-====== 백라이트 제어하기 ======+====== LCD 백라이트 제어 ======
  
-컴파일 파이의 백라이트는 GPIO 에 연결되어 습니다. 모델에 따라 연결된 GPIO포트번호는 다릅니다. +LCD 백라이트를 켜거나 끌 수 으며, 밝기도 조절할 수 있습니다.
-따라서 백라이트를 코멘드라인 또는 프로그래밍 언어에 의해서 On/Off 할 수 있습니다.+
  
 +권장 제어 방법은 설치된 ComfilePi OS 버전에 따라 다릅니다.
  
-===== 코멘드라인 에서 제어 ===== +  * **Bookworm 이후 버전:** 파일 기반 터페이스를 사용합니다. 
-==== CPi-A & CPi-B & CPi-S 트 34==== +  * **Bullseye 이전 버전:** 백라이트 GPIO 핀을 직접 제어합니다.
-끄기+
  
-<code> +===== Bookworm 이후 버전 ===== 
-# using Bullseye + 
-raspi-gpio set 34 op +Trixie와 Bookworm은 LCD 백라이트를 제어하기 위한 파일 기반 인터페이스를 제공합니다. 이 인터페이스는 명령줄 또는 파일 입출력을 지원하는 모든 프로그래밍 언어에서 사용할 수 있습니다. 
-raspi-gpio set 34 dl + 
-  +이 인터페이스는 모델별 GPIO 구현을 추상화하므로, 지원되는 모든 ComfilePi 모델에서 동일한 명령과 애플리케이션 코드를 사용할 수 있습니다. 
-# using Buster or prior OSes + 
-gpio mode 34 output +또한 파일 기반 인터페이스는 밝기 값을 ///var/lib/cpi-backlight-fs/brightness//에 저장하므로, 시스템을 재부팅해도 이전 밝기 설정이 유지됩니다. 
-gpio write 34 0 + 
-</code>+파일의 위치는 OS 버전에 따라 다릅니다. 
 + 
 +^ OS 버전 ^ 켜기/끄기 제어 ^ 밝기 제어 ^ 
 +| Trixie | ''/run/cpi-backlight-fs/on'' | ''/run/cpi-backlight-fs/brightness''
 +| Bookworm | ''/data/opt/ComfileTech/backlight/control/on'' | ''/data/opt/ComfileTech/backlight/control/brightness''
 + 
 +다음 예제에서는 Trixie의 파일 경로를 사용합니다.
  
-켜기+==== 백라이트 켜기 ====
  
-<code> +''on'' 파일에 ''1''을 기록합니다.
-# using Bullseye +
-raspi-gpio set 34 op +
-raspi-gpio set 34 dh+
  
-# using Buster or prior OSes +<code console> 
-gpio mode 34 output +echo > /run/cpi-backlight-fs/on
-gpio write 34 1+
 </code> </code>
  
-==== CPi-C : 포트 44 ==== +==== 백라이트 끄기 ====
-끄기+
  
-<code> +''on'' 파일에 ''0''을 기록합니다. 
-# using Bullseye + 
-raspi-gpio set 44 op +<code console
-raspi-gpio set 44 dl +echo 0 > /run/cpi-backlight-fs/on
-  +
-# using Buster or prior OSes +
-gpio mode 44 output +
-gpio write 44 0+
 </code> </code>
  
-+==== 밝기 조절 ====
  
-<code> +''brightness'' 파일에 ''0''부터 ''100'' 사이의 값을 기록합니다. ''0''은 최소 밝기이고 ''100''은 최대 밝기입니다.
-# using Bullseye +
-raspi-gpio set 44 op +
-raspi-gpio set 44 dh+
  
-# using Buster or prior OSes +다음 명령은 밝기를 50%로 설정합니다. 
-gpio mode 44 output + 
-gpio write 44 1+<code console> 
 +echo 50 > /run/cpi-backlight-fs/brightness
 </code> </code>
  
-===== C 프로그램 =====+===== Bullseye 이전 버전 =====
  
- [[https://abyz.co.uk/rpi/pigpio/pdif2.html|pigpio]] 라이리를 사용해서 작성한 C소니다.+Bookworm 이전의 ComfilePi OS에는 파일 기반 백라이트 인터페이스가 제공되지 않습니다. 이러한 템에서는 해당 GPIO 핀에 직접 접근하여 백라이트를 제어합니다.
  
-<code c> +GPIO 핀 번호는 ComfilePi 모델에 따라 다릅니다.
-#include <pigpiod_if2.h>+
  
-#define PIN 34  // CPi-A & CPi-CPi-S +^ 백라이트 기능 ^ CPi-A/B/S ^ CPi-C ^ 
-// #define PIN 44  // CPi-C+| 켜기/끄기 | GPIO 34 | GPIO 44 
 +| 밝기 PWM | GPIO 31 | GPIO 26 |
  
-void backlight_on() +==== 백라이트 켜기 또는 끄기 ====
-+
-    auto instance pigpio_start(NULL, NULL);+
  
-    set_mode(instance, PIN, PI_OUTPUT); +ComfilePi 모델에 맞게 ''BACKLIGHT_PIN''을 설정하고''BACKLIGHT_STATE''를 ''0'' 또는 ''1''로 설정합니다.
-    gpio_write(instance, PIN, 1);+
  
-    pigpio_stop(instance); +  * ''0'' — 백라이트 끄기 
-}+  * ''1'' — 백라이트 켜기
  
-void backlight_off() +=== Bullseye ===
-+
-    auto instance pigpio_start(NULL, NULL);+
  
-    set_mode(instance, PIN, PI_OUTPUT); +<code bash> 
-    gpio_write(instancePIN0);+BACKLIGHT_PIN=34    # CPi-A/B/S: 34CPi-C: 44 
 +BACKLIGHT_STATE=1   # 0: 끄기1: 켜기
  
-    pigpio_stop(instance); +BACKLIGHT_LEVEL=(dl dh
-}+ 
 +raspi-gpio set "$BACKLIGHT_PIN" op 
 +raspi-gpio set "$BACKLIGHT_PIN" "${BACKLIGHT_LEVEL[$BACKLIGHT_STATE]}"
 </code> </code>
  
 +=== Buster 이전 버전 ===
  
-**Note**+<code bash> 
 +BACKLIGHT_PIN=34    # CPi-A/B/S34, CPi-C: 44 
 +BACKLIGHT_STATE=1   # 0: 끄기, 1: 켜기
  
-''set_mode'' 펑션이 ''PI_NOT_PERMITTED''을 리턴할 수 있, 아래와 같이 ''/lib/systemd/system/pigpiod.service'' 을 해서 사용세요.+gpio mode "$BACKLIGHT_PIN" output 
 +gpio write "$BACKLIGHT_PIN" "$BACKLIGHT_STATE" 
 +</code> 
 + 
 +==== 밝기 조절 ==== 
 + 
 +모델별 밝기 제어 GPIO에 PWM 신호를 출력하여 백라이트 밝기를 조절합니다. 
 + 
 +PWM 듀티비에 따라 밝기가 결정됩니다. 듀티비를 ''0''으로 설정하면 백라트가 꺼지고, ''255''로 설정하면 최대 밝기가 됩니다. 
 + 
 +다음 예제들은 모두 [[https://www.abyz.me.uk/rpi/pigpio/|pigpio]]의 기능을 사용합니다. ''pigpio''는 모든 CPi-A/B/C/S 패널 PC에 기본적으로 설치되어 실행됩니다. 
 + 
 +=== 명령줄 예제 === 
 + 
 +먼저 ''sudo apt install pigpio-tools''를 실행하여 [[https://www.abyz.me.uk/rpi/pigpio/pigs.html|pigs]] 명령줄 유틸리티를 설치합니다. 
 + 
 +ComfilePi 모델에 맞게 ''PIN''을 정하고, ''BRIGHTNESS''를 ''0''부터 ''255'' 사이의 값으로 설정합니다. 
 + 
 +<code bash> 
 +PIN=31          # CPi-A/B/S 
 +# PIN=26        # CPi-C 
 + 
 +FREQUENCY=1000  # PWM 주파수(Hz) 
 +BRIGHTNESS=128  # 0: 최소, 255: 최대 
 + 
 +# PWM 주파수 설정 
 +pigs pfs "$PIN" "$FREQUENCY"
  
-<code> +# 밝기 설정 
-ExecStart=/usr/bin/pigpiod -l -x0x00FFFFFFFFFFFF+# 128/255는 약 50% 밝기 
 +pigs p "$PIN" "$BRIGHTNESS"
 </code> </code>
  
-===== Backlight Dimming ===== +=== C# 예제 === 
-백라이트 밝기 조정을 위해서 CPi-A, CPi-B, CPi-S는 GPIO31, CPi-C는 GPIO26핀에 PWM을 사용하여 제어 할 수 있습니다.  pigpio 라이브러리를 사용하여 백라이트의 밝기를 조정합니다. + 
-<code> +먼저 ''sudo apt install libpigpiod-if2-1t64''를 실행하여 종속 패키지를 설치합니다. 
-#include <pigpiod_if2.h> + 
-#include <iostream> +<code csharp
-#include <string> +using System; 
-  +using System.Runtime.InteropServices
-using namespace std+ 
-  +class Backlight
-#define PIN 31  // CPi-A & CPi-B +
-// #define PIN 26  // CPi-C +
-  +
-int main(int argc, char *argv[])+
 { {
-   int value stoi(argv[1]); +    private const string PigpioLibrary = "libpigpiod_if2.so.1"; 
-  + 
-   auto instance pigpio_start(NULLNULL); +    [DllImport(PigpioLibrary, CallingConvention CallingConvention.Cdecl)] 
-  +    private static extern int pigpio_start(string? address, string? port); 
-   set_mode(instance, PIN, PI_OUTPUT); + 
-  +    [DllImport(PigpioLibrary, CallingConvention = CallingConvention.Cdecl)] 
-   set_PWM_frequency(instance, PIN, 200); +    private static extern void pigpio_stop(int pi); 
-  + 
-   set_PWM_dutycycle(instance, PIN, value); +    [DllImport(PigpioLibrary, CallingConvention CallingConvention.Cdecl)] 
-  +    private static extern int set_PWM_frequency( 
-   pigpio_stop(instance);+        int pi, 
 +        uint gpio, 
 +        uint frequency); 
 + 
 +    [DllImport(PigpioLibraryCallingConvention = CallingConvention.Cdecl)] 
 +    private static extern int set_PWM_dutycycle( 
 +        int pi, 
 +        uint gpio, 
 +        uint dutyCycle); 
 + 
 +    static void Main() 
 +    { 
 +        const uint PIN = 31;  // CPi-A/B/S 
 +        // const uint PIN = 26;  // CPi-C 
 + 
 +        int pi = pigpio_start(nullnull); 
 + 
 +        if (pi < 0) 
 +            throw new InvalidOperationException( 
 +                "pigpio 데몬에 연결할 수 없습니다."); 
 + 
 +        // PWM 주파수를 1kHz로 설정 
 +        set_PWM_frequency(pi, PIN, 1000); 
 + 
 +        // 0부터 255 사이의 값으로 밝기 설정 
 +        // 128/255는 약 50% 밝기 
 +        set_PWM_dutycycle(pi, PIN, 128); 
 + 
 +        pigpio_stop(pi); 
 +    }
 } }
 </code> </code>
-컴파일 및 실행 : 
-<code> 
-g++ backlight.cpp -lpigpiod_if2 -lpthread -o backlight 
  
-./backlight 0    minimum brightness +=== Python 예제 === 
-./backlight 128  medium brightness + 
-./backlight 255  maximum brightness +먼저 ''sudo apt install python3-pigpio''를 실행하여 종속 패키지를 설치합니다. 
-</code>   + 
-[[comfilepi:index#추가설명|상위 페이지로 이동]]+<code python> 
 +import pigpio 
 + 
 +PIN = 31  # CPi-A/B/S 
 +# PIN = 26  CPi-C 
 + 
 +pi = pigpio.pi() 
 + 
 +PWM 주파수를 1kHz로 설정 
 +pi.set_PWM_frequency(PIN, 1000) 
 + 
 +# 0부터 255 사이의 값으로 밝기 설정 
 +128/255는 약 50% 밝기 
 +pi.set_PWM_dutycycle(PIN, 128) 
 + 
 +pi.stop() 
 +</code> 
 + 
 +[[comfilepi:index|ComfilePi - 산업용 Raspberry Pi 패널 PC]] 
 +