第1回 Arduino
Arduinoとは
マイコンボードの一種
プログラムを書いて、センサーの値を読み込んだり、
モーターを動かしたり、LEDを光らせたり、いろいろできる
プログラムを書いて、センサーの値を読み込んだり、
モーターを動かしたり、LEDを光らせたり、いろいろできる
LEDを点灯させる
LEDを点滅させる
Copy!!
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
deiay(1000)=1秒待つ
センサーを使いLEDを点灯させる
暗さが「700」以上になった際にLEDが点灯
Copy!!
void setup() {
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop() {
int val = analogRead(1);
Serial.println(val);
// 暗いときLED点灯
if (val > 700) {
digitalWrite(13,HIGH);
} else {
digitalWrite(13,LOW);
}
delay(500);
}
NeoPixel
フルカラーのLED、今回は5個連結して使用。
Copy!!
//04132で点灯
#include <Adafruit_NeoPixel.h>
#define PIN 9 // 信号用のピンを指定
#define NUMPIXELS 5 // LEDの数を指定
int brightness = 50; // 明るさ
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// 点灯する順番を指定(0始まり)
int order[NUMPIXELS] = {0, 4, 1, 3, 2}; // → 1,5,2,4,3
void setup() {
pixels.begin(); // NeoPixel出力ピンの初期化
pixels.setBrightness(brightness);
}
void loop() {
pixels.clear(); // すべてのLEDを消す
for(int i = 0; i < NUMPIXELS; i++) {
int ledIndex = order[i]; // 指定した順番で取り出す
pixels.setPixelColor(ledIndex, pixels.Color(255, 0, 255));
pixels.show();
delay(1000);
}
}
Copy!!
//順番指定(04132)+色指定
#include <Adafruit_NeoPixel.h>
#define PIN 9
#define NUMPIXELS 5
int brightness = 50;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// 点灯順(1,5,2,4,3 → 0,4,1,3,2)
int order[NUMPIXELS] = {0, 4, 1, 3, 2};
// 各LEDの色(0〜4に対応)
uint32_t colors[NUMPIXELS];
void setup() {
pixels.begin();
pixels.setBrightness(brightness);
// 色を設定
colors[0] = pixels.Color(255, 0, 0); // 赤
colors[1] = pixels.Color(255, 255, 0); // 黄
colors[2] = pixels.Color(0, 255, 0); // 緑
colors[3] = pixels.Color(0, 0, 255); // 青
colors[4] = pixels.Color(255, 0, 255); // 紫
}
void loop() {
pixels.clear();
for(int i = 0; i < NUMPIXELS; i++) {
int ledIndex = order[i];
pixels.setPixelColor(ledIndex, colors[ledIndex]);
pixels.show();
delay(1000);
}
}
Copy!!
//色・順番、バラバラ
#include <Adafruit_NeoPixel.h>
#define PIN 9
#define NUMPIXELS 5
int brightness = 50;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int order[NUMPIXELS]; // 点灯順
uint32_t colors[NUMPIXELS]; // 色
void setup() {
pixels.begin();
pixels.setBrightness(brightness);
randomSeed(analogRead(0)); // 乱数の種(毎回変わるように)
}
void loop() {
pixels.clear();
// --- 順番を初期化 ---
for(int i = 0; i < NUMPIXELS; i++) {
order[i] = i;
}
// --- 順番をシャッフル(Fisher-Yates)---
for(int i = NUMPIXELS - 1; i > 0; i--) {
int j = random(0, i + 1);
int temp = order[i];
order[i] = order[j];
order[j] = temp;
}
// --- 色をランダム生成 ---
for(int i = 0; i < NUMPIXELS; i++) {
int r = random(0, 256);
int g = random(0, 256);
int b = random(0, 256);
colors[i] = pixels.Color(r, g, b);
}
// --- ランダム順&ランダム色で点灯 ---
for(int i = 0; i < NUMPIXELS; i++) {
int ledIndex = order[i];
pixels.setPixelColor(ledIndex, colors[ledIndex]);
pixels.show();
delay(500);
}
delay(2000); // 次のランダムまで少し待つ
}
Copy!!
//色がそろったら点滅
#include <Adafruit_NeoPixel.h>
#define PIN 9
#define NUMPIXELS 5
int brightness = 50;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int order[NUMPIXELS];
uint32_t colors[NUMPIXELS];
// 使う色(固定5色)
uint32_t palette[5];
void setup() {
pixels.begin();
pixels.setBrightness(brightness);
randomSeed(analogRead(0));
// 色パレット
palette[0] = pixels.Color(255, 0, 0); // 赤
palette[1] = pixels.Color(255, 255, 0); // 黄
palette[2] = pixels.Color(0, 255, 0); // 緑
palette[3] = pixels.Color(0, 0, 255); // 青
palette[4] = pixels.Color(255, 0, 255); // 紫
}
void loop() {
pixels.clear();
// --- 順番初期化 ---
for(int i = 0; i < NUMPIXELS; i++) {
order[i] = i;
}
// --- シャッフル ---
for(int i = NUMPIXELS - 1; i > 0; i--) {
int j = random(0, i + 1);
int temp = order[i];
order[i] = order[j];
order[j] = temp;
}
// --- 色をランダム選択(5色から)---
for(int i = 0; i < NUMPIXELS; i++) {
int c = random(0, 5);
colors[i] = palette[c];
}
// --- 全部同じ色かチェック ---
bool sameColor = true;
for(int i = 1; i < NUMPIXELS; i++) {
if(colors[i] != colors[0]) {
sameColor = false;
break;
}
}
// --- 通常点灯 ---
for(int i = 0; i < NUMPIXELS; i++) {
int ledIndex = order[i];
pixels.setPixelColor(ledIndex, colors[ledIndex]);
pixels.show();
delay(500);
}
// --- 全部同じ色なら点滅 ---
if(sameColor) {
for(int k = 0; k < 2; k++) {
pixels.clear();
pixels.show();
delay(300);
for(int i = 0; i < NUMPIXELS; i++) {
pixels.setPixelColor(i, colors[i]);
}
pixels.show();
delay(300);
}
}
delay(1500);
}