이 부분은 어렵지는 않지만 자료들이 많이 산재해 있어 정리가 필요한 부분이다.
또한 설명 자료는 있으나 공개된 샘플 소스코드는 없습니다. 요게 문제입니다. 특히 STM32 거의 없습니다.
ESP32쪽은 그나마 있는거 같습니다.
진행은 정리를 해가면서 하겠습니다. 다소 시간이 걸리더라도...
일단 제가 실습하고 터득한 소스코드 올립니다.
나머지 작업할 것은 상기 파일을 클레스로 만들어 라이브러리화 하는겁니다.
이 부분은 시간상 못 했고요... 수업 진행하면서 해 보도록 하겠습니다.
언뜻 제시된 문서만 보고서 프로그램 하기에는 삽질이 조금 필요하다. 자 도한 삽질 열심히 했죠....
이유는 제시된 문서가 명확치 않고 샘플 소스코드도 구하기 어렵고, 공개도 안 되어 잇다는 겁니다.
저는 여기서 첫번째로 막히고 삽질했고, 그디음 GPIO PORT 방식으로 제어하는데서 또 막히어 삽질했고,
그 다음은 라이브러리를 생성하여 불러오는데에서 막혀 삽질 했습니다. 여기까지 오는데 총 3번에 삽질을 했네요..
이유는 자료가 불충븐합니다. 특히 STM32 는요... ESP32나 피코2040Board, Arduino IF 보드쪽은 그나마 자료가
많고 공개도 잘 되어잇는데... STM32 쪽은 자료도 많지않고 공개도 안 되어 처음 공부할때는 삽질을 하게 됩니다.
그래도 여러분들은 걱정마세요... 제가 이미 다 경험하여 본 카페에 공개합니다.
제가 제시한대로 하시면 단시간안에 주파 하실겁니다...
핀 설정 방법은 다음과 같이 총 5개정도 있다 == 여기에 디버그 핀 활성화 까지하면 총 6개다
요약하면 다음 순서에 따라 핀 기능이 핀 번호에 매핑되는 방식이 결정된다.
1. 핀 객체를 직접 지정 = 우린 주로 이 방식을 적용할 거 같음
2. 사용자 제공 맵핑기능 = CSV 파일 참고
3. 사용자 제공 맵핑(객체를 딕셔러리 자료형으로 키로 사용할 수 있어야 함)
4. 보드 핀과 일치하는 문자열 제공
5. CPU Port / Pin과 일치하는 문자열 제공
6. 핀 디버그 기능 활성화 기능
먼 말인지 도통 모르겠다....
그러면 직접 소스코드 레벨에서 살펴보기로 하자 아무래도 직접 해보는게 최고다.
핀 기능 및 매핑은 pins.CSV 엑셀파일로 제공된다. 엘셀로 열어볼수 있다.
다음 디렉토리에 있다.
D:\song\2024\Micro_Pytnon\micropython-1.22.2\micropython-1.22.2\ports\stm32\boards\NUCLEO_L152RE
혹시몰라 파일을 첨부한다.
Pin 에 대한 설명은 많이 공부해야 됩니다. 같은 함수라해도 응용 범위에 따라서 기능이 다르게 수행합니다.
GPIO PIN만 설정하는게 아니라 내장된 다른 기능(AF, 대체기능) 설정할때도 똑 같이 이 클래스를 사용하여 Pin기능을 설정합니다.
가령 PA5를 일반 GPIO 가 아니라 TIM2 클럭입력이나 PWM 출력으로 사용할 경우 설정 예
pwm_out1 = pyb.Pin("PA5", mode=pyb.Pin.ALT, alt=pyb.Pin.AF1_TIM2)
또는 pwm_out1 = pyb.Pin("PA5", mode=pyb.Pin.ALT, alt=1)
요런식으로 설정합니다. 참고로 alt = -1 은 일반 GPIO인거 같습니다.
그래서 많은 연구가 필요합니다.
제가 제공하는 소스 코드는 현재까지 제가 실제로 돌려보면서 동작하는건만 모았습니다.
샘플 소스 코드가 많지가 않아 어떤식으로 함수을 응용하여 사용해할지 명확하게 나와있지 읺습니다.
그나마 제대로 동작하는 것만 모아서 제가 Test한 소스코드를 올립니다.
또한 아래 링크 주소를 추천드립니다. Micro Python 레퍼런스 Pin 입니다. = 제가 주로보고 공부한 링크입니다.
바로 아래거 아주좋음
https://docs.openmv.io/library/machine.Pin.html
https://docs.micropython.org/en/v1.8.6/pyboard/genindex.html
https://docs.openmv.io/library/pyb.Pin.html
https://wiki.analog.com/resources/tools-software/sharc-audio-module/micropython/peripherals
https://github.com/micropython/micropython/blob/master/docs/library/pyb.Pin.rst
https://www.waveshare.com/wiki/%E3%80%90MicroPython%E3%80%91_Machine.Pin_Functions
https://micropython-lego-ri5.readthedocs.io/en/latest/library/machine.Pin.html
혹시 여러분들도 공부하시어 터득하시거 있으시면 같이 올려주세요
서로 같이 연구해서 벌전시켜 봐요