workshop Vol2 memo

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;
}