0
0

More than 3 years have passed since last update.

Raspberry Pi PicoにArduino.hをinclude

Posted at

はじめに

Raspberry Pi PicoをC/C++で開発する場合、新たにRaspberry Pi Picoの関数を覚える必要が有ります。
すでにArduinoを使いこなしている人は、delay()やdigitalWrite()なんかをPico語に置き換える度にストレスを感じるでしょう。
そこで、Raspberry Pi Picoの開発環境にArduino.hを読み込んでみました。

ここで紹介する内容はあくまで実験レベルです。
安定した動作を期待する場合はArduinoの移植プロジェクトが完了するのを待ちましょう。
https://blog.arduino.cc/2021/01/20/welcome-raspberry-pi-to-the-world-of-microcontrollers/

関連ファイル

以下に関連ファイルをアップロードしました。
https://pione.jp/qiita/Arduino_h_test.tar.gz

ダウンロード・解凍して下さい。

$wget https://pione.jp/qiita/Arduino_h_test.tar.gz
$tar -zxvf Arduino_h_test.tar.gz 
$cd Arduino_h_test
$ls
Arduino.h           CMakeLists.txt  main.c
ArduinoFunctions.c  hiddenMain.c    pico_sdk_import.cmake

「main.c」がArduinoで言うところの「プロジェクト.ino」です。

「Arduino.h」は以下のファイルからコンパイル時にエラーとなる行をコメントアウトしたものです。
https://raw.githubusercontent.com/arduino/ArduinoCore-avr/master/cores/arduino/Arduino.h
主にマクロ定義を流用します。

「ArduinoFunctions.c」はArduino語の関数をPico語に置き換える独自関数です。
使用頻度の高い以下の関数を用意しました。
・void pinMode(uint8_t,uint8_t)
・void digitalWrite(uint8_t,uint8_t)
・int digitalRead(uint8_t)
・int analogRead(uint8_t)
・unsigned long millis(void)
・unsigned long micros(void)
・void delay(unsigned long)
・void delayMicroseconds(unsigned long)
他にもArduino関数を流用したい場合はこのファイルに追記します。

main.c

「main.c」ファイルを雛形として編集すればArduinoライクな開発ができます。
添付の「main.c」ファイルを見てみましょう。

#include <stdio.h>
#include <string.h>
#include "pico/stdlib.h"
#include "hardware/i2c.h"
#include "pico/binary_info.h"
#include "hardware/gpio.h"
#include "hardware/adc.h"
#include "Arduino.h"

#define LEDPin 25
#define SW 16

void setup(){
    pinMode(SW,INPUT_PULLUP);
    pinMode(LEDPin,OUTPUT);
}

void loop(){
    if(digitalRead(SW) && millis()%1000<500){
        digitalWrite(LEDPin,HIGH);
    }
    else{
        digitalWrite(LEDPin,LOW);
    }
}

GPIO16番ピン(picoの21番ピン)を開放すると1秒間隔でオンボードLEDが点滅し、GNDと短絡するとLEDが消灯するプログラムです。
setup関数とloop関数はそのままArduinoに移植できます。

応用例

「Arduino.h」をインクルードした開発環境でパルスオキシメーターを作ってみました。
https://pione.jp/products/PulseOximeter2/
プログラムについては追って解説を作成する予定です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0