프로그램 사용/ncurses2024. 12. 2. 10:22

screen - window 계층 구조인 것 같고

상자는 세로, 가로로 쓸 문자만 넣어주면 되는 듯. 터미널 사이즈에 따른 동적 변화는 따로 찾아봐야겠네.

#include <ncurses.h>

int main(void){
    initscr();
    start_color();
    init_color(1, 0, 1000, 0);      // 1번 색상(글자색): 초록색
    init_color(2, 0, 0, 1000);      // 2번 색상(배경색): 파랑색
    init_pair(1, 1, 2);             // 1번 Color pair를 초록 글자색과 파랑 배경색으로 지정
    
    WINDOW * win = newwin(20, 20, 10, 10);
    box(win, '|', '-');
    waddch(win, 'A' | COLOR_PAIR(1));   // 1번 Color pair를 적용해 문자 출력

    refresh();
    wrefresh(win);
    getch();
    endwin();
}

 

start_color() 로 색상을 사용할 수 있도록 설정하고

init_color(index, , , ,)로 팔레트를 초기화 하고

attron(attribute on), attroff(attribute off) 함수로 색상을 적용/해제 한다.

#include <ncurses.h>

int main(void){
    initscr();
    start_color();

    init_color(1, 0, 1000, 0);
    init_color(2, 0, 0, 1000);
    init_pair(1, 1, 2);

    attron(COLOR_PAIR(1));    // 출력 색상을 1번 Color pair로 변경
    printw("Hello");
    attroff(COLOR_PAIR(1));   // 속성 해제

    refresh();
    getch();
    endwin();
}

[링크 : https://magmatart.dev/development/2017/06/15/ncurses4.html]

'프로그램 사용 > ncurses' 카테고리의 다른 글

ncurses 예제  (0) 2024.11.30
ncurse  (0) 2015.04.27
Posted by 구차니

음.. 요즘 정신이 계속 없었나 적어두지도 않아서 헤매는 중

 

올해 중순에 샀다는데

내 기억으로는 연 초에 갈고는 필터가 없어서 못 갈고 있었는데

새로산 건 어디로 갔으며, 내 기억은 어떻게 되었는가..(!)

 

Posted by 구차니

배틀넷

눈이 오고 그러면 산책도 힘들테니 살...까?

근데 8250원.. 흐음... 5천원이면 고민 안하고 질렀을 것 같은디...

 

스팀

NFS unbound 첨 봤는데 nfs 라니 끌리고

cities skylines는 epic에서 받은적 있으니 패스

ace combat 7은 끌리네

'게임 > 오리진&스팀&유플레이' 카테고리의 다른 글

아 몰라 질러  (1) 2024.12.17
epic 무료 게임!  (0) 2024.12.06
오늘의 게임 다운로드  (0) 2024.11.02
게임 지름 + 선물 강요  (0) 2024.10.28
daemon x machina 100% side goal 완료!  (6) 2024.10.27
Posted by 구차니

324 바이트를 받고 있고

데이터 포맷이 맞는지 모르겠지만 일단은 pause / racing은 확실한데..

가속도 값이 저게 맞나..?

324 received
let's fly
acc X 10.054599
acc Y -0.817630
acc Z 2.089930
vel X -6.518519
vel Y -0.198055
vel Z 17.591864
yaw   -2.862235
roll  -0.191706
pitch 0.158119

 

packed 하지 않으면 아래 사이즈

232 sizeof(FORZA_SLED)
332 sizeof(FORZA_DASH)

 

packed 하면 아래 사이즈

232 sizeof(FORZA_SLED)
331 sizeof(FORZA_DASH)

 

forza horizon 은 sled 보단 dash 구조체 인가?

구조체 두개를 비교해보니, 실린더 수까진 동일하고 그 이후로 추가 데이터가 들어온다.

그렇다면.. 가속도가 맞다는건데.. 도대체(?) 왜 기어랑은 브레이크는 값이 왜 안들어 올까!

[링크 : https://support.forzamotorsport.net/hc/en-us/articles/21742934024211-Forza-Motorsport-Data-Out-Documentation]

 

리눅스 / ncurses / c 니까 어디든 쉽게 이식은 가능하겠지?

 

소스코드

더보기
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <ncurses.h>

 

#define BUF_SIZE 500

 

typedef char S8;
typedef unsigned char U8;
typedef unsigned short U16;
typedef int S32;
typedef unsigned int U32;
typedef float F32;

 

typedef struct _sled_
{
// = 1 when race is on. = 0 when in menus/race stopped …
S32 IsRaceOn;

 

// Can overflow to 0 eventually
U32 TimestampMS;
F32 EngineMaxRpm;
F32 EngineIdleRpm;
F32 CurrentEngineRpm;

 

// In the car's local space; X = right, Y = up, Z = forward
F32 AccelerationX;
F32 AccelerationY;
F32 AccelerationZ;

 

// In the car's local space; X = right, Y = up, Z = forward
F32 VelocityX;
F32 VelocityY;
F32 VelocityZ;

 

// In the car's local space; X = pitch, Y = yaw, Z = roll
F32 AngularVelocityX;
F32 AngularVelocityY;
F32 AngularVelocityZ;

 

F32 Yaw;
F32 Pitch;
F32 Roll;

 

// Suspension travel normalized: 0.0f = max stretch; 1.0 = max compression
F32 NormalizedSuspensionTravelFrontLeft;
F32 NormalizedSuspensionTravelFrontRight;
F32 NormalizedSuspensionTravelRearLeft;
F32 NormalizedSuspensionTravelRearRight;

 

// Tire normalized slip ratio, = 0 means 100% grip and |ratio| > 1.0 means loss of grip.
F32 TireSlipRatioFrontLeft;
F32 TireSlipRatioFrontRight;
F32 TireSlipRatioRearLeft;
F32 TireSlipRatioRearRight;

 

// Wheels rotation speed radians/sec.
F32 WheelRotationSpeedFrontLeft;
F32 WheelRotationSpeedFrontRight;
F32 WheelRotationSpeedRearLeft;
F32 WheelRotationSpeedRearRight;

 

// = 1 when wheel is on rumble strip, = 0 when off.
S32 WheelOnRumbleStripFrontLeft;
S32 WheelOnRumbleStripFrontRight;
S32 WheelOnRumbleStripRearLeft;
S32 heelOnRumbleStripRearRight;

 

// = from 0 to 1, where 1 is the deepest puddle
F32 WheelInPuddleDepthFrontLeft;
F32 WheelInPuddleDepthFrontRight;
F32 WheelInPuddleDepthRearLeft;
F32 WheelInPuddleDepthRearRight;

 

// Non-dimensional surface rumble values passed to controller force feedback
F32 SurfaceRumbleFrontLeft;
F32 SurfaceRumbleFrontRight;
F32 SurfaceRumbleRearLeft;
F32 SurfaceRumbleRearRight;

 

// Tire normalized slip angle, = 0 means 100% grip and |angle| > 1.0 means loss of grip.
F32 TireSlipAngleFrontLeft;
F32 TireSlipAngleFrontRight;
F32 TireSlipAngleRearLeft;
F32 TireSlipAngleRearRight;

 

// Tire normalized combined slip, = 0 means 100% grip and |slip| > 1.0 means loss of grip.
F32 TireCombinedSlipFrontLeft;
F32 TireCombinedSlipFrontRight;
F32 TireCombinedSlipRearLeft;
F32 TireCombinedSlipRearRight;

 

// Actual suspension travel in meters
F32 SuspensionTravelMetersFrontLeft;
F32 SuspensionTravelMetersFrontRight;
F32 SuspensionTravelMetersRearLeft;
F32 SuspensionTravelMetersRearRight;

 

// Unique ID of the car make/model
S32 CarOrdinal;

 

// Between 0 (D -- worst cars) and 7 (X class -- best cars) inclusive
S32 CarClass;

 

// Between 100 (worst car) and 999 (best car) inclusive
S32 CarPerformanceIndex;

 

// 0 = FWD, 1 = RWD, 2 = AWD
S32 DrivetrainType;

 

// Number of cylinders in the engine
S32 NumCylinders;
} __attribute__((packed)) FORZA_SLED;

 

typedef struct _dash_
{
// = 1 when race is on. = 0 when in menus/race stopped …
S32 IsRaceOn;

 

// Can overflow to 0 eventually
U32 TimestampMS;
F32 EngineMaxRpm;
F32 EngineIdleRpm;
F32 CurrentEngineRpm;

 

// In the car's local space; X = right, Y = up, Z = forward
F32 AccelerationX;
F32 AccelerationY;
F32 AccelerationZ;

 

// In the car's local space; X = right, Y = up, Z = forward
F32 VelocityX;
F32 VelocityY;
F32 VelocityZ;

 

// In the car's local space; X = pitch, Y = yaw, Z = roll
F32 AngularVelocityX;
F32 AngularVelocityY;
F32 AngularVelocityZ;

 

F32 Yaw;
F32 Pitch;
F32 Roll;

 

// Suspension travel normalized: 0.0f = max stretch; 1.0 = max compression
F32 NormalizedSuspensionTravelFrontLeft;
F32 NormalizedSuspensionTravelFrontRight;
F32 NormalizedSuspensionTravelRearLeft;
F32 NormalizedSuspensionTravelRearRight;

 

// Tire normalized slip ratio, = 0 means 100% grip and |ratio| > 1.0 means loss of grip.
F32 TireSlipRatioFrontLeft;
F32 TireSlipRatioFrontRight;
F32 TireSlipRatioRearLeft;
F32 TireSlipRatioRearRight;

 

// Wheels rotation speed radians/sec.
F32 WheelRotationSpeedFrontLeft;
F32 WheelRotationSpeedFrontRight;
F32 WheelRotationSpeedRearLeft;
F32 WheelRotationSpeedRearRight;

 

// = 1 when wheel is on rumble strip, = 0 when off.
S32 WheelOnRumbleStripFrontLeft;
S32 WheelOnRumbleStripFrontRight;
S32 WheelOnRumbleStripRearLeft;
S32 heelOnRumbleStripRearRight;

 

// = from 0 to 1, where 1 is the deepest puddle
F32 WheelInPuddleDepthFrontLeft;
F32 WheelInPuddleDepthFrontRight;
F32 WheelInPuddleDepthRearLeft;
F32 WheelInPuddleDepthRearRight;

 

// Non-dimensional surface rumble values passed to controller force feedback
F32 SurfaceRumbleFrontLeft;
F32 SurfaceRumbleFrontRight;
F32 SurfaceRumbleRearLeft;
F32 SurfaceRumbleRearRight;

 

// Tire normalized slip angle, = 0 means 100% grip and |angle| > 1.0 means loss of grip.
F32 TireSlipAngleFrontLeft;
F32 TireSlipAngleFrontRight;
F32 TireSlipAngleRearLeft;
F32 TireSlipAngleRearRight;

 

// Tire normalized combined slip, = 0 means 100% grip and |slip| > 1.0 means loss of grip.
F32 TireCombinedSlipFrontLeft;
F32 TireCombinedSlipFrontRight;
F32 TireCombinedSlipRearLeft;
F32 TireCombinedSlipRearRight;

 

// Actual suspension travel in meters
F32 SuspensionTravelMetersFrontLeft;
F32 SuspensionTravelMetersFrontRight;
F32 SuspensionTravelMetersRearLeft;
F32 SuspensionTravelMetersRearRight;

 

// Unique ID of the car make/model
S32 CarOrdinal;

 

// Between 0 (D -- worst cars) and 7 (X class -- best cars) inclusive
S32 CarClass;

 

// Between 100 (worst car) and 999 (best car) inclusive
S32 CarPerformanceIndex;

 

// 0 = FWD, 1 = RWD, 2 = AWD
S32 DrivetrainType;

 

// Number of cylinders in the engine
S32 NumCylinders;

 

// add for DASH
F32 PositionX;
F32 PositionY;
F32 PositionZ;
F32 Speed;
F32 Power;
F32 Torque;
F32 TireTempFrontLeft;
F32 TireTempFrontRight;
F32 TireTempRearLeft;
F32 TireTempRearRight;
F32 Boost;
F32 Fuel;
F32 DistanceTraveled;
F32 BestLap;
F32 LastLap;
F32 CurrentLap;
F32 CurrentRaceTime;
U16 LapNumber;
U8 RacePosition;
U8 Accel;
U8 Brake;
U8 Clutch;
U8 HandBrake;
U8 Gear;
S8 Steer;
S8 NormalizedDrivingLine;
S8 NormalizedAIBrakeDifference;

 

F32 TireWearFrontLeft;
F32 TireWearFrontRight;
F32 TireWearRearLeft;
F32 TireWearRearRight;

 

// ID for track
S32 TrackOrdinal;
} __attribute__((packed)) FORZA_DASH;

 

int last_raceon = 0;
void parse_forza(char *message)
{
int row = 0;
FORZA_DASH forza;
memcpy(&forza, message, sizeof(FORZA_DASH));

 

static unsigned int pack_cnt = 0;

 

if(last_raceon != forza.IsRaceOn)
{
clear();
last_raceon = forza.IsRaceOn;
}

 

if(forza.IsRaceOn)
{
mvprintw(row++, 0, "let's fly %d\n",pack_cnt++);

 

mvprintw(row++, 0, "RPM %f / %f", forza.CurrentEngineRpm, forza.EngineMaxRpm);

 

mvprintw(row++, 0, "acc X %f", forza.AccelerationX);
mvprintw(row++, 0, "acc Y %f", forza.AccelerationY);
mvprintw(row++, 0, "acc Z %f", forza.AccelerationZ);

 

mvprintw(row++, 0, "vel X %f", forza.VelocityX);
mvprintw(row++, 0, "vel Y %f", forza.VelocityY);
mvprintw(row++, 0, "vel Z %f", forza.VelocityZ);

 

mvprintw(row++, 0, "ang vel X %f", forza.AngularVelocityX);
mvprintw(row++, 0, "ang vel Y %f", forza.AngularVelocityY);
mvprintw(row++, 0, "ang vel Z %f", forza.AngularVelocityZ);
 
mvprintw(row++, 0, "yaw %f", forza.Yaw);
mvprintw(row++, 0, "roll %f", forza.Pitch);
mvprintw(row++, 0, "pitch %f", forza.Roll);



mvprintw(row++, 0, "CarOrdinal %d", forza.CarOrdinal);
mvprintw(row++, 0, "CarClass %d", forza.CarClass);
mvprintw(row++, 0, "CarPerformanceIndex %d", forza.CarPerformanceIndex);
mvprintw(row++, 0, "DrivetrainType %d", forza.DrivetrainType);
mvprintw(row++, 0, "NumCylinders %d", forza.NumCylinders);

 

mvprintw(row++, 0, "clutch[%d] brake[%d] accel[%d] handbrake[%d] gear[%d]"
, forza.Clutch
, forza.Brake
, forza.Accel
, forza.HandBrake
, forza.Gear);

 

}
else mvprintw(row++, 0, "pause");

 

refresh();
}

 

void error_handling(char *message);

 

int main(int argc, char *argv[]){
int serv_sock;
char message[BUF_SIZE];
int str_len;
socklen_t clnt_adr_sz;

 

struct sockaddr_in serv_adr, clnt_adr;

 

printf("%d sizeof(FORZA_SLED)\n", sizeof(FORZA_SLED));
printf("%d sizeof(FORZA_DASH)\n", sizeof(FORZA_DASH));

 

if(argc!=2){
printf("Usage:%s <port>\n", argv[0]);
exit(1);
}

 

serv_sock = socket(PF_INET, SOCK_DGRAM, 0);
if(serv_sock == -1)
error_handling("UDP socket creation error");

 

memset(&serv_adr, 0, sizeof(serv_adr));
serv_adr.sin_family=AF_INET;
serv_adr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_adr.sin_port=htons(atoi(argv[1]));

 

if(bind(serv_sock, (struct sockaddr*)&serv_adr, sizeof(serv_adr)) == -1)
error_handling("bind() error");
 
initscr();

 

while(1){
clnt_adr_sz = sizeof(clnt_adr);
str_len = recvfrom(serv_sock, message, BUF_SIZE, 0, (struct sockaddr*)&clnt_adr, &clnt_adr_sz);
message[str_len] = 0x00;
// printf("%d received [%s]\n", str_len, message);
// printf("%d received, %d sizeof(FORZA_SLED)\n", str_len, sizeof(FORZA_SLED));
parse_forza(message);
sendto(serv_sock, message, str_len, 0, (struct sockaddr*)&clnt_adr, clnt_adr_sz);
}
close(serv_sock);
return 0;
}

 

void error_handling(char *message){
fputs(message, stderr);
fputc('\n', stderr);

 

endwin();
exit(1);
}

'모종의 음모 > motion simulator' 카테고리의 다른 글

forza horizon 4 telemetry 수정  (0) 2024.12.07
forza telemetry  (0) 2024.12.02
forza horizon 4 data format  (0) 2024.11.20
dirt rally 2.0 motion data  (0) 2024.11.03
F1 2015 motion data  (0) 2024.11.03
Posted by 구차니
프로그램 사용/ncurses2024. 11. 30. 15:11

forza horizon 모션 데이터 출력을 위해서 ncurse 사용하게 될 줄이야..

 

일단 패키지를 설치해주고

$ sudo apt-get install libncurses-dev

 

소스를 가져오고

#include <ncurses.h>
#include <unistd.h>

int func1(){
    initscr();
    mvprintw(0, 0, "Hello, World"); // 화면의 0행, 0열부터 Hello, World를 출력합니다.
    refresh(); // 화면에 출력하도록 합니다.
    sleep(1);
    endwin();
    return 0;
}

int main(){
    return func1();
}
#include <ncurses.h>
#include <unistd.h>

int timer(){
    int row = 10, col = 10;
    initscr();
    noecho(); // 입력을 자동으로 화면에 출력하지 않도록 합니다.
    curs_set(FALSE); // cursor를 보이지 않게 합니다. 

    keypad(stdscr, TRUE);
    while(1){
        int input = getch();
        clear();
        switch(input){
            case KEY_UP:
            mvprintw(--row, col, "A"); // real moving in your screen
            continue;
            case KEY_DOWN:
            mvprintw(++row, col, "A");
            continue;
            case KEY_LEFT:
            mvprintw(row, --col, "A");
            continue;
            case KEY_RIGHT:
            mvprintw(row, ++col, "A");
            continue;

        }
        if(input == 'q') break;
    }

    endwin();
    return 0;
}

int main(){
    return timer();
}

 

아래의 링커 옵션을 주고 빌드하면 끝

$ gcc ncruse_example.c -lncurses -o bin/ex1

 

mvprintw() 만 쓰면 원하는 위치에 꾸준히 갱신할 수 있을 듯

[링크 : https://blackinkgj.github.io/ncurses/]

 

 

[링크 : https://www.ibm.com/docs/ko/aix/7.3?topic=p-printw-wprintw-mvprintw-mvwprintw-subroutine]

'프로그램 사용 > ncurses' 카테고리의 다른 글

ncurses 상자 및 색상 적용하기  (0) 2024.12.02
ncurse  (0) 2015.04.27
Posted by 구차니
회사일/BQ25703A2024. 11. 29. 12:34

Narrow의 의미를 모르겠어서 검색하는데 봐도 모르겠다

 

Narrow-VDC (NVDC) Power Path Management
– Instant-On With No Battery or Deeply Discharged Battery
– Battery Supplements System When Adapter is Fully-Loaded

8.4.1.1 System Voltage Regulation with Narrow VDC Architecture
The bq25703A employs Narrow VDC architecture (NVDC) with BATFET separating system from battery. The
minimum system voltage is set by MinSystemVoltage(). Even with a deeply depleted battery, the system is
regulated above the minimum system voltage.
When the battery is below minimum system voltage setting, the BATFET operates in linear mode (LDO mode).
As the battery voltage rises above the minimum system voltage, BATFET is fully on when charging or in
supplement mode and the voltage difference between the system and battery is the VDS of BATFET. System
voltage is regulated 160 mV above battery voltage when BATFET is off (no charging or no supplement current).

[링크 : https://www.ti.com/lit/ds/symlink/bq25703a.pdf]

 

대충 충전 모드/방전 모드 간의 전환이 빠르고, 소비전력이 적다라는건가?

Narrow VDC (NVDC) Battery Charger

This figure shows the Narrow VDC (NVDC) topology. Here, the system bus (Vsys) is not connected directly to the adapter. It is connected to the output of the buck converter. Hence, NVDC operates only as a buck converter, both when NVDC charges the battery and when the battery supplements the adapter and provides power to the system. NVDC implementation reduces the switch-over period between the charging mode and the hybrid power mode. NVDC implementation allows the system to minimize the period of overloading the input power source when CPU is in Turbo Boost mode.

The advantage of using the NVDC system is that the overall system efficiency is better compared to the Hybrid Power Boost (HPB) charger. The system can be designed for a smaller voltage rating since the system has a lower Vin. The disadvantage is that the charger components’ size and power dissipation increases.

[링크 : https://en-support.renesas.com/knowledgeBase/6680047]

'회사일 > BQ25703A' 카테고리의 다른 글

BQ25703A input voltage 갱신하기  (0) 2024.12.02
배터리 충전  (0) 2024.11.28
bq25703A i2c 읽기, 쓰기  (0) 2024.11.22
bq25703a 충전  (0) 2024.11.07
Posted by 구차니
파일방2024. 11. 29. 09:52

회사 동료가 쓰고 있어서 좀 혹했는데

CLI 에서는 mc를 주력(?)으로 쓰고 있고

GUI 에서는 그냥 여러개의 nautilus 열어 두면 되서 별로 안 끌리지만..

디자인이 total commander 같아서 조금은 흥미가 가던 녀석

 

sourceforge 에서 받아도 되고, 데비안 패키지로도 존재하는 듯

$ apt install doublecmd-gtk

[링크 : https://forums.linuxmint.com/viewtopic.php?t=378556]

 

[링크 : https://doublecmd.sourceforge.io/]

 

+

2024.12.03

$ apt-cache search doublecmd
doublecmd-common - twin-panel (commander-style) file manager
doublecmd-gtk - twin-panel (commander-style) file manager (GTK2)
doublecmd-help-en - Documentation for Double Commander (English)
doublecmd-help-ru - Documentation for Double Commander (Russian)
doublecmd-help-uk - Documentation for Double Commander (Ukrainian)
doublecmd-plugins - twin-panel (commander-style) file manager (plugins)
doublecmd-qt - twin-panel (commander-style) file manager (Qt5)

 

칫.. 두개 설치는 안되고 선택적으로 해야 하나보다.

$ sudo apt-get install doublecmd-gtk doublecmd-qt
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료        
몇몇 패키지를 설치할 수 없습니다. 요청한 상황이 불가능할 수도 있고,
불안정 배포판을 사용해서 일부 필요한 패키지를 아직 만들지 않았거나,
아직 Incoming에서 나오지 않은 경우일 수도 있습니다.
이 상황을 해결하는데 다음 정보가 도움이 될 수도 있습니다:

다음 패키지의 의존성이 맞지 않습니다:
 doublecmd-gtk : 충돌: doublecmd
 doublecmd-qt : 충돌: doublecmd
E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.

 

먼가 블랙모드라 그런가 흰색으로 된 것 보다 안 이뻐 보이네?

'파일방' 카테고리의 다른 글

ryzen controller?  (0) 2024.12.21
modbus online 생성기  (0) 2024.12.18
f3d - glb viewer  (0) 2024.08.09
fio - flexible io tester  (0) 2024.07.25
untangle  (0) 2024.03.11
Posted by 구차니
개소리 왈왈/블로그2024. 11. 28. 23:42

아쉽게도(?) 게임한다고 날려먹은 하루를 제외하면 잘 달리긴 했는데

그래도 다시는 이런(?) 이벤트 안했으면..

귀찮고, 이걸 왜 해야 하나 싶은데 자꾸 광고(?) 뜨니 짜증나서 하게 됨

 

 

그딴 이벤트 안해도 하루 한개 글 쓰는 인간이라 그런걸까..

'개소리 왈왈 > 블로그' 카테고리의 다른 글

해피빈 기부 시즌  (0) 2024.12.18
오블완 챌린지?  (3) 2024.11.07
티스토리 수익예측  (1) 2024.09.11
이번주는 개발자들 휴가?  (0) 2024.07.31
오랫만에 해피빈 기부  (0) 2024.07.22
Posted by 구차니
회사일/BQ25703A2024. 11. 28. 11:00

CC mode(정전류 Constant Current) / CV(정전압 Constant Voltage) mode

[링크 : https://m.post.naver.com/viewer/postView.naver?volumeNo=32510484&memberNo=53051877]

 

배터리 스펙에 충전완료 전류라는게 있다.

충전시에 충전이 끝나는게 아니라 꾸준히 밀면(?) 들어가는데

그렇기에 gauge 쪽에서 해당 전류까지 떨어지는걸 측정하면 멈추던가

charging ic 쪽에서 넣는 전류가 떨어지는걸 측정하면 멈추던가 해야하낟.

 

[링크 : https://www.mouser.com/datasheet/2/855/ASR00050_18650_2500mAh-3078640.pdf]

'회사일 > BQ25703A' 카테고리의 다른 글

BQ25703A input voltage 갱신하기  (0) 2024.12.02
bq25703A NVDC  (0) 2024.11.29
bq25703A i2c 읽기, 쓰기  (0) 2024.11.22
bq25703a 충전  (0) 2024.11.07
Posted by 구차니
Programming/C++ STL2024. 11. 28. 08:25

'Programming > C++ STL' 카테고리의 다른 글

cpp destructor = default  (0) 2025.01.16
cpp lambda  (0) 2024.11.22
cpp static_cast<type>  (0) 2023.02.09
::open()  (0) 2021.11.10
vector 값 비우기  (0) 2021.10.02
Posted by 구차니