전체 글210 라즈베리파이 피코 -#8 아래 코드는 브링크 예제를 기반으로 본인이 간단하게 만들어 본것이다. 크게 어려운것은 없을것이다. 파이썬도 객체지향 언어라 객체에 대해서 약간 생소하면 어려울수도 있지만, 파이썬 부터 시작한 사람이라면 크게 어려울것은 없다. 그리고 print 문장을 시리얼 통신을 하고 있지만, 크게 어렵지는 않다. 단지 아두이노 시리얼 모니터는 보다는 테라텀이나 putty 를 사용하기를 권한다. import board import digitalio import time print("Hello, World!") led = digitalio.DigitalInOut(board.LED) led0 = digitalio.DigitalInOut(board.GP0) led1 = digitalio.DigitalInOut(board.GP.. 2022. 1. 23. 라즈베리파이 피코 -#7 이제 간단하게 예제를 올려보자. 예제를 올리기전에 먼저 공부해야 할것은 피코 핀맵이다. 이정도만 공부하면 그 다음은 아두이노 우노정도의 지식만 있으면 충분하다. https://learn.adafruit.com/welcome-to-circuitpython Welcome to CircuitPython! You may have seen CircuitPython mentioned on the Adafruit site or on Discord. What is it? Why would you use it? Once you have a CircuitPython board, what do you do next? This guide has you covered from the moment you plug in you.. 2022. 1. 23. 라즈베리파이 피코 -#6 최근에 공부하다가 마이크로 파이썬 보다 더 쉬운것을 하나 발견했다. 지금까지 나온것 중에 제일 쉬운것 같다는 느낌이다. 그리고 본인도 잘 모르기 떄문에 일부 오류가 있다는것을 알기 바란다. https://circuitpython.org/ CircuitPython 이라는것 이다. 작동방법은 기존과 약간 다르다. 일단 아래사이트에서 펌웨어를 받아 올려야 한다. https://circuitpython.org/board/raspberry_pi_pico/ 펌웨어의 확장자는 .UF2 파일이다. 기존의 펌웨어를 올리는 방법과 동일 하다. boot 버턴을 누른 상태에서 연결하고 연결된 드라이버에 복사하면 된다. 마치 USB 디스크처럼 연결된 폴더에 카피 하면 된다. 그리고 조금 있으면 자동으로 재연결후 .. 2022. 1. 23. 아두이노 통신 UNO TO UNO -#6 이전에 시리얼 통신으로 데이터를 받았다. 사실 주고 받는 통신은 아니다. 일반적으로 보내는 통신이다. 쉽게 말해서 제어에 가깝다고 보면 된다. 주고 받는 통신은 이것 보다 더 난이도가 높다. 우리도 생활에서 일반적으로 시키는게 더 쉽다. 그만큼 대화의 소통은 더 어려운것과 비슷하다. ... 잡담은 그만하고 앞으로 할 것은 I2C와 SPI 통신을 할 것이다. 시작하기전에 3개의 통신 모두의 연결을 보자. 공통점과 다른점만 파악해도 모두 이해 했다고 보면 된다. 물론 각각의 통신에서 다시 설명하겠지만, 오늘은 연결만 보고 가자. 그리고 잘못된점은 본인이 TinkerCad 초보라서 I2C LCD를 찾지 못해서 대충 그렸다. 이것만 제외하고 보면 된다. 이것도 I2C LCD와 그냥 LCD의 차이를 모른다면 그냥.. 2021. 12. 4. 아두이노 통신 번외편 -#4 3번까지 이해 했다면 거의 모두 이해 했다. 여기서 의문이 들어야 한다. 정의하지 않는다고 했다. 소프트웨어 시리얼, 하드웨어 시리얼.. 두개를 정의 하지 않고 사용자가 그냥 호출하는것만으로 결정되어 진다. 정의하지 않는다고 했지, 하드웨어 시리얼, 소프트웨어 시리얼 통신이라고 하지는 않았다. 그렇다. 여기서는 아무것도 정의하지 않았다. 쉽게 말해서 모든 통신을 넣을수가 있다는것이다. 지금 이야기가 정확히 이해가 안 될수도 있지만, 앞으로 I2C와 SPI를 통해서 코드를 보면서 이해 하도록 하자. 이전내용에 대한 전체 코드다. #include #include SoftwareSerial sSerial= SoftwareSerial(2, 3); //HardwareSerial& sSerial = Serial2;.. 2021. 11. 20. 아두이노 통신 번외편 -#3 이제 번외편 마지막이다. 이전에 인자만 다르고 동일한 함수를 두개 만들어서 사용했다. 아두이노 메가 처럼 하드웨어시리얼도 많고 소프트웨어 시리얼도 가능하다면 유용한 코드가 될것이다. 그래도 동일한, 유사한 함수가 두개라는것은 좀 그렇다. 그래서 최종적으로 진화하는 템플릿으로 진화 하는것이다. 변수의 타입, 객체의 형태를 정의하지 않는것이다. 정의하지 않는 형태가 바로 템플릿이다. template void read_serial(Info& _info, T& ss) { memset(&_info, 0x00, sizeof(Info)); if (ss.available()) { char c; char *p; p = (char*)&_info; while( (p - ((char*)&_info)) < sizeof(Info.. 2021. 11. 20. 아두이노 통신 번외편 -#2 이전 코드가 이해 했다면 이것은 1분이면 이해 할 수 있는 단순한 코드 이다. - 소프트웨어 시리얼을 사용하지 않고 하드웨어 시리얼을 사용하고 싶다면 아래와 같이 간단하게 고치면 된다. - 쉽게 말해서 코드자체가 변경되지는 않는다. 단지 하드웨어, 혹은 시리얼 차이만 변경되는것이다. - 아두이노가 C언어가 아니라 C++ 이기 떄문에 함수이름은 동일해도 상관없다. 그래서 아래코드가 가능하다. void read_serial(Info& _info, SoftwareSerial& ss); void read_serial(Info& _info, HardwareSerial& ss); void read_serial(Info& _info, SoftwareSerial& ss) { memset(&_info, 0x00, siz.. 2021. 11. 20. 아두이노 통신 번외편 -#1 사실 이전에 했던 내용과 이어져 있지만, 좀 다르다. 그렇다고 꼭 필요하지는 않다. 그렇지만 알아 두면 좋은 내용이다. 기존의 코드에서 범용성을 기반으로 코드를 수정 하는것이다. 기존의코드는 시리얼통신을 기반으로 하고 있다. 그렇다면 하드웨어 시리얼을 사용한다면 코드를 변경해야 한다. 혹은 다른 시리얼 통신을 사용한다면 또 코드를 변경해야 한다. 그래서 시리얼통신을 변수화 하는것이다. 이전코드와 이후코드의 차이를 보는것만으로 도움이 될것이다. void read_serial(Info& _info, SoftwareSerial& ss) { memset(&_info, 0x00, sizeof(Info)); if (ss.available()) { char c; char *p; p = (char*)&_info; wh.. 2021. 11. 20. 아두이노 통신 UNO TO UNO -#5 우노B의 소스코드도 우노A에 비하면 더 단순하다. 우노A와 공통된 사항을 제외하면 우노B도 두개의 함수로 구성되어 있다. 우노A로 부터 오는 데이터를 읽기 위한 함수 데이터를 출력하기 위한 LCD함수로 구성되어 있다. LCD출력 함수에 대해서는 몇 줄되지 않고 다른 강좌에서 많기 때문에 생략하기로 한다. 그러면 마지막으로 남는 함수는 우노A로 부터 오는 데이터를 읽기 위한 함수 이다. 우노A의 시리얼 모니터 읽기 함수와 유사 하지만 차이가 있다. 시리얼 모니터에서 읽는 함수는 엔터를 기준으로 데이터를 읽었지만, 우노B의 읽기 함수는 구조체의 크기 만큼 읽는 함수 이다. 거의 유사 하지만, 약간의 차이가 있다. void read_serial(Info& _info) { memset(&_info, 0x00, .. 2021. 11. 16. 이전 1 2 3 4 5 6 7 ··· 24 다음