embeded/rpi pico2025. 8. 2. 15:57

조이스틱인데 이걸 이용해 빨콩을 만들어 봄

divider와 막판에 세제곱 하는걸 어떻게 건드리면

적절하게 최소 움직임과 빠른 움직임을 잡을수 있을 것 같은데 좋은 아이디어가 안나네..

 

 

import board
import digitalio
import analogio
import time
import usb_hid
from adafruit_hid.mouse import Mouse

adc_x = analogio.AnalogIn(board.A0)
adc_y = analogio.AnalogIn(board.A1)

click = digitalio.DigitalInOut(board.GP22)
click.direction = digitalio.Direction.INPUT
click.pull = digitalio.Pull.UP

mouse = Mouse(usb_hid.devices)

divider = 256 * 16
thres = 0 # degree
last_btn = True

calib_x = 0;
calib_y = 0;

for i in range(10):
    calib_x += adc_x.value
    calib_y += adc_y.value
    
calib_x = int(calib_x / 10)
calib_y = int(calib_y / 10)

thres_x = int(calib_x * thres / 90)
thres_y = int(calib_y * thres / 90)

print("calib : ",calib_x,",",calib_y)
print("thres : ",thres_x,",",thres_y)

while True:
#    print(adc_x.value,",",adc_y.value," ",click.value)

    if(last_btn != click.value):
        last_btn = click.value
        if last_btn is False:
            mouse.press(Mouse.LEFT_BUTTON)
            time.sleep(0.2)  # Debounce delay
        else:
            mouse.release(Mouse.LEFT_BUTTON)
            time.sleep(0.2)  # Debounce delay
    
    if adc_x.value > calib_x + thres_x:
        step = int(((adc_x.value - (calib_x + thres_x))) / divider)
        if abs(step) > 0:
            mouse.move(x = step * step * step);
        
    if adc_x.value < calib_x - thres_x:
        step = int(((adc_x.value - (calib_x - thres_x))) / divider)
        if abs(step) > 0:
            mouse.move(x = (step * step * step));

    if adc_y.value > calib_y + thres_y:
        step = int(((adc_y.value - (calib_y + thres_y))) / divider)
        if abs(step) > 0:
            mouse.move(y = step * step * step);
        
    if adc_y.value < calib_y - thres_y:
        step = int(((adc_y.value - (calib_y - thres_y))) / divider)
        if abs(step) > 0:
            mouse.move(y = (step * step * step));

 

일단은 내가 구매한 녀석이 이상해서, Y 축에 대해 점퍼를 날려주어야 정상적으로 값이 변화된다.

2025.08.02 - [잡동사니] - HW-504 이상해..

[링크 : http://chipgu.ru/viewtopic.php?t=3764&start=100]

 

요건 adafruit usb mouse 라이브러리 설명

[링크 : https://learn.adafruit.com/circuitpython-essentials/circuitpython-hid-keyboard-and-mouse]

'embeded > rpi pico' 카테고리의 다른 글

rpi pico circuit python 에서 code 실행하기  (0) 2025.08.02
rpi pico sdk  (0) 2025.03.23
rpi pico usb joystick  (0) 2024.10.07
pico real plus 윈도우에 연결하기  (0) 2024.07.31
pico real plus for U+ 구매  (0) 2024.07.28
Posted by 구차니
embeded/arduino(genuino)2025. 8. 2. 14:58

머지? 왜 Y축은 전원이 연결이 안되서

가변저항 값은 맞는데 ADC에서 읽히지 않게 되어 있는걸까?

그래서 싸게 파는건가...?

 

새로 뜯으면 이렇게 생겨먹었는데 R5의 땜이 없는 곳이 X 축 저항 한쪽에 VCC와 연결되어 있다.

R5의 땜이 있는 곳은 GND와 Y축 가변저항의 상단 단자와 연결되어 있어서

이걸 쇼트 시키면 VCC - GND 쇼트되어버려서 쓸 수 없다.

 

그런 이유로 속편하게(?) VCC - Y 축 가변저항에 바로 점퍼를 연결!

 

'embeded > arduino(genuino)' 카테고리의 다른 글

ads1115 복수 장치 읽기  (0) 2025.08.02
패시브 부저  (0) 2025.08.01
nRF24L01 복수 장치 통신  (0) 2025.07.29
오랫만에 부품지름  (0) 2025.07.29
1.8인치 TFT LCD with SDcard  (0) 2024.10.18
Posted by 구차니
embeded/rpi pico2025. 8. 2. 12:21

무지성으로 code.py를 import로 불러오니 바로 실행된다.

 

import code

[링크 : https://zephyrus1111.tistory.com/161]

'embeded > rpi pico' 카테고리의 다른 글

rpi pico, circuit python, HW-504를 이용하여 빨콩 만들기  (0) 2025.08.02
rpi pico sdk  (0) 2025.03.23
rpi pico usb joystick  (0) 2024.10.07
pico real plus 윈도우에 연결하기  (0) 2024.07.31
pico real plus for U+ 구매  (0) 2024.07.28
Posted by 구차니
embeded/arduino(genuino)2025. 8. 2. 09:39

아.. 여러개 사서 해볼걸 ㅠㅠ

 

 

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

'embeded > arduino(genuino)' 카테고리의 다른 글

HW-504 이상해..  (0) 2025.08.02
패시브 부저  (0) 2025.08.01
nRF24L01 복수 장치 통신  (0) 2025.07.29
오랫만에 부품지름  (0) 2025.07.29
1.8인치 TFT LCD with SDcard  (0) 2024.10.18
Posted by 구차니
embeded/arduino(genuino)2025. 8. 1. 23:29

테스트 해보니

waveform generator로 생성한 것 대로 음이 바뀐다.

다만 볼륨은 duty로 바뀌지 않고 음색이 바뀌는 느낌 혹은 주파수 변화라고 해야하나...

 

[링크 : http://itempage3.auction.co.kr/DetailView.aspx?ItemNo=C441109005&frm3=V2]

 

의외로 주파수가 좁다?

그리고 작동이 3~5V 라는데 1V 해서 소리가 났다는게 함정(작지만)

SKU: MDU1126
Brief Data:
 Oscillation Frequency: 1500~2500Hz.
 Connector Pitch: 2.54mm.
 Operation Voltage: 3~5V.
 Color: Black.
 Operating Temperature: -20 ~ +70°C.
 Dimension (L x W): 1.85 x 1.5 cm.

[링크 : https://www.handsontec.com/dataspecs/module/passive%20buzzer.pdf]

'embeded > arduino(genuino)' 카테고리의 다른 글

HW-504 이상해..  (0) 2025.08.02
ads1115 복수 장치 읽기  (0) 2025.08.02
nRF24L01 복수 장치 통신  (0) 2025.07.29
오랫만에 부품지름  (0) 2025.07.29
1.8인치 TFT LCD with SDcard  (0) 2024.10.18
Posted by 구차니
embeded/i.mx 8m plus2025. 7. 31. 17:51

설치하고 실행하는데 패키지가 부족한지 에러가 발생

그런데 에러가 매번 동일한건 함정.. -_-


콘솔 실행

/opt/nxp/eIQ_Toolkit_v1.8.0/bin/eiqenv.sh
/opt/nxp/eIQ_Toolkit_v1.8.0/eiq-portal

[링크 : https://community.nxp.com/t5/eIQ-Machine-Learning-Software/eIQ-Toolkit-Ubuntu-Installation/td-p/1727046]

 

이런 에러가 나서 두 개 패키지 설치해주고 해결되었다.

ubuntu 22.04.5 LTS 기준

 

$ sudo apt-cache search libffi
libffi7 - 외부 함수 인터페이스 라이브러리 런타임

 

libssl이 3.0대로 올라가면서 하위호환 문제가 발생한거로 보임

$ wget https://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.24_amd64.deb
$ sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.24_amd64.deb

[링크 : https://stackoverflow.com/questions/72133316/libssl-so-1-1-cannot-open-shared-object-file-no-such-file-or-directory]

 

실행 성공!

 

쓰는법은 이제 봐야함

[링크 : https://docs.nxp.com/bundle/EIQTUG/page/topics/introduction.html]

'embeded > i.mx 8m plus' 카테고리의 다른 글

nxp g2d_blit  (0) 2025.04.01
sounddevice on arm i.mx8 evk  (0) 2024.05.14
NXP i.mx8mp LF_v6.1.55-2.2.0 테스트  (0) 2023.12.21
missed: not vectorized: relevant stmt not supported:  (0) 2023.08.31
nxp i.mx8mp win iot part 2  (0) 2023.05.26
Posted by 구차니
embeded/Cortex-M3 STM2025. 7. 29. 17:51

X-CUBE-EEPROM 이 stm32f103 프로젝트에서 안보여서 찾아보는데

어...라... 왜 F만 빠져있냐 =_=

[링크 : https://www.st.com/resource/en/application_note/an4894-how-to-use-eeprom-emulation-on-stm32-mcus-stmicroelectronics.pdf]
[링크 : https://www.st.com/en/embedded-software/x-cube-eeprom.html]

[링크 : https://m.blog.naver.com/chcbaram/223153496808] << STM32G

 

STM32C0 series, STM32G0 series, STM32G4 series, STM32H5 series, STM32L4 series, STM32L4+ series, STM32L5 series, STM32U0 series, STM32U3 series, STM32U5 series, STM32WB series, STM32WL series

Reference documents
EEPROM emulation solutions and application notes are available for other STM32 series as listed below.
[1] Application note STM32F0 series EEPROM emulation in STM32F0xx microcontrollers (AN4061)
[2] Application note STM32F1 series EEPROM emulation in STM32F10x microcontrollers (AN2594)
[3] Application note STM32F2 series EEPROM emulation in STM32F2xx microcontrollers (AN3390)
[4] Application note STM32F3 series EEPROM emulation in STM32F30x/STM32F31x STM32F37x/STM32F38x
microcontrollers (AN4056)
[5] Application note STM32F4 series EEPROM emulation in STM32F40x/STM32F41x microcontrollers (AN3969)
[6] Application note Building wireless applications with STM32WB series microcontrollers (AN5289)
[7] Reference manual STM32H563/H573 and STM32H562 Arm®-based 32-bit MCUs (RM0481)







● eeprom.c: it contains C code for the following project routines:
EE_Init()
EE_Format()
EE_FindValidPage()
EE_VerifyPageFullWriteVariable()
EE_ReadVariable()
EE_PageTransfer()
EE_WriteVariable()
● eeprom.h: it contains the routine prototypes and some declarations

[링크 : https://www.st.com/resource/en/application_note/an2594-eeprom-emulation-in-stm32f10x-microcontrollers-stmicroelectronics.pdf]

 

가입 후 아래 링크에서 다운로드 받아야 사용할 수 있나 보다.

대충 봐서는 2개의 섹터를 오가면서 write 하는 듯. wear leveling 등은 구현이 안되어 있을 것 같네

[링크 : https://www.st.com/en/embedded-software/stsw-stm32010.html]

 

 

 

 

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32f103ret flash program / erase 테스트  (1) 2025.07.28
HAL_FLASH_Program  (0) 2025.07.21
stm32cubeide build analyzer  (0) 2025.07.21
stm32 wwdg, iwdg 차이  (0) 2025.06.30
stm32f wwdg iwdg 그리고 stop mode  (0) 2025.06.27
Posted by 구차니
embeded/arduino(genuino)2025. 7. 29. 11:46

multiple slave 모드라는걸 지원해서, 1:6 까지 뿌릴수 있다고 한다.

 

[링크 : https://arduinomaker.tistory.com/38]

[링크 : https://blog.naver.com/mapes_khkim/221882273978]

 

Key Features
• Worldwide 2.4GHz ISM band operation
• Up to 2Mbps on air data rate
• Ultra low power operation
• 11.3mA TX at 0dBm output power
• 12.3mA RX at 2Mbps air data rate
• 900nA in power down
• 22µA in standby-I
• On chip voltage regulator
• 1.9 to 3.6V supply range
• Enhanced ShockBurst™
• Automatic packet handling
• Auto packet transaction handling
• 6 data pipe MultiCeiver™
• Air compatible with nRF2401A, 02, E1 and E2
• Low cost BOM
• ±60ppm 16MHz crystal
• 5V tolerant inputs
• Compact 20-pin 4x4mm QFN package


[링크 : https://cdn.sparkfun.com/datasheets/Wireless/Nordic/nRF24L01_Product_Specification_v2_0.pdf]

'embeded > arduino(genuino)' 카테고리의 다른 글

ads1115 복수 장치 읽기  (0) 2025.08.02
패시브 부저  (0) 2025.08.01
오랫만에 부품지름  (0) 2025.07.29
1.8인치 TFT LCD with SDcard  (0) 2024.10.18
아두이노 FFB 휠 소스코드  (2) 2024.10.11
Posted by 구차니
embeded/arduino(genuino)2025. 7. 29. 11:13

아니 쓰지도 못하고 재워두는거 왜 사는지 나도 이해가 안되지만 일단 지름 ㅋㅋㅋ

nRF24는 있어서 사려다가 패스

 

'embeded > arduino(genuino)' 카테고리의 다른 글

패시브 부저  (0) 2025.08.01
nRF24L01 복수 장치 통신  (0) 2025.07.29
1.8인치 TFT LCD with SDcard  (0) 2024.10.18
아두이노 FFB 휠 소스코드  (2) 2024.10.11
arducam esp8266 https post 예제  (0) 2024.01.31
Posted by 구차니
embeded/Cortex-M3 STM2025. 7. 28. 15:12

몇개 참조했는데 그냥 결국에는 맨땅에 헤딩해서 대충 구현.. -_ㅠ

[링크 : https://blog.naver.com/eziya76/220988141146]

 

1. HAL_Flash_Program() 호출 전에 해당 섹터는 HAL_FlashEx_Erase()를 불러서 지워져 있는 상태여야 함

STM32Cubeprogrammer로 보면 전부 0xFFFFFF 라서 그냥 바로 쓰면 되겠네? 싶어서

HAL_Flash_Unlock() 이후 바로  HAL_Flash_Program() 호출해서 쓰니 Hard Fault 발생 -_-

찾아봐도 별 도움되는건 없어서, 결국에는 지우고 새로 쓰니 문제 없이 되었는데

[링크 : https://community.st.com/t5/stm32-mcus-products/hal-flash-program-triggers-hardfault-exception/td-p/684669]

 

다시 안지우고 쓰려고 하면 아까처럼 hard fault는 안뜨고

HAL_Flash_Program() 의 리턴값이 HAL_ERROR(1)로 뜰 뿐 문제가 없다. 머지?

 

 

아래는 쓰는데 성공한 예제

 

2. 섹터 지우는건 빠른데, 쓰는건 느리다(word)

아래 코드에서 32MHz로 작동중인데,

Erase는 2msec 이내로 끝났고

Write는 2048 Byte, 1 섹터를 가득 채우는건데 65 msec 미만으로 소요되었다.

tick1 1
tick2 64

 

3. 16bit 32bit write 속도가 다르다.

함수 호출 횟수 차이인진 모르겠으나 WORD 에서 HALFWORD로 바꾸고 쓰기 횟수를 2배로 늘려주니

    ret = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, addr, data);


무려(?) 3msec가 느려졌다.

tick1 1
tick2 67

 

3. HAL_FLASH_Unlock() / HAL_FLASH_Lock()

플래시를 unlock 하지 않고 erase / program 하면 실제로 써지거나 지워지지 않지만 HAL_OK로 리턴된다.

이게 머야 -_-

 

소스코드

void flash_test()
{
  HAL_StatusTypeDef ret;
  uint32_t addr = FLASH_BASE + 0x0007F800;
  int data = 0;

  HAL_FLASH_Unlock();

  FLASH_EraseInitTypeDef eraseDef;
eraseDef.TypeErase = FLASH_TYPEERASE_PAGES;
eraseDef.Banks = 1;
eraseDef.PageAddress = 0x807F800;
eraseDef.NbPages = 1;

  uint32_t ret_era = 0;
  uint32_t tick = HAL_GetTick();
  HAL_FLASHEx_Erase(&eraseDef, &ret_era);
  uint32_t tick2 = HAL_GetTick();

  printf("tick1 %d\r\n",tick2-tick);

  tick = HAL_GetTick();
  for(int idx = 0; idx < 512; idx++)
  {
    ret = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addr, data);
    if(ret != HAL_OK)
    {
      printf("ret[%x]\r\n", ret);
      break;
    }
    // else
    // {
    //   printf("%X [%X] ok\r\n", FLASH_BASE + addr * 4, data);
    // }

    addr += 4;
    data += 4;
  }
  tick2 = HAL_GetTick();
  printf("tick2 %d\r\n",tick2-tick);

  HAL_FLASH_Lock();
}

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 eeprom emulation  (1) 2025.07.29
HAL_FLASH_Program  (0) 2025.07.21
stm32cubeide build analyzer  (0) 2025.07.21
stm32 wwdg, iwdg 차이  (0) 2025.06.30
stm32f wwdg iwdg 그리고 stop mode  (0) 2025.06.27
Posted by 구차니