Vielen ist nicht bekannt, dass man den Calliope mini auch mit der Arduino IDE programmieren kann. Die Konfiguration der Arduino IDE erfordert lediglich das Hinzufügen einer zusätzlichen Boardverwalter-URL https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json in den Einstellungen. In der Boardverwaltung lässt sich dann (nach einem Neustart der Arduino IDE) der Calliope mini suchen und die dazu passende Erweiterung „Nordic Semiconducter nRF5 Boards“ installieren.
Mit dieser Änderung tauchen Calliope mini, Calliope mini v3, aber auch Micro:bit und Micro:bit v2 in der Liste der unterstützen Boards auf und lassen sich in der Arduino IDE programmieren. Für den Micro:bit gibt es zahlreiche Beispielprogramme in der ebenfalls installierbaren „Adafruit Microbit Library“ von https://github.com/adafruit/Adafruit_Microbit. Ich habe mich mit der Ansteuerung der 5x5-LED-Matrix beschäftigt. Dazu gibt es zum Ausprobieren ein Demoprogramm „Datei > Beispiele > Adafruid Microbit Library > matrixdemo.ino“. Da sich wohl die intern verwendeten Steuerleitungen bei den unterschiedichen Controllerversionen geändert haben, muss man das richtige Board auswählen , um nach dem Compilieren ein funktionierendes Programm zu bekommen.
Bei Micro:bit und Micro:bit v2 ist die Sache klar. Mit der richtigen Einstellung läuft das Programm auf der entsprechenden Platine. Ich muss für den Calliope mini v1 allerdings den Micro:bit auswählen und für den Calliope v3 den Micro:bit v2. Mit der Auswahl von Calliope mini und Calliope mini v3 funktioniert die Programmierung nicht. Ist da ein Fehler in der Konfiguration?
Beste Grüße
Ralf
// This is a demo of the matrix driver code
// works with Adafruit GFX commands - its just
// a really small screen!
// https://learn.adafruit.com/adafruit-gfx-graphics-library
#include <Adafruit_Microbit.h>
Adafruit_Microbit_Matrix microbit;
const uint8_t
smile_bmp[] =
{ B00000,
B01010,
B00000,
B10001,
B01110, };
void setup() {
Serial.begin(9600);
Serial.println("microbit matrix demo is ready!");
microbit.begin();
}
void loop(){
// Fill screen
microbit.fillScreen(LED_ON);
delay(1000);
// draw a heart
microbit.show(microbit.HEART);
delay(1000);
// draw a no cross
microbit.show(microbit.NO);
delay(1000);
// draw a yes check
microbit.show(microbit.YES);
delay(1000);
// draw a custom made bitmap face
microbit.show(smile_bmp);
delay(1000);
microbit.clear();
// Draw a line 'by hand'
microbit.drawPixel(0, 0, LED_ON);
microbit.drawPixel(1, 1, LED_ON);
microbit.drawPixel(2, 2, LED_ON);
microbit.drawPixel(3, 3, LED_ON);
microbit.drawPixel(4, 4, LED_ON);
// draw the 'opposite' line with drawline (easier!)
microbit.drawLine(0, 4, 4, 0, LED_ON);
delay(1000);
// erase screen, draw a square
microbit.clear();
microbit.drawRect(0,0, 5, 5, LED_ON); // top left corner @ (0,0), 5 by 5 pixels size
delay(1000);
// erase screen, draw a circle
microbit.clear();
microbit.drawCircle(2,2, 2, LED_ON); // center on 2, 2, radius 2
delay(1000);
// erase screen, draw a filled triangle
microbit.clear();
microbit.fillTriangle(0,4, 2,0, 4,4, LED_ON);
delay(1000);
// scroll some text the 'easy' way
microbit.print("HELLO WORLD");
// count up!
for (int i=0; i<10; i++) {
microbit.print(i);
delay(500);
}
microbit.print(3.1415, 4); // pi time, 4 digits of precision!!
}