본문 바로가기

728x90

Software

(43)
PID 제어 #include // PID 구조체 정의typedef struct {  double Kp;         // 비례 상수  double Ki;         // 적분 상수  double Kd;         // 미분 상수  double prev_error; // 이전 오차  double integral;   // 적분 값} PIDController;// PID 초기화 함수void PID_Init(PIDController *pid, double Kp, double Ki, double Kd) {  pid->Kp = Kp;  pid->Ki = Ki;  pid->Kd = Kd;  pid->prev_error = 0.0;  pid->integral = 0.0;}// PID 계산 함수double PID_Comp..
PID 제어 개념 서보모터에서 널리 사용되는 PID 제어.Proportional-Integral-Derivative 제어의 약자로, 자동 제어 시스템에서 널리 사용되는 피드백 제어 알고리즘.시스템의 현재 상태와 목표 상태 간의 차이를 줄이기 위해 세 가지 요소인 비례, 적분, 미분을 이용.  - 구성 요소1. 비례 제어(P)* 기능 : 현재 오차에 비례하는 제어 신호 생성* 효과 : 오차가 커질수록 제어 신호도 커지며, 이는 시스템이 더 빨리 목표값에 도달하도록 도와줌. 2. 적분 제어(I)* 기능 : 오차의 누적 값을 이용하여 제어 신호를 생성.* 효과 : 지속적인 오차를 제거하여 오차를 0으로 만드는데 도움. 3. 미분 제어(D)* 기능 : 오차의 변화율에 비례하는 제어 신호 생성.* 효과 : 시스템의 응답 속도를 조..
인터록 인터록 개념을 소프트웨어적으로 구현. 인터록 개념은 아래 게시글을 참조할 것.https://jwyeyo93.tistory.com/132 인터록두 개 이상의 기기나 시스템이 특정 조건이 충족될 때만 동작하도록 설계.한 장치가 특정 상태일 때 다른 장치가 작동하지 않도록 보장하는 방식.안전성과 신뢰성이 중요한 시스템에서 흔히 사jwyeyo93.tistory.com C언어로 구현. #include  #include  // 릴레이 상태를 나타내는 변수 bool relay1 = false; bool relay2 = false; // 스위치 1을 눌러 릴레이 1을 켜는 함수 void turnOnRelay1() {     if (!relay2) { // 릴레이 2가 켜져 있지 않을 때만 릴레이 1을 켬        ..
파이썬 실행파일 만들기(.exe) 1. PyInstaller 설치 pip install pyinstaller  2. 파이썬 스크립트를 실행 파일로 변환하기 pyinstaller --onefile your_script.py- onefile 옵션은 단일 실행 파일 생성하도록 * 아이콘 추가pyinstaller --onefile --icon=your_icon.ico your_script.py * 콘솔 창 숨기기 (Windows에서 GUI 프로그램 만들 때 유용)pyinstaller --onefile --windowed your_script.py * 라이브러리 포함'PyInstaller'는 스크립트를 분석하여 필요한 모든 종속성을 자동으로 포함하려고 하지만,일부 라이브러리나 모듈은 동적으로 임포트되기 때문에 분석 과정에서 누락될 수 있음.이런 ..
[JAVA] 배열 배열 선언 / 생성 타입[] 변수이름; 변수이름 = new 타입[길이]; ex) int[] score; // 배열을 생성(배열을 다루기 위한 참조변수 선언) score = new int[5]; // 배열 생성(실제 저장공간 생성) // int[] score = new int[5]; // 배열 선언 + 생성 2차원 배열 int[][] score = new int[4][3];
[C언어] unsigned 자료형 사용 시 주의사항 unsigned 두 변수를 빼는 연산을 통해 결과가 음수가 나온 값을 다시 unsigned 변수에 넣으면 0이 저장될 거라고 생각했는데, 실제로 해보니 0이 아니고 언더플로우가 발생하여 결과 출력됨 #include int main(void) { // your code goes here unsigned int a = 10; unsigned int b = 15; unsigned int result = 0; result = a - b; printf("result = %u\r\n", result); return 0; } [출력] result = 4294967291 그러므로 결과값이 음수가 나올 확률이 있다면, unsigned 자료형으로 하지 않아야 한다. 해결방법은 조건문을 거쳐서 0을 도출함. unsigned..
[JAVA] 타입 간 변환 방법 1. 문자열 --> 숫자 Interget.parseInt("3") ===> 3 Double.parseDouble("3.14") ===> 3.14 2. 문자열 --> 문자 "3".charAt(0) ===> '3' 3. 문자 --> 문자열 '3' + "" (빈문자열) ===> "3"
[JAVA] 입력받기 import java.util.Scanner; // Scanner를 사용하기 위해 추가 class Ex2_10 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("두자리 정수를 하나 입력해주세요.>"); String input = scanner.nextLine(); int num = Integer.parseInt(input); // 입력받은 문자열을 숫자로 변환 System.out.println("입력내용 :"+input); System.out.printf("num=%d%n", num); } } [ 출력 ] 두자리 정수를 하나 입력해주세요.>22 입력내용 :22 num=22..

728x90