micro:bit v2로 플레이

15126 단어 Arduinomicrobit
일본 안드로이드의 회 아키하바라 지부 로봇부 Advent Calendar 2020 12일째입니다.

소개



micro:bit의 v2가 나왔기 때문에 샀습니다.



변경점에 대해서는 스위치 사이언스의 blog등을 봐 준다고 하고, v2에서는 nRF52833이 사용되고 있어 Flash나 RAM의 사이즈, 스피커나 마이크의 추가, Bluetooth 5등 파워 업하고 있습니다.
스피커나 마이크의 추가에 의해 목소리를 사용한 작품도 할 수 있는 것은 아닐까요.

micro:bit의 프로그래밍에서는 공식 사이트의 브라우저로 프로그래밍하는 것이 일반적이라고 생각합니다만, 방금 Arduino의 라이브러리가 대응한 것을 보았으므로 이번은 Arduino에서 해 보고 싶습니다.

준비



우선 ArduinosIDE를 열고 환경설정 > 보트 관리자에서 URL을 붙여넣습니다.
https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json


URL을 붙이면 도구>보드>보드 관리자를 열고 nrf로 치고 검색하면 Nordic Semiconductor nrf5 Boards가 나오므로 설치합니다.
설치한 후 보드에서 BBC micro:bit V2 를 선택할 수 있게 되면 준비 완료입니다.



놀자.



adafruit의 기사의 스케치를 복사하여 우선 LED 빛나게 해 보겠습니다.


microbit_v1_blink.ino
const int COL1 = 3; 
const int LED = 26;

void setup() {  
  // because the LEDs are multiplexed, we must ground the opposite side of the LED
  pinMode(COL1, OUTPUT);
  digitalWrite(COL1, LOW); 

  pinMode(LED, OUTPUT);   
}

void loop(){
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
  delay(500);
}
You should see the top left LED blinking!
왼쪽 상단 LED가 ... 붙지 않습니다 ... orz
공식 사이트 를 보면,



micro:bit v1에서는 LED matrix의 9x3이었지만, v2는 5x5로 사양이 바뀐 것 같습니다.

v1과 v2의 변수 정의를 살펴보면


v1
const uint32_t g_ADigitalPinMap[] = {
  // 0 - 4
  3, // A0 - left pad
  2, // A1 - middle pad
  1, // A2 - right pad
  4, // A3 - COL1
  5, // A4 - COL2

  //省略

  // 17 + 18
  (uint32_t)-1, // 3.3V
  (uint32_t)-1, // 3.3V

  0,  // SCL
  30, // SDA

  25, // RX
  24, // TX

  7,  // COL4
  8,  // COL5
  9,  // COL6
  13, // ROW1
  14, // ROW2
  15, // ROW3



v2
const uint32_t g_ADigitalPinMap[] = {
  // 0 - 4
  2,  // A0, LEFT PAD
  3,  // A1, MIDDLE PAD
  4,  // A2, RIGHT PAD
  31, // A3, COL3
  28, // A4, COL1

  // 21 - 25
  21, // ROW1
  22, // ROW2
  15, // ROW3
  24, // ROW4
  19, // ROW5

v1에서는 col=3, row=26 를 선택하면 왼쪽 위의 LED가 붙은 곳을 v2에서는 col=4, row=21 라고 선택하면 LED가 붙을 것 같습니다.col=4, row=21 로 스케치를 작성해 보면 LED가 켜졌습니다.

microbit_v2_blink.ino
const int COL1 = 4;    //←4にする!!!
const int LED = 21;    //←21にする!!!

void setup() {  
  // because the LEDs are multiplexed, we must ground the opposite side of the LED
  pinMode(COL1, OUTPUT);
  digitalWrite(COL1, LOW); 

  pinMode(LED, OUTPUT);   
}

void loop(){
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
  delay(500);
}



왼쪽 상단에서 오른쪽 하단까지 하나씩 깜박입니다.

c++
const int cols[5] = {4, 7, 3, 6, 10};
const int rows[5] = {21, 22, 23, 24, 25};

void setup() {  
  // because the LEDs are multiplexed, we must ground the opposite side of the LED
  Serial.begin(115200);

  for(int i=0; i < 5; i++) {
    pinMode(cols[i], OUTPUT);

    if(i==0) {
      digitalWrite(cols[i], LOW);  
    } else {
      digitalWrite(cols[i], HIGH);
    }

    pinMode(rows[i], OUTPUT);
  }

}

void loop(){
  for(int i=0; i< 5; i++) {
    for(int j=0; j < 5; j++){
      digitalWrite(rows[i], HIGH);
      digitalWrite(cols[j], LOW);
      delay(200);
      digitalWrite(rows[i], LOW);
      digitalWrite(cols[j], HIGH);
      delay(200);
    }
  }
}



다음은 Bluetooth로 무언가하고 싶다고 생각했습니다만, 라이브러리 쪽에서 아직 nrf52833은 대응할 수 없어 컴파일 에러가 됩니다.
현재 Arduino + micro : bit v2 + Bluetooth로 재생하는 것은 어려울 것 같습니다 ... 유감! 😭😭😭

htps : // 기주 b. 코 m / 산데에 p 미 스트리 / 아
htps : // 기주 b. 이 m / 씨데에 p 미스트리 / 아 루즈이의 -B ぺぺ리 p 주걱 l / b ぉ b /까지 r / src / n RF51822. h

※nrf52832에 대응하는 commit도 있었으므로 대응해 준다고 생각하고 싶습니다만, 최근 활동이 대단합니다...
htps : // 기주 b. 코 m / 씨데에 p 미스트리 / 아 루즈의 - B ぺぺ리 p 주걱 l / 코미 t / 1 세아 5d24 아 6218515f180811837784c1742에 10에 0c

좋은 웹페이지 즐겨찾기