프로젝트와 관련된 전반적인 내용은 Repository 내부 ppt 파일을 확인해주시기 바랍니다.
- pixy library의 사용 불가시 솔루션 제시
- 하드웨어 기기 주변 환경 고려, 특정 색 추적 이후 다음 차순위 태스크를 수행하는 마이너한 수준의 알고리즘 개발 지향
- PIXY 카메라, 초음파 센서(HR-SR04), Atmega128 MCU, Arduino board 등...
- Avrdude
- 본래 아두이노의 마이크로프로세서는 avr계열이므로, 코드 업로드를 위해 해당 라이브러리가 필요.
- 단, 업로드 이전에 usbasp를 통한 부트로더 업로드가 선행되어야 할 것.
- Megacore
Atmega128은 기본적으로 아두이노 라이브러리와 호환되지 않음. (추측으로는 아마 아두이노가 16비트를 표준으로 사용하고, 비트스트림이 맞지 않으면 유실이 생겨 해당 mcu를 타겟으로 만들지 않은 것으로 보임) 때문에 Atmega128 mcu를 아두이노에 장착하여 사용하기 위해서는 아두이노에 확장 라이브러리를 설치할 필요가 있음. 해당 open source library가 그 기능을 수행.
pixy camera와 동일 bsp의 시리얼 통신을 받아들이고, Serial.read() 계열 함수를 이용하여 비트를 순차적으로 읽어냄. 이후 comport master 프로그램으로 추출한 좌표 데이터를 이용하여 dc 모터를 작동시키는 로직 작성
atmega128 프로세서와 arduino의 호환에서 생기로 보이는 이슈가 발생, x좌표의 상위 1비트가 0으로 고정되는 현상을 관측하였는데, 하위 1비트 데이터만을 이용하여 실제 좌표를 계산하는 로직이 필요하였음
curLoc 변수를 통해 이전까지 갱신되었던 좌표를 임시 저장하고, 새로 직렬 통신으로 받아들인 좌표 값을 X_center global variable에 저장.
만일 이전까지 개체의 상태가 카메라의 우측단에 존재했었는데, 현재 갱신된 개체의 위치가 카메라 기준 좌측단으로 이동했다면 오버플로우가 발생한 것. (carry가 생성되는 과정에서 비트가 0으로 세팅되었을 가능성이 큼)
만일 위의 현상이 나타났다면, 오버플로우 발생 기점은 255에 현재 갱신된 x좌표를 더해 실제 좌표를 작성해낼 수 있음.