2026.03.13
Json
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
スケッチ①Lチカ(内蔵LEDを点滅させる)
void setup() {
pinMode(25, OUTPUT); // 内蔵LED(Green)
}
void loop() {
digitalWrite(25, HIGH);
delay(2000);
digitalWrite(25, LOW);
delay(500);
}
スケッチ②Lチカ(外付けLEDを点滅させる)
const int LED_PIN = D3;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH); // 点灯
delay(500);
digitalWrite(LED_PIN, LOW); // 消灯
delay(500);
}
スケッチ③(ボタンを押すと指定した文字をPCに入力する)
#include <Keyboard.h>
const int BUTTON_PIN = D8;
const char SEND_CHAR = ‘b’; //キーボード入力する文字を入れる
bool down = false;
unsigned long lastReleaseAll = 0;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
Keyboard.begin();
}
void loop() {
if (millis() – lastReleaseAll > 500) {
Keyboard.releaseAll();
lastReleaseAll = millis();
}
int s = digitalRead(BUTTON_PIN);
if (s == LOW && !down) { Keyboard.press(SEND_CHAR); down = true; }
if (s == HIGH && down) { Keyboard.release(SEND_CHAR); down = false; }
}
スケッチ④(ボタンを押すと文字入力とともにLEDが光る)
#include <Keyboard.h>
const int BUTTON_PIN = D8;
const int LED_PIN = D6;
const char SEND_CHAR = ‘b’; //キーボード入力する文字を入れる
bool down = false;
unsigned long lastReleaseAll = 0;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP); // ボタン(未押下=HIGH, 押下=LOW)
pinMode(LED_PIN, OUTPUT); // LED出力
digitalWrite(LED_PIN, LOW); // 初期は消灯
Keyboard.begin(); // ※USB Stackは「Pico SDK」を推奨
}
void loop() {
unsigned long now = millis();
// 暴走保険:定期的に全解放(押しっぱなし事故の自己回復)
if (now – lastReleaseAll > 500) {
Keyboard.releaseAll();
lastReleaseAll = now;
}
// ボタン読み取り:押した瞬間に’a’押下、離したら解放
int s = digitalRead(BUTTON_PIN);
if (s == LOW && !down) { // 押下エッジ
Keyboard.press(SEND_CHAR);
digitalWrite(LED_PIN, HIGH); // LED点灯
down = true;
}
if (s == HIGH && down) { // 解放エッジ
Keyboard.release(SEND_CHAR);
digitalWrite(LED_PIN, LOW); // LED消灯
down = false;
}
}
スケッチ⑤(特殊キーを使う)
#include <Keyboard.h>
const int BUTTON_PIN = D8;
const int LED_PIN = D6;
const uint8_t SEND_KEY = KEY_RETURN;//エンター
/* キー一覧
Enter KEY_RETURN
ESC KEY_ESC
Backspace KEY_BACKSPACE
Tab KEY_TAB
Space ‘ ‘
矢印↑ KEY_UP_ARROW
矢印↓ KEY_DOWN_ARROW
矢印← KEY_LEFT_ARROW
矢印→ KEY_RIGHT_ARROW
Shift KEY_LEFT_SHIFT / KEY_RIGHT_SHIFT
Ctrl KEY_LEFT_CTRL / KEY_RIGHT_CTRL
Alt (Option) KEY_LEFT_ALT / KEY_RIGHT_ALT
Command (Mac) KEY_LEFT_GUI / KEY_RIGHT_GUI
*/
bool down = false;
int lastReading = HIGH;
int stableState = HIGH;
unsigned long lastChangeTime = 0;
const int debounceTime = 20;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
Keyboard.begin();
}
void loop() {
int reading = digitalRead(BUTTON_PIN);
if (reading != lastReading) {
lastChangeTime = millis();
}
if ((millis() – lastChangeTime) > debounceTime) {
if (reading != stableState) {
stableState = reading;
if (stableState == LOW) {
Keyboard.press(SEND_KEY);
digitalWrite(LED_PIN, HIGH);
down = true;
} else {
Keyboard.release(SEND_KEY);
digitalWrite(LED_PIN, LOW);
down = false;
}
}
}
lastReading = reading;
}
スケッチ⑥(文字列を入力する)
#include <Keyboard.h>
const int BUTTON_PIN = D8;
const int LED_PIN = D6;
bool lastState = HIGH;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
Keyboard.begin();
}
void loop() {
bool state = digitalRead(BUTTON_PIN);
// 押された瞬間だけ実行
if (lastState == HIGH && state == LOW) {
digitalWrite(LED_PIN, HIGH);
Keyboard.print(“hello”);
delay(100); // 連打防止
}
// 離された
if (lastState == LOW && state == HIGH) {
digitalWrite(LED_PIN, LOW);
}
lastState = state;
}