728x90
반응형

내가 사용하는 코드.

#define FLASH_START_ADDRESS 0x0800FC00
#define FLASH_SAVE_TIME 5000 //5SEC

 

typedef struct
{
uint8_t fan_save; //fan level
uint8_t Heater_save; // bit1 : heater2, bit0 : heater1
uint8_t power_save;
uint8_t auto_save;
int8_t temp1;
int8_t temp2;
_Bool  heater_enable_flag;
sensortypeenum sensor_type;
}flashstruct;

 


void flash_erase(void)
{
uint32_t PageError;
__IO uint32_t data32 = 0, MemoryProgramStatus = 0;
HAL_FLASH_Unlock();

EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
EraseInitStruct.PageAddress = FLASH_START_ADDRESS;
EraseInitStruct.NbPages = 1;

if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
{
Error_Handler();
}
HAL_FLASH_Lock();
}

void flash_read(void)
{
flashstruct t;
memcpy(&t, (flashstruct*)FLASH_START_ADDRESS, sizeof(t));
memcpy(&flash, &t, sizeof(t));
}


void flash_save_process(void)
{
unsigned int* p_w = (unsigned int*)&flash;
int byte_align = 0;
if (sys.flash_save_count <= FLASH_SAVE_TIME) sys.flash_save_count++;
if (sys.flash_save_count == FLASH_SAVE_TIME)
{
flashstruct x;
memcpy(&x, &flash, sizeof(flash));
flash_read();
if (memcmp(&x, &flash, sizeof(flash)) != NULL)
{
memcpy(&flash, &x, sizeof(x));
if ((sizeof(flash) % 4) > 0) byte_align = 1; //구조체가 64비트 단위가 아닌경우 마지막 떨거지들에 대한 처리
flash_erase();
HAL_FLASH_Unlock();
for (int i = 0; i < sizeof(flash) / 4 + byte_align; i++)
{
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, (FLASH_START_ADDRESS + (i * 4)), p_w[i]);
}

HAL_FLASH_Lock();
}
}
}

 

 

------------------------------------------------------------------------------------

다음은 Github copilot이 만든 코드

 

static FLASH_EraseInitTypeDef EraseInitStruct = {0};
flashstruct flash;
static uint32_t flash_save_counter = 0;

void flash_erase(void)
{
    uint32_t PageError;
    HAL_FLASH_Unlock();

    EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;
    EraseInitStruct.Sector = FLASH_SECTOR_7;
    EraseInitStruct.NbSectors = 1;
    EraseInitStruct.VoltageRange = VOLTAGE_RANGE_3;

    if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
    {
        Error_Handler();
    }
    HAL_FLASH_Lock();
}

void flash_read(void)
{
    flashstruct temp;
    memcpy(&temp, (flashstruct*)FLASH_START_ADDRESS, sizeof(temp));
    memcpy(&flash, &temp, sizeof(temp));
}

void flash_save_process(void)
{
    unsigned int* p_data = (unsigned int*)&flash;
    int byte_align = 0;

    if (flash_save_counter <= FLASH_SAVE_TIME) 
        flash_save_counter++;

    if (flash_save_counter == FLASH_SAVE_TIME)
    {
        flashstruct temp;
        flash.key = FLASH_KEY;
        memcpy(&temp, &flash, sizeof(flash));
        
        // 현재 저장된 값과 비교
        flash_read();
        if (memcmp(&temp, &flash, sizeof(flash)) != 0)
        {
            memcpy(&flash, &temp, sizeof(temp));
            
            // 4바이트 정렬 체크
            if ((sizeof(flash) % 4) > 0) 
                byte_align = 1;
            
            flash_erase();
            HAL_FLASH_Unlock();
            
            // 4바이트 단위로 프로그래밍
            for (int i = 0; i < sizeof(flash) / 4 + byte_align; i++)
            {
                HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 
                                (FLASH_START_ADDRESS + (i * 4)), 
                                p_data[i]);
            }
            
            HAL_FLASH_Lock();
        }
        flash_save_counter = 0;
    }
}

void LoadSettings(void)
{
    flash_read();
    
    // 유효성 검사
    if(flash.key == FLASH_KEY) {
        start_temp = flash.start_temp;
        sysState.heater1.tempSet = flash.heater1_temp;
        sysState.heater2.tempSet = flash.heater2_temp;
        
        // 범위 검증
        if(start_temp < START_TEMP_MIN || start_temp > START_TEMP_MAX)
            start_temp = 0.0f;
        if(sysState.heater1.tempSet < TEMP_MIN || sysState.heater1.tempSet > TEMP_MAX)
            sysState.heater1.tempSet = TEMP_DEFAULT;
        if(sysState.heater2.tempSet < TEMP_MIN || sysState.heater2.tempSet > TEMP_MAX)
            sysState.heater2.tempSet = TEMP_DEFAULT;
    }
    else {
        // 기본값 설정
        start_temp = 0.0f;
        sysState.heater1.tempSet = TEMP_DEFAULT;
        sysState.heater2.tempSet = TEMP_DEFAULT;
    }
}

void SaveSettings(void)
{
    flash.start_temp = start_temp;
    flash.heater1_temp = sysState.heater1.tempSet;
    flash.heater2_temp = sysState.heater2.tempSet;
    flash_save_process();
}

728x90
반응형

'프로그램 > ST 32Bit' 카테고리의 다른 글

STM32CubeIDE Multiple definition 에러 해결 방법  (0) 2024.11.08
STM32L MCU 터치 사용  (0) 2024.05.25
터치 인식 조절  (0) 2024.01.02
STM32L072 터치 감도 및 인식 속도 조절  (0) 2023.10.27
728x90
반응형

 

https://www.amd.com/ko.html

 

AMD에 오신 것을 환영합니다

AMD는 데이터 센터 AI, AI PC, 지능형 에지 장치, 게임 등의 개발을 위한 선도적인 고성능 적응형 컴퓨팅 솔루션을 제공합니다.

www.amd.com

위에 amd 홈페이지로 드어감.

다운로드 및 지원에 가서 Vivado ML 개발자 툴을 선택

스크롤을 돌려 페이지 아래로 내려간다.

웹상에서 설치 하는 파일이 있다. 인터넷 상태가 좋으니 그냥 웹에서 설치 파일을 다운로드 하자.

새로운 창이 열리고 이메일 주소와 비밀 번호를 넣으라는 창이 열린다. 가입이 안돼어 있다면 가입을 해주자.

 

 

로그인을 하면 위와 같은 창이 나온다. 아래로 내려주자.

 

다운로드 버튼을 눌러주자.

다운로드가 완료 돼면 실행 해주자. 실행하면 관리자 모드로 실행 할거냐고 물어보면 예를 눌러주자.

이런 창이 뜨면 액세스 허용을 눌러주자.

빠른 설치를 위해 설정에 들어가자. 안해도 무방.

CPU 점유율을 최대로 해주자. 안해도 무방.

OK 클릭.

백신을 비활성화 하라고 하네. 안좋은거 같지만. 빠른 설치를 위해 잠시 정지...

가입했던 이메일 주소와 비밀번호를 넣으라고 한다. 넣고 Next를 눌러주자.

Vivado를 선택하고 Next를 누르자. Vitis로 설치하자.

그냥 Next 클릭.

Vitis Embedded Development 와 Power Design Manager (PDM) 두개를 체크 해줬다. 이게 뭔지 나도 잘 모른다. 전부 설치하고 Next 클릭.

라이센스 동의 하란다. 이걸 다 읽어봐야 하나... 그냥 다 I Agree  해주고 Next 해줬다.

어디에 설치하고 누구만 사용할거냐고 물어본다. 그냥 Next눌러줘도 된다. 난 심심해서 All users 클릭후 Next 했다.

폴더 없다고 폴더 만들거냐고 물어본다. Yes 클릭 해주자.

Install 눌러주고 기다리자.

열심히 다운로드 한다. 이론... 3시간 걸린다고 하네... 딴짓을 해야겠군..

4분남음........... 2시간 32분 걸려 다운 완료... 이제 설치 하네........ 한참 걸림.........

설치도 다해감...

이런 창이 떴네.... 라이센스 등록 해주라는 이야기 인듯함...

Trial 버전 말고 우선 접속해보장..

 

submit을 누르란다...

처음에는 더 많이 있었는데 등록 한것은 안나온다...

위와 같은 창이 열리면 우선 free만 선택해서 Generate Node-Locked License를 눌러서 하드 디스크에 저장하는것으로 하고 라이센스 파일을 다운 받았다.

 

 

우여곡절 끝에 다 설치함...

728x90
반응형

'프로그램 > FPGA' 카테고리의 다른 글

Z7-NANO XC7Z010 (7010) SPEC  (0) 2025.04.07
Z7-NANO XC7Z010  (0) 2025.03.24
728x90
반응형

Z7-NANO_Datasheet_Microphase.pdf
1.42MB
Z7-NANO_R21.pdf
0.36MB

 

인터넷에서 찾고 다른 사람에게 받고 한 자료이다.

핀맵은 회로도를 참고 해야 한다.

딱히 스펙이랄게 없다.

 

728x90
반응형

'프로그램 > FPGA' 카테고리의 다른 글

Vivado 설치  (0) 2025.04.22
Z7-NANO XC7Z010  (0) 2025.03.24
728x90
반응형

보낼 명령어를 입력하는 창을 만들자.

TextBox를 위치시키고 속성 창에서 Name는 input_textBox로 변경, Anchor을 Bottom, Left, Right 선택

 

Button을 하나 오른쪽에 위치 시키고 Name을 send_button으로 변경 하자.

 

Anchor을 다음과 같이 Right, Bottom만 선택 하자.

 

Text는 SEND로 변경 해주자. SEND 버튼을 누르면 데이터가 전송 된다.

 

이제 SEND Button을 두번 클릭 하여 코드 창으로 들어가자.

 

아래 화면과 같이 나온다.

 

우선 serial 데이터를 받아서 창에 표시를 해주기 위해 아래처럼 문장 하나를 추가 해주자.

comport.DataReceived += new SerialDataReceivedEventHandler(comport_DataReceived); <= 이것 추가.

쓰레드 충돌을 피해서 데이터를 창에 표시하기 위해 아래와 같이 추가 해주자.

 

send Button까지 모드 코드가 들어가 있다 모두 추가 해주자.

        private void comport_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            this.Invoke(new EventHandler(serial_received)); //쓰레드 충돌을 피하기 위해 Invoke 사용
        }

        private void serial_received(object s, EventArgs e)
        {
            string receivedata = comport.ReadExisting(); //수신된 데이터를 receivedata 버퍼로 읽어오기
            string time = DateTime.Now.ToString("HH:mm:ss.fff");    //현재 시간 만들기.
            display_textbox.AppendText($"RX-{time} : {receivedata}");   //수신 시간과 데이터를 display_textbox에 표시하기.
        }
        private void send_button_Click(object sender, EventArgs e)
        {
            if (comport.IsOpen)
            {
                string inputdata = input_textBox.Text + "\r\n";
                comport.Write(inputdata);   //데이터 보내기
                string time = DateTime.Now.ToString("HH:mm:ss.fff");    //현재 시간 만들기.
                display_textbox.AppendText($"TX-{time} : {inputdata}");   //송신 시간과 데이터를 display_textbox에 표시하기.
                input_textBox.Clear();
            }
        }

 

다음 사진을 보면 TX로 시작 하는것은 보낸 데이터 이고 RX로 시작하는 것은 수신 데이터 이다.

 

 

이상 종료 합니다.

728x90
반응형
728x90
반응형

왼쪽 도구상자에서 TextBox를 가지고 오자.

 

폼에 위치 시킨후 마우스 오른쪽 보튼을 눌러 속성 창을 열어 주자.

 

오른쪽 아래 속성창이 열린것을 확인 할수 있다. 속성창에서 ReadOnly를 찾아서 True로 변경 해주자.

 

다음은 Multiline를 찾아서 True로 변경 해주자.

 

다음은 TextBox크기를 크게 만들어주고 ScrollBars를 Verical로 변경 해주자.

 

TextBox Name을 display_textbox로 변경 하주자.

 

화면을 늘리거나 줄일때에도 변화가 없게 하기 위해 Anchor을 찾아서 오른쪽에 버튼을 누른다.

 

조그만 창이 뜨면 오른쪽 아래처럼 모두다 선택 해주자.

 

실행해서 보면 다음과 같이 나온다.

 

오른쪽 위 최대화를 누르면 다음과 같이 나오는것을 확인 할수 있다.

 

728x90
반응형
728x90
반응형

도구 상자에서 Button 을 하나 가져와서 만든다.

 

아래 화면 처럼 버튼을 위치 시키고 오른쪽 아래 속성창에서 (Name) 항목을 찾아서 open_value로 명칭을 변경하자. 변경 하지 않아도 무관하나 그냥 내가 이해하기 쉬우려고 했다.

 

다음으로는 Text 항목에 가서 Open으로 변경 해줬다. (코드로 변경 해도 무관.)

 

이제 지금까지 만든 Button 위에서 마우스 왼쪽 버튼을 두번 클릭 하자.

 

두번 클릭하면 아래와 같이 코드 창이 열리고 버튼을 클릭 했을때 실행 하는 함수가 나온다.

 

그러면 아래와 같이 코드를 넣어주자.

 

            try
            {
                if (open_button.Text == "Open")
                {
                    comport.PortName = this.Comport_ComboBox.SelectedItem.ToString();   //comport setting
                    comport.BaudRate = int.Parse(this.Baudrate_comboBox.SelectedItem.ToString());   //baudrate setting
                    comport.DataBits = int.Parse(this.Databits_comboBox.SelectedItem.ToString());   //databit setting
                    comport.Parity = (Parity)Enum.Parse(typeof(Parity), Paritybits_comboBox.SelectedItem.ToString());   //paritybits setting
                    comport.StopBits = (StopBits)Enum.Parse(typeof(StopBits), Stopbits_comboBox.SelectedItem.ToString());   //stopbit setting
                    comport.Open(); //comport open
                    open_button.Text = "Close"; //no err시 
                }
                else
                {
                    comport.Close();
                    open_button.Text = "Open";  //text 초기화
                }
            }
            catch
            {
                open_button.Text = "Open";  //text 초기화
                MessageBox.Show("통신에 이상이 있습니다.");
            }

 

위 코드를 붙여 넣고 실행하여 설정을 변경해서 통신 포트를 열거나 닫을수 있게 되었다.

 

시리얼 통신 포트를 USB에 연결하고 프로그램을 실행하면 잡힌 통신 포트가 목록에 추가 되어 있다.

 

 

 

 

 

 

 

 

나머지 사진처럼 통신 포트를 열거나 닫을수 있다.

728x90
반응형
728x90
반응형

어쩌다 보니 Z7-NANO 7010 이라는 키트가 생겨 버렸다..

일거리가 늘어남...

 

이넘을 어디서 부터 어떻게 씹어 먹어야 하나...

 

OS를 해야 한다...

 

728x90
반응형

'프로그램 > FPGA' 카테고리의 다른 글

Vivado 설치  (0) 2025.04.22
Z7-NANO XC7Z010 (7010) SPEC  (0) 2025.04.07
728x90
반응형

단종품 이라고 함.

 

메뉴얼

UM_MC93CV402_V2.00_EN.pdf
2.30MB
UM_MC93CV402_V2.00_KO.pdf
2.56MB

WaveStudio 사용법

WaveStudio_kor_v1.22.pdf
0.99MB

WaveStudio 파일

setup.exe
0.41MB
WaveStudioSetup.msi
4.72MB

Vctrl

readme.txt
0.00MB
vctrl.exe
0.11MB
vctrlw.exe
0.18MB / 0.18MB

 

참고 source

cmd.c
0.01MB
hal.c
0.00MB
hal.h
0.00MB
vcmd.c
0.00MB

728x90
반응형
728x90
반응형

main.c에서 선언된 포트를 직접 변경 해도 되겠지만 기본적으로 선언된 값을 변경하는 방법은 설정에 있다.

CONFIG_BLINK_GPIO 글자를 선택후 F12키를 누른다.

sdkconfig.h라는 파일에 #define  CONFIG_BLINK_GPIO 5라고 선언 되어 진 부분으로 이동할것이다.

여기서 5라는 값을 변경하고 Build를 누르면 변경된 값이 적용이 되는게 아니라 다시 5로 나온다. 즉. 변경이 안된다.

 

F1키를 누른후 Command 창에 menuconfig를 입력하고 선택 하자.

선택한 창이 열리면 Example Configuration 글자를 클릭하면 Blink Gpio number가 나오는데 여기서 변경 하면 변경이 된다.

 

 

728x90
반응형

'프로그램 > ESP32' 카테고리의 다른 글

ESP32.... blink example main에서 main.c 파일 이름 변경법.  (0) 2025.02.24
VS CODE 실행시 이전 작업  (0) 2025.02.24
ESP32 프로젝트 만들기  (0) 2024.05.14
blink 예제 설명  (0) 2023.10.20
ESP32 예제 실행  (1) 2023.10.17
728x90
반응형

 

blink_example_main.c 이름 변경후 CMakeLists.txt 파일에 가서 "blink_example_main.c" 이름도 변경 해줘야함.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'프로그램 > ESP32' 카테고리의 다른 글

ESP32 예제에 선언된 포트 변경법.  (0) 2025.02.24
VS CODE 실행시 이전 작업  (0) 2025.02.24
ESP32 프로젝트 만들기  (0) 2024.05.14
blink 예제 설명  (0) 2023.10.20
ESP32 예제 실행  (1) 2023.10.17
728x90
반응형

왼쪽 아래 Manage 버튼 클릭

셋팅을 클릭

검색창에 restore winows 입력후 Window: Restore Windows (Applies to all profiles) 부분에 all을 None으로 변경후 vs code를 닫았다가 다시 열면 다음과 같이 Project를 불러오지 않음.

 

728x90
반응형

'프로그램 > ESP32' 카테고리의 다른 글

ESP32 예제에 선언된 포트 변경법.  (0) 2025.02.24
ESP32.... blink example main에서 main.c 파일 이름 변경법.  (0) 2025.02.24
ESP32 프로젝트 만들기  (0) 2024.05.14
blink 예제 설명  (0) 2023.10.20
ESP32 예제 실행  (1) 2023.10.17
728x90
반응형

C:/ST/STM32CubeIDE_1.16.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.200.202406191623/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/bin/ld.exe: ./Core/Src/gpio.o:D:/01. JOB/REPEATER/Debug/../Core/Inc/ModbusRTU_Slave.h:17: multiple definition of `ModbusRegister'; ./Core/Src/ModbusRTU_Slave.o:D:/01. JOB/REPEATER/Debug/../Core/Inc/ModbusRTU_Slave.h:17: first defined here

Console 창에 이런 메시지가 떴다.. 해결 방법은 Alt + Enter 를 누르거나 

위 그림처럼 프로젝트 명에서 마우스 오른쪽 버튼을 눌러 Properties를 들어가자.

위 그림처럼 -fcommon을 넣어주고 다시 컴파일 하자.

728x90
반응형

'프로그램 > ST 32Bit' 카테고리의 다른 글

내부 FLASH 읽고 쓰기. 구조체 방법.  (0) 2025.06.19
STM32L MCU 터치 사용  (0) 2024.05.25
터치 인식 조절  (0) 2024.01.02
STM32L072 터치 감도 및 인식 속도 조절  (0) 2023.10.27
728x90
반응형

Visual Studio를 실행한후에 새 프로젝트 만들기를 클릭한다.

 

모든언어에서 C#선택, 모든 플랫폼에서 Windows 선택후 아래로 스크롤 하면 Windows Forms 앱(.NET Framework) 선택후 다음 클릭

 

프로젝트 이름을 넣고 저장 위치를 선택. 솔루션 및 프로젝트를 같은 디렉터리에 배치를 체크 해준다.

 

프로젝트가 만들어지고 다음과 같이 기본 창이 열린다. 도구 상자가 없다. 표시 해주자.

보기에 도구상자를 클릭하면 도구 상자가 나온다. 또는 (Ctrl+Alt+X 를 누르면 된다.)

 

도구 상자가 나왔다. 혹시 도구 상자에 글씨가 없으면 Form창을 클릭 하고 다시 보면 나올것이다.

 

도구 상자가 사라지지 않게 고정하자. 아래 화면에서 처럼 자동 숨기기 버튼을 한번 눌러 고정 할수 있다.

 

여기까지 하면 다음과 같은 창이 열려 있을것이다.

 

이번에는 디자인에 Form1이라는 이름을 변경 해보자. 우선 속성창이 나오게 하자.

1안. Form1 창을 마우스 왼쪽 버튼으로 한번 클릭후 Alt + Enter 키를 누르면 오른쪽 아래 속성창이 뜬다.

 

2안. 오른쪽 솔루션 탐색기에서 Form1.cs를 마우스 오른쪽 버튼을 누른후 속성을 누르면 속성창이 뜬다.

       (화면에 폼에서 마우스 오른쪽 버튼을 눌러도 됨.)

 

오른쪽 아래 만들어진 속성 창에서 아래로 스크롤 하면 Text 글자 옆에 Form1 이라고 있는데 이글씨를 변경하면 바뀐다.

 

아래와 같이 변경되는것을 확인 할수 있다.

 

이번에는 Serial 통신 프로그램 글자 앞에 Icon을 변경 해보자.

 

먼저 인터넷에서 적당한 Icon 파일을 다운 받자.

https://icon-icons.com/

 

Free Icons PNG, ICO, ICNS and SVG

Are you a designer? Share your work with people all over the world. Start upload

icon-icons.com

 

 

위 사이트에 가서 lan 이라고 검색을 해보자. 검색후 아래 아이콘 두개를 다운 받을것이다.

 

 

아이콘을 클릭하면 아래와 같이 나온다. 이창에서 ICO를 선택하고 Download ICO를 클릭 해주자. 다른 하나도 동일하게 다운 로드 해주자.

 

오른쪽 아래 속성창에서 아래로 내리면 Icon 글자가 나올것이다. 아래 화면처럼 글자 옆에 ... 버튼을 눌러주자.

 

창이 열리면 다운 받았던 아이콘 파일을 선택 후 열기 버튼을 눌러주자.

 

앞에 아이콘이 변경 된것을 알수 있다.

 

일반적으로 Serial 통신을 위해서는 설정 해야 하는것이 있다.

통신포트, Baud Rate, Data Bits, Parity Bits, Stop Bits 가 있다.

이것을 설정 할수 있도록 만들어 보자.

 

먼저 통신포트 설정 부분을 해보자.

이제 통신 설정 부분을 진행 하자.왼쪽 도구상자에 보면 ComboBox가 있다. 클릭한후에 오른쪽 폼에 그려 주자.

 

ComboBox를 놓았으면 ComboBox를 한번 클릭후 오른쪽 아래 속성창에서 Text란에 Comport라고 입력 해주자.

그러면 ComboBox안에 Comport라고 나올것이다. 프로그램을 실행 하면 Comport라고 나올것이다. 궁금하면 F5를 눌러 실행 해보자.

 

다음은 ComboBox를 클릭후 오른쪽 아래 속성 창에서 (Name)를 찾아보면 comboBox1 이라고 적혀 있을것이다.

comboBox1은 프로그램시 사용하는 고유 이름이다. 이해하기 쉽게 하기 위해 변경 Comport_ComboBox라고 변경 해주자.

 

다음은 통신 속도 Baud Rate 설정 창을 만들어 보자.

도구상자에서 ComboBox를 클릭하여 위와 같이 동일하게 하나 더 만들어 주자.

만든후 속성창에 Text에는 보통 많이 사용하는 값을 써 놓자.

 

다음 속성창에 (Name)칸에는 Baudrate_comboBox라고 넣어주자.

위와 동일하게 Data Bits, Parity Bits, Stop Bits를 만들어 주자.

(Name)에는Data Bits는 Databits_comboBox, Parity Bits는 Paritybits _comboBox , Stop Bits는 Stopbits_comboBox라고 넣어주자.

위와 같이 임의로 만들었으나 이것이 각각 무엇을 뜻하는지 사용자가 알기 어렵다.

그래서 이름을 붙여주자.

왼쪽 도구 상자에서 Label을 클릭하여 Form에 그려주자.

 

label1 글자를 마우스로 선택후 오른쪽 아래 속성창에 Text 에서 통신 포트로 변경 해보자.

여기까지 되었다면 통신 속도, 데이터, 패리티, 정지 까지 만들기 위해 label을 4개 더 만들고 Text를 변경하여 만들자.

만든후에는 마우스로 해당 개체를 누른후 이동하여 정당한 위치에 놓도록 하자.

F5 키를 눌러 실행해보면 아래와 같이 나오는데 아래에 데이터는 아무것도 없다. 추가 해주어야 한다.

프로그램을 중지 하자. 실행창에 오른쪽 X를 누르거나 Visual Studio 창에 빨간 정지 버튼을 누르거나 Visual Studio 창이 선택 된 상태에서 키보드 Shift + F5키를 눌러 정지 하자.

ComboBox에 데이터를 추가 해주자. 개별적으로 속성 창에서 추가 해주는 방법이 있으나 프로그램에서 추가를 하겠다.

Form을 더블 클릭 해주자.

위에서 마우스로 더블 클릭 하면 아래와 같이 프로그램 창이 열리고 Form1_Load로 이동한다.

 

프로그램에서 아래와 같이 입력하면 통신 속도가 입력이 됨. 

 

통신 포트 만 빼고 데이터, 패리티, 정지를 모두 넣어주자.

 

모두 입력 했다. 복붙을 위해 아래 복사 할수 있게 넣어 놓는다.

 

            Baudrate_comboBox.Items.Clear();        //통신 속도 콤보 박스 데이터 삭제 (안해도 됨)
            Baudrate_comboBox.Items.Add("2400");    //Select Index = 0
            Baudrate_comboBox.Items.Add("4800");    //Select Index = 1
            Baudrate_comboBox.Items.Add("9600");    //Select Index = 2
            Baudrate_comboBox.Items.Add("14400");   //Select Index = 3
            Baudrate_comboBox.Items.Add("19200");   //Select Index = 4
            Baudrate_comboBox.Items.Add("28800");   //Select Index = 5
            Baudrate_comboBox.Items.Add("56000");   //Select Index = 6
            Baudrate_comboBox.Items.Add("57600");   //Select Index = 7
            Baudrate_comboBox.Items.Add("115200");  //Select Index = 8
            Baudrate_comboBox.Items.Add("230400");  //Select Index = 9
            Baudrate_comboBox.SelectedIndex = 8;    //115200 선택, 폼에서 입력 해서 안해줘도 무방함.
            Databits_comboBox.Items.Clear();        //데이터 비트 콤보 박스 데이터 삭제 (안해도 됨)
            Databits_comboBox.Items.Add("5");       //Select Index = 0
            Databits_comboBox.Items.Add("6");       //Select Index = 1
            Databits_comboBox.Items.Add("7");       //Select Index = 2
            Databits_comboBox.Items.Add("8");       //Select Index = 3
            Databits_comboBox.SelectedIndex = 3;    //8bit 선택, 폼에서 입력해서 안해줘도 무방함.
            Paritybits_comboBox.Items.Clear();      //패리티 비트 콤보 박스 데이터 삭제 (안해도 됨)
            Paritybits_comboBox.Items.Add("Even");  //Select Index = 0
            Paritybits_comboBox.Items.Add("Mark");  //Select Index = 1
            Paritybits_comboBox.Items.Add("None");  //Select Index = 2
            Paritybits_comboBox.Items.Add("Odd");   //Select Index = 3
            Paritybits_comboBox.Items.Add("Space"); //Select Index = 4
            Paritybits_comboBox.SelectedIndex = 2;  //None 선택, 폼에서 입력해서 안해줘도 무방함.
            Stopbits_comboBox.Items.Clear();        //스톱 비트 콤보 박스 데이터 삭제 (안해도 됨)
            Stopbits_comboBox.Items.Add("1");       //Select Index = 0
            Stopbits_comboBox.Items.Add("1.5");     //Select Index = 1
            Stopbits_comboBox.Items.Add("2");       //Select Index = 2
            Stopbits_comboBox.SelectedIndex = 0;    //1선택, 폼에서 입력해서 안해줘도 무방함.

 

다음은 통신 포트를 추가 하도록 하겠다.

위에 방법으로 넣을수도 있지만 그렇게 하면 어떤것이 있는것인지 알수 없기에 검색해서 있는것만 표시 하도록 하겠다.

먼저 시리얼 통신을 위해 변수 선언을 해준다. 아래 사진에 위치에 SerialPort comport = new SerialPort(); 를 입력 해준다.

 

위에 입력했던 아래부분에 다음과 같이 입력 해준다.

            foreach (string serial_port_list in System.IO.Ports.SerialPort.GetPortNames())
            {
                try
                {
                    comport.PortName = serial_port_list;
                    comport.Open();
                    if (comport.IsOpen)
                    {
                        this.Comport_ComboBox.Items.Add(serial_port_list);
                        comport.Close();
                    }
                }
                catch { }
            }

 

다음 Comport Serial 장비를 PC에 연결하고 프로그램을 실행 해보자. 아래 그림을 보면 COM4로 장비가 하나 잡혀 있는것을 확인 할수 있다.

728x90
반응형
728x90
반응형

파이썬 프로그래에서는 C처럼 int, double, float등등 변수 구분해서 선언 하지 않음.

자료형에 따라서 자동으로 변수 할당이 됨.


#정수형 자료
print("정수형 자료")
num = 2
print(num)
print(type(num))    #변수 형식 출력

 

출력 :

정수형 자료
2
<class 'int'>


#실수형 자료
print("실수형 자료")
print(10/3)     #나누기 값 출력
print(type(10/3))   #형식 출력
print(10//3)    #나누고 정수만 출력
print(10%3)     #나누고 나머지만 값만 출력

출력 :
실수형 자료
3.3333333333333335
<class 'float'></class 'float'>
3
1


#복소수형 자료
print("복소수형 자료")
a = 1+3j    #실수부 : 1, 허수부 : 3
print (a.real, a.imag)  #실수, 허수 출력
print(type(a))  #a변수 형식 출력

 

출력 :
복소수형 자료
1.0 3.0
<class 'complex'></class 'complex'>

#문자형 자료
print('"Isn\'t, " they said.')
print("'Isn\'t,' they said.")
print("대한민국 \"만세!!!\"")

 

출력 :
"Isn't, " they said.
'Isn't,' they said.
대한민국 "만세!!!"

#문자열 연결하기, 문자열 반복 출력하기
print("대한"+"민국")
print(3*"대한"+"민국")

출력 :
대한민국
대한대한대한민국


#문자열 인덱스
str = "Python"
print(str[0])   #앞에서 첫번째
print(str[2])   #앞에서 세번째
print(str[-1])  #뒤에서 첫번째
print(str[-2])  #뒤에서 두번째

출력 :
P
t
n
o

728x90
반응형

'프로그램 > python' 카테고리의 다른 글

VSCODE에 Python 설치하기.  (0) 2024.06.04
파이썬 다운로드 & 설치  (0) 2024.05.31
728x90
반응형

VSCODE를 실행후 왼쪽에 Extensions를 클릭하자. (마우스 손가락이 있는 부분이다.)

 

검색창에 python이라고 입력하면 여러개가 나온다. 그중 Microsoft에서 발행한 두가지를 설치 하자. 아래 표시를 해놓았다.

 

표시된 부분에서 Install을 눌러 두가지 모두 설치 하자. 위에 Python Install을 누르면 아래 있는 Python Debugger도 같이 설치 될것이다. 만약 안된다면 Install을 눌러 둘다 설치 하자.

 

아래 두가지 모두 설치가 된 화면이다.

 

 

 

설치는 여기까지.

728x90
반응형

'프로그램 > python' 카테고리의 다른 글

파이썬 변수 선언  (0) 2024.06.10
파이썬 다운로드 & 설치  (0) 2024.05.31
728x90
반응형

익스플로러 창 주소에 https://www.python.org/downloads/ 입력. Download Python 클릭.

다운로드한 파이썬 설치 파일 실행 체크박스 2개 설정후 Install Now 클릭

 

완료 되면 Close 클릭

 

설치완료후 윈도우키 + R을 눌러 cmd 입력후 엔턴.

dos창에서 잘 되는지 확인.

 

Ctrl + Z를 누른후 파이썬 빠져 나오고 exit로 dos창 종료 가능함.

그냥 우측 상단 x를 눌러 꺼도 됨.....

728x90
반응형

'프로그램 > python' 카테고리의 다른 글

파이썬 변수 선언  (0) 2024.06.10
VSCODE에 Python 설치하기.  (0) 2024.06.04
728x90
반응형

RealVNC Viewer를 실행한다. 그리고 File => New connection을 클릭 한다.

 

ip 주소를 넣고 이름을 임의로 넣어준다. 그리고 ok 클릭..

 

pi라는 아이콘을 더블클릭해서 접속한다.

 

접속 화면이 나오고 체크가 나올것이다. Contiue를 클릭 해준다.

 

ID와 Password 입력하라고 나오면 넣고 ok 클릭.

 

아래와 같이 연결되어서 바탕 화면이 나온다.

 

 

728x90
반응형
728x90
반응형

익스플로러 창에서 172.30.1.254를 넣고 로그인을 한후에 라즈베리 파이 IP를 확인한다. 난 유선으로 현재 연결 했다.

 

PuTTY를 실행하고 IP 주소를 넣고 엔턴.

 

아래 창이 뜨면 Accept 클릭

ID와 비번을 입력후 Login확인.

 

아래 보면 ip가 두개가 나오는데 위에 것은 유선으로 kt 공유기에 연결한 ip 주소이고 아래는 무선으로 샤오미 ax3000공유기에 무선 연결한 주소이다.

 

 

728x90
반응형

'프로그램 > Raspberry Pi' 카테고리의 다른 글

라즈베리파이 vnc 접속  (0) 2024.05.30
PuTTy로 라즈베리 파이 명령들.  (0) 2024.05.24
VNC Viewer 설치  (0) 2024.05.23
라즈베리파이 무선 연결하기. PuTTY 설치  (0) 2024.05.21
Raspberry Pi OS 설치  (0) 2024.05.20
728x90
반응형

STM32L072를 이용하여 정전식 터치 기능 구현.

회로도는 아래와 같이 구성함.

터치 패드는 다음과 같음. 그냥 동박면에 가스켓을 올려서 사용함.

STM32Cubemx에서 핀을 다음과 같이 설정함.

타이머 3번을 이용하여 1msec 인터럽트를 생성함

 

 

Middleware and Software Packs에 TOUCHSENSING로 들어가서 다음과 같이 설정한다.

IO_TOUCHKEY1 ~ 7 까지 순서는 마음대로...

Config parameters를 다음과 같이 설정하자.

기본적으로 이렇게 구성이 끝났으면 코드를 만들어서 실행하자.

코드 상단에 추가.

타이머 3 Callback 추가하고 안에 다음과 같이 추가 해주자

Main문 안에 USER CODE BEGIN2에 아래 명령어를 넣어서 타이머 3을 인터럽트로 실행 해주자.

1msec에 한번씩 Callback함수가 실행 된다.

 

다음은 버튼 읽어 오는 Function이다.

터치키 감도가 현재 동일하게 설정 되어 있다.

특정 키가 너무 민감 하거나 둔할수 있다. 구글에서 stm studio 검색해서 st 홈페이지에서 stm studio를 다운.

Get Software를 클릭하여 다운받은후 설치하자.

라이센스 창이 뜨면 Accept를 눌러주자

ST에 가입 되어 있다면 Log in을누르고 다운을 받고 안되어 있다면 가입하여 다운을 받자.

다운이 완료 되면 아래 와 같이 압축 파일로 다운된다. 압축을 해제 한후에 설치하자.

압축을 풀면 다음 파일이 나온다. 실행하여 설치 하자.

아래 설치 화면 참고하자.

아래와 같은 창이 뜨면 그냥 예 눌러주자. Java Runtime 설치 하라는 이야기 이다.

아래와 같은 창이 뜨고 익스플로러 창이 하나 열리면서 오라클이 연결 된다. 확인 누르면 창이 닫아짐. Java 먼저 설치 하고 다시 실행 하자.

오라클 창을 내려서 아래쪽에 JRE 8 이 있다. Windows 버전을 선택 하자. 

클릭하면 아래와 같은 창이 뜨는데 체크 해주자.

로그인 또는 가입하여 다운을 받거나 https://www.java.com/ko/download/ 이 주소를 클릭 하여 다운 받자.

다운 후에는 실행 해주자.

아래는 Java 설치 참고 화면 이다.

Java 설치가 완료 되었다. STM studio 다운 받은 파일을 다시 실행 하자.

아래는 다시 STM studio 설치 참고 화면이다.

설치가 완료 되었다.

바탕 화면에 아이콘이 생겼다. 실행 하자.

실행 하면 다음과 같은 창이 열린다.

아래와 같은 창이 열리면 Executable file글씨 오른쪽에 ...을 클릭하자.

이런 창이 열리면 컴파일러에서 컴파일 하면 out 파일이 생성 되는데 그 파일을 선택 해주자.

파일을 선택하고 Select executable file을 클릭하면 아래와 같이 파일을 불러온다. 불러오는데 시간이 좀 걸린다...

다 불러온것이 아니다 아래와 같이 Expand table elements를 선택 해주자. 시간이 조금 걸린다.

그후에 Show symbols containing 옆창에 MyChannels_Data를 넣어주자. 터치 관련 변수가 나온다.

Select all을 클릭 하거나 드래그 하여 모두 선택후 Import를 눌러준다.

선택한것이 모두 포함 되었다. Close를 눌러 Import 창을 닫아주자. 

화면에 표시할 사항을 드레그 및 선택후 마우스 오른쪽 버튼을 클릭하여 Send To > VarViewer1을 클릭 하자. 여기서는 Ctrl키와 마우스 왼쪽 클릭으로 Delta와 Meas 만 선택해주자.

모두 포함되면 아래 화면과 같이 나온다. 

터치 인식 이므로 Display에서 Bar Graph로 안되어 있다면 변경 해보 보는쪽으로 하자.

 

이제 상단바에서 Run > Start를 누르자.

 

실행하면서 실제 버튼을 누르면 위 그래프가 변하는 정도를 알수 있다. 여기서 값을 보면서 기본값과 눌렀을때 차이값을 알아 두도록 한후 프로그램에 적용하자.

728x90
반응형
728x90
반응형

ifconfig 입력하면 다음과 같이 ip 주소가 확인됨.

sudo netstat -lptu 를 입력하여 현재 네트워크 연결 포트 상태를 알수 있다.

 

sudo apt-get install x11vnc xinetd를 입력하고 vnc server 패키지를 설치하자. y를 눌러준다.

 

설치가 완료된 화면.

 

vncserver -geometry 1280x1024를 입력하여 원격으로 볼때 화면 해상도를 설정 할수 있다. => 확인 못함.

 

sudo raspi-config를 입력후 2 Display Option으로 들어간다.

D3 VNC Resolution으로 들어간다.

 

원격으로 화면 볼때 해상도를 설정 할수 있다.

sudo reboot 명령은 재시작 명령임.

 

 

 

728x90
반응형

'프로그램 > Raspberry Pi' 카테고리의 다른 글

라즈베리파이 vnc 접속  (0) 2024.05.30
KT 공유기 통한 라즈베리 파이 접속  (0) 2024.05.28
VNC Viewer 설치  (0) 2024.05.23
라즈베리파이 무선 연결하기. PuTTY 설치  (0) 2024.05.21
Raspberry Pi OS 설치  (0) 2024.05.20
728x90
반응형

구글에서 VNC Viewer를 검색후 다운 받는다.

 

아래 화면을 보면 cookies 동의가 뜰수 있다. ok 눌러주자.

마우스 스크롤을 조금 아래로 내리면 Download RealVNC Viewer 버튼이 나온다 클릭해서 다운 로드 해주자.

 

다운 받은 설치 파일을 실행하자.

설치 파일을 실행 하면 언어 선택이 나오는데 한글은 없다. 그냥 ok 눌러 주자.

Next 클릭.

체크 하고 Next 클릭

Next 클릭

Install 클릭

잠깐동안 설치후 완료 메시지가 뜬다. Finish를 클릭.

시작에 가면 설치 되었다고 아이콘이 새로 생겼다. 다음 사용이 편하게 시작 화면에 고정을 하자.

RealVNC Viewer를 실행하면 다음과 같은 로그인 창도 열린다. 없다면 가입 해주자.

 

728x90
반응형
728x90
반응형

구글 검색창에서 putty 다운로드를 입력하자. 다운로드시 잡다한것이 설치 할것인지 물어보는 경우가 있는데 설치 하지 않도록 주의 하자.

 

다운로드가 완료 되면 다운로드 폴더에 가서 PuTTY_V0.80.msi를 더블 클릭 하여 실행 하자.

파일을 실행하면 아래와 같은 창이 열린다. Next를 눌러 주자.

설치 경로를 물어보는데 기본으로 설치 하자.

 

뭐뭐 설치 할것인지 물어보는데 그냥 기본으로 설치 하자.

 

중간에 빠르게 설치가 되고 아래와 같이 완료 되었다고 창이 뜬다. View README file 체크를 없애고 Finish를 클릭하자. 

 

시작에 가면 최근에 추가한 앱에 아래와 같이 추가 되어 있다.

 

마우스 우측 버튼을 클릭하여 바로가기를 만들어 놓자.

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'프로그램 > Raspberry Pi' 카테고리의 다른 글

라즈베리파이 vnc 접속  (0) 2024.05.30
KT 공유기 통한 라즈베리 파이 접속  (0) 2024.05.28
PuTTy로 라즈베리 파이 명령들.  (0) 2024.05.24
VNC Viewer 설치  (0) 2024.05.23
Raspberry Pi OS 설치  (0) 2024.05.20
728x90
반응형

Micro SD Card Memory 16G에  OS 설치 방법

Raspberry Pi OS – Raspberry Pi 이곳에 들어가서 다운로드를 클릭

다운로드된 imager_1.8.3.exe 를 실행 (오늘자 파일이름임)

이런 창이 열리면 추가 정보를 눌르면 실행 버튼이 생기면 눌러준다.

 

 

 

설치가 완료되면 Micro SD Memory Card를 PC에 연결한다.

방금 설치한 Raspberry Pi Imager를 실행한다.

 

실행하면 다음과 같은 창이 열리는데 여기서 현재 가지고 있는 장치에 맞게 장치선택 운영체제 저장소 선택을 해준다.

저는 라즈베리파이 3를 가지고 있어서 3에 맞게 선택함. SDHC CARD는 SD CARD를 이야기 함.

 

다음을 누르면 아래와 같은 창이 열린다. 설정을 편집하기 눌러주자.

 

일반 창에 hostname과 사용자 이름 및 비밀번호 설정을 해주고 기억 하거나 적어 놓자. 공부 목적이면 hostname은 그냥 기본으로 사용하자.

무선 LAN설정은 현재 보유하고 있는 무선 인터넷 공유기 ID와 비번을 넣어주자. 모두 완료 되면 저장을 누르자.

다시 아래와 같은 창이 열리면 예를 눌러주자.

 

또 아래와 같은 창이 열리면 예를 눌러주자.

 

선택후 다음을 누르면 다음과 같이 쓰기를 시작한다. 시간이 좀 걸린다.........

 

쓰기 끝나면 확인 작업까지 함....

설치가 완료 된 화면임.

 

여기까지가 끝이다. 아래는 예전 방식 으로 해야 했던 부분임으로 확인할 필요 없으나 자료를 남겨둔다.

 

 

 

 

 

 

 

 

 

 

 

 

 

계속을 누르고 Micro SD Memory를 뺐다가 다시 넣어준다. 아래와 같은 창이 뜨면 취소를 클릭 해준다.

 

윈도우 키 + E 키를 눌러 내 PC를 보면 bootfs라는 드라이버가 있다.

 

폴더에 들어가서 폴더 옵션 변경을 클릭한다.

보기 탭으로 이동해서 아래처럼 숨기기 체크를 해제한다. 확인을 누른다.

마우스 오른쪽 버튼을 누른후 새로 만들기로 가서 텍스트 문서를 만든다.

새 텍스트 문서.txt를 마우스 왼쪽 버튼을 한번 눌러 선택 해준후 F2 키를 눌러 SSH라는 이름으로 변경하고 확장자를 없애준다. 아래와 같은 창이 열리면 예를 눌러주면 된다.

또하나에 새 텍스트 문서를 만들어 준다.

 

새 텍스트 문서를 더블 클릭 하여실행 해주자. 비여있는 텍스트 파일에 다음과 같이 넣어주고 저장을 해주자.

 

county=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="wifi 공유기 이름"
psk="wifi 공유기 비밀번호"
scan_ssid=1
}

새 텍스트 문서.txt 파일을 선택한후 마우스 오른쪽 버튼을 클릭하여 이름 wpa_supplicant.conf로 변경해 준다.

 

변경하면 다음과 같이 창이 뜨는데 예를 클릭 하자.

 

이제 sd card를 라즈베리파이에 넣고 전원을 넣어주자.

 

 

 

728x90
반응형
728x90
반응형

VSCODE를 실행하자.

VSCODE 상단 가운데를 클릭 하거나 VSCODE 창 안에 아무곳이나 클릭후 F1키를 눌러도 위와 같이 열린다.

그럼 > 키를 넣으면 다음과 같이 목록이 나온다.

ESP-IDE : New Project를 클릭 하자.

New Project 창이 열리면 임의로 넣어주자.

그리고 Choose Template를 클릭.

espressif.esp-idf-extension-1.7.1 글자 아래 template-app를 클릭 한후 가운데 위에 있는 Create project using template template-app를 클릭 하자.

아래 새로운상에 프로젝트를 실행 할것인지 물어보는데 Yes나 No나 상관은 없다. 그냥 Yes를 눌러 주었다.

새로운 창이 열리고 선택하는 창이 열리는데 Scan for kits를 클릭 해주었다. 

main.cpp를 클릭 하면 화면과 같이 아두이노 방식으로 프로그램이 만들어져 있는것을 확인 할수 있다.

화면 하단에 esp32h2라고 되어 있는데 글씨를 클릭하여 맞도록 수정하자. 앞에 COM포트도 맞지 않으면 수정해주자.

esp32h2 글씨를 클릭하면 상단에 프로젝트를 선택 하라고 나온다 클릭 해준다.

잠시후에 device 선택 창이 나오면 해당 디바이스로 선택 해준다.

다음은 프로그램을 다운로드 및 디버깅을 어떻게 할것인지 물어보는데 JTAG를 선택 해주자.

 


예제로 c6 보드에 다운로드하고 실행한 결과 첨부함.

728x90
반응형

'프로그램 > ESP32' 카테고리의 다른 글

ESP32.... blink example main에서 main.c 파일 이름 변경법.  (0) 2025.02.24
VS CODE 실행시 이전 작업  (0) 2025.02.24
blink 예제 설명  (0) 2023.10.20
ESP32 예제 실행  (1) 2023.10.17
ESP32 VSCODE 설치하기  (1) 2023.10.16
728x90
반응형

 

 

 

TSLPRM_TKEY_DETECT_IN_TH를 110으로

TSLPRM_TKEY_CALIB_TH를 10에서 1로 변경하니 터치 인식이 조금 좋아짐...

 

728x90
반응형
728x90
반응형

인식 속도는 TSLPRM_CALIB_SAMPLES를 8에서 4로 선택해서 좀더 빨라짐

감도는 TSLPRM_TKEY_DETECT_IN_TH와 바로 아래 OUT_TH를 120, 100으로 낮춤

728x90
반응형

'프로그램 > ST 32Bit' 카테고리의 다른 글

내부 FLASH 읽고 쓰기. 구조체 방법.  (0) 2025.06.19
STM32CubeIDE Multiple definition 에러 해결 방법  (0) 2024.11.08
STM32L MCU 터치 사용  (0) 2024.05.25
터치 인식 조절  (0) 2024.01.02
728x90
반응형

vscode를 실행후 blink 예제를 실행한다.

vscode 왼쪽에 EXPLORER 창을 보면 blink_example_main.c 파일을 더블클릭하여 열어준다.

/* Blink Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "led_strip.h"
#include "sdkconfig.h"
//필요 파일들을 포함 시켜 준다.

static const char *TAG = "example";
//프로젝트 이름은 example이다.

/* Use project configuration menu (idf.py menuconfig) to choose the GPIO to blink,
   or you can edit the following line and set a number here.
*/
#define BLINK_GPIO CONFIG_BLINK_GPIO    //blink신호를 주기위한 포트가 몇번인지 셋팅
//CONFIG_BLINK_GPIO에 마우스 왼쪽 버튼을 더블 클릭후 키보드 단축키 F12을 누르면
//선언 된곳으로 이동하여 무엇으로 선언되었는지 확인 할수 있다. 여기서 CONFIG_BLINK_GPIO는 8로 선언 되어 있다.

static uint8_t s_led_state = 0; //LED 상태를 알고 점멸 시키기 우해 static(지워지지 않는) uint8_t (0부터 255까지 정수만 가지는 변수로 선언)
//변수 이름은 s_led_state로 선언하고 초기값은 0으로 한다.

#ifdef CONFIG_BLINK_LED_RMT //#ifdef는 만약 CONFIG_BLINK_LED_RMT가 선언 되어 있으면 프로그램 컴파일시
//아래 #elif CONFIG_BLINK_LED_RMT까지 컴파일 하라는 부분. 여기 예제는 선언 되어 있음.

static led_strip_handle_t led_strip;

static void blink_led(void) //s_led_state 값에 따라 led 변화가 있게 하는 부분
{
    /* If the addressable LED is enabled */
    if (s_led_state) {
        /* Set the LED pixel using RGB from 0 (0%) to 255 (100%) for each color */
        led_strip_set_pixel(led_strip, 0, 16, 16, 16);
        /* Refresh the strip to send data */
        led_strip_refresh(led_strip);
    } else {
        /* Set all LED off to clear all pixels */
        led_strip_clear(led_strip);
    }
}

static void configure_led(void) //led가 연결된 포트 셋팅
{
    ESP_LOGI(TAG, "Example configured to blink addressable LED!");
    /* LED strip initialization with the GPIO and pixels number*/
    led_strip_config_t strip_config = {
        .strip_gpio_num = BLINK_GPIO,
        .max_leds = 1, // at least one LED on board
    };
    led_strip_rmt_config_t rmt_config = {
        .resolution_hz = 10 * 1000 * 1000, // 10MHz
    };
    ESP_ERROR_CHECK(led_strip_new_rmt_device(&strip_config, &rmt_config, &led_strip));
    /* Set all LED off to clear all pixels */
    led_strip_clear(led_strip);
}

#elif CONFIG_BLINK_LED_GPIO //#elif는 c언어에서 else if를 뜻함. CONFIG_BLINK_LED_GPIO가 선언 되어 있으면 #endif까지 컴파일에 포함 하라는 이야기임.
//여기 예제는 선언 안되어 있어서 아래는 컴파일 안하고 포함 안됨.

static void blink_led(void)
{
    /* Set the GPIO level according to the state (LOW or HIGH)*/
    gpio_set_level(BLINK_GPIO, s_led_state);    //BLINK_GPIO로 할당된 포트를 s_led_state 변수게 값이 0이면 0을 내보내고 1이면 1을 내보내게 하는부분.
}

static void configure_led(void)
{
    ESP_LOGI(TAG, "Example configured to blink GPIO LED!"); //출력창에 Example configured to blink GPIO LED! 문자를 출력.
    gpio_reset_pin(BLINK_GPIO); //BLINK_GPIO(8) 핀을 LOW로 리셋시키는 부분.
    /* Set the GPIO as a push/pull output */
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);   //BLINK_GPIO(8) 핀을 그냥 출력 핀으로 설정함.

}

#endif

void app_main(void)
{

    /* Configure the peripheral according to the LED type */
    configure_led();    //led제어를 위해 포트를 셋팅 하는 부분

    while (1) {
        ESP_LOGI(TAG, "Turning the LED %s!", s_led_state == true ? "ON" : "OFF");   //현재 LED상태값을 PC 모니터로 출력하는 부분
        blink_led();    //여기서 s_led_state 값에 따른 출력을 내보내주는 펑션을 불러오는 부분.
        /* Toggle the LED state */
        s_led_state = !s_led_state; //s_led_state 값이 16진수로 0x00이면 0Xff로 반전 하는 부분
        vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS);   //led가 동작 하는것을 확인하기 위해 지연 시간을 준다.
        //이게 없으면 계속 켜져 있는것처럼 보이고 컴퓨터 디버깅 창에도 메시지가 계속 나온다.
    }
}

필요하면 확인하세요.

728x90
반응형

'프로그램 > ESP32' 카테고리의 다른 글

VS CODE 실행시 이전 작업  (0) 2025.02.24
ESP32 프로젝트 만들기  (0) 2024.05.14
ESP32 예제 실행  (1) 2023.10.17
ESP32 VSCODE 설치하기  (1) 2023.10.16
ESP32-C6 도착  (0) 2023.10.10
728x90
반응형

VSCODE를 실행

F1키를 눌러서 ESP EXAMPLE 이라고 키보드를 누르면 ESP-IDF: Show Examples Projects 라는 글씨를 클릭.

어디 있는것을 사용할지 선택하는 경로가 나오는데 보통 하나 나올것임.

경로 한번더 클릭

 

ESP-IDF Examples 창이 뜨면서 왼쪽에 여러 예제가 나온다.

우선 blink 예제를 실행해 보자.

왼쪽 get-started 밑에 blink 글씨를 클릭하면 오른쪽에 어떤것이 지원 되는지와 동작 설명이 나와 있다.

오른쪽 창을 스크롤하여 내리면 예제 출력이 어떻게 나오는지 나와 있다. 직접 해보고 맞게 나오는지 확인 해보겠다.

오른쪽 창 스크롤을 위로 올려서 위에 있는 Create project using example blink 글자를 누르자.

프로젝트를 어디에 생성할지 경로를 선택 하라고 창이 뜬다.

나는 D:\ESP32\c6 폴더를 들어간후 폴더 선택을 눌러주었다.

새로운 창이 열리고 blink라는 프로젝트가 불러졌다.

main에 blink_example_main.c 파일을 클릭하여 열어보자.

어떻게 동작 하는지는 여기에서 프로그램을 작성 하면 된다.

우선 예제를 실행 해보자.

위 그림에서 컴파일 버튼을 누르자. 컴파일 하는데 시간이 좀 걸린다. 에러가 없이 컴파일 되는것을 확인하자.

에러가 없이 끝나면 용량값이 마지막에는 나온다.

이상이 없는것을 확인 했으니 모델선택을 눌러 모델을 맞춰주자.

마우스로 화면 하단에 모델을 누르면 화면 상단에 프로젝트 이름이 나온다. 클릭 해주자.

약간에 시간이 지나면 서버와 통신후에 모델이 무엇인지 선택 하라고 상단에 뜬다.

필자는 esp32-c6을 현재 사용해보고 있으므로 esp32c6을 클릭 한다.

다음으로는 다운로드를 어떻게 할것인지 물어본다.

 

 

USB Bridge를 선택 해주자.

다음으로는 프로그램을 업로드할 포트를 선택 하자.

COM1을 클릭 하면 현재 ESP32가 USB에 연결 되어 있다면 COM 몇번에 연결 되어 있는지 바로 나온다.

ESP32가 연결된 COMPort를 선택 해주자. 그러면 바로 프로젝트를 어떤것을 올릴것인지 물어보는데 프로젝트 이름인 blink를 선택 하자.

이번에는 프로그램 업로드 버튼을 클릭해 보자.

클릭하면 어떤 방식으로 업로드 할것인지 물어본다.

여기서 UART를 클릭 해주자.

그러면 업로딩이 되고 LED가 깜빡이는것을 확인 할수 있을것이다.

모니터링 버튼을 눌러보자.

보면 프로젝트를 처음에 만들기전에 설명에 나온데로 출력이 나오는것을 확인 할수 있다.

 

 

 

 

 

 

728x90
반응형

'프로그램 > ESP32' 카테고리의 다른 글

VS CODE 실행시 이전 작업  (0) 2025.02.24
ESP32 프로젝트 만들기  (0) 2024.05.14
blink 예제 설명  (0) 2023.10.20
ESP32 VSCODE 설치하기  (1) 2023.10.16
ESP32-C6 도착  (0) 2023.10.10
728x90
반응형

ESP32를 좀 쉽게 코딩하기 위해서는 Visual studio code가 필요 하다.

Download Visual Studio Code - Mac, Linux, Windows

 

Download Visual Studio Code - Mac, Linux, Windows

Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.

code.visualstudio.com

위 링크에서 해당 운영체제에 맞는 버튼을 클릭하여 다운로드 해주고 설치를 한다.

설치 완료후 VSCODE를 실행한다.

VSCODE 창에서 Ctrl + shift + x를 누르거나

왼쪽에 

이 아이콘을 클릭후 Espressif 를 입력하면

 

 

아래 그림이 나오면 Install 클릭하여 설치를 눌러준다.

 

24년 11월 25일 다시 설치 하니 위와 같이 변경 되었네요.....

 

 

 

 

 

프로그램 설치가 완료되면 F1 키를 눌러서 esp confi 라고 치면 다음과 같은 글이 나온다.

ESP-IDF : Configure ESP-IDF extension을 선택하여 클릭을 한다.

 

위와 같은 창이 열리는데 여기서 EXPRESS를 클릭하자.

다음 창이 열리면 download server는 Espressif나 Git이나 상관 없으나 Espressif를 선택해주고 Show all ESP-IDF tags를 체크 해주자.

버전은 v5.1.1로 설정하고 프로그램 설치 파일은 편한대로 설치 하자.

나같은 경우는 D드라이브에 ESP32라는 폴더를 만들고 그곳에  넣었다.

설정이 모두 완료 했으면 Install을 눌러 프로그램 설치.

설치 하는데 시간이 좀 걸린다.

설치가 완료 되었으면 이제 본격적인 프로그램을 하기위한 준비가 완료 되었다.

 

 

 

728x90
반응형

'프로그램 > ESP32' 카테고리의 다른 글

VS CODE 실행시 이전 작업  (0) 2025.02.24
ESP32 프로젝트 만들기  (0) 2024.05.14
blink 예제 설명  (0) 2023.10.20
ESP32 예제 실행  (1) 2023.10.17
ESP32-C6 도착  (0) 2023.10.10
728x90
반응형

ESP32를 해보고 싶어서 ESP32-C6을 구매 해보았다.

https://vctec.co.kr/product/esp32-c6-devkitc-1-n8-%EB%B3%B4%EB%93%9C-8mb-spi-%ED%94%8C%EB%9E%98%EC%89%AC-esp32-c6-devkitc-1-n8-8mb-spi-fla/21579/category/69/display/1/

 

ESP32-C6-DevKitC-1-N8 보드 -8MB SPI 플래쉬 (ESP32-C6-DevKitC-1-N8 - 8MB SPI Flash) - 가치창조기술

상품결제정보 결제는 신용카드, 실시간 계좌이체, 무통장 입금 등을 선택하여 진행하실 수 있습니다. 세금계산서 발행을 요청하실 경우에는 결제방법을 무통장 입금으로 선택하시고 사업자등

vctec.co.kr

알리에서 구매 할까 하다 가치창조기술 홈페이지에서 구매를 했다.

물품가는 20000원이 조금 안된다.

제품은 플라스틱 케이스에 안전하게 도착 했다.

728x90
반응형

'프로그램 > ESP32' 카테고리의 다른 글

VS CODE 실행시 이전 작업  (0) 2025.02.24
ESP32 프로젝트 만들기  (0) 2024.05.14
blink 예제 설명  (0) 2023.10.20
ESP32 예제 실행  (1) 2023.10.17
ESP32 VSCODE 설치하기  (1) 2023.10.16

+ Recent posts