Seeed XIAO RP2040をArduino IDE環境でテストしました。
●アマゾン【https://www.amazon.co.jp/gp/product/B09NNVNW7M/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&th=1】
商品説明
・Raspberry RP2040チップ(デュアルコアARM Cortex M0+@133MHz)が搭載
・264KBのSRAMと2MBのオンボードフラッシュメモリ
・Arduino、MicroPython、CircuitPythonを完全にサポート
参考サイト
●Arduino環境でSeeed XIAO RP2040を使う
●ラズパイPICO互換ボード XIAO RP2040の使い方
●温度と湿度センサーモジュール(DHT11)
Seeed XIAO RP2040 Pinout
●スイッチサイエンスから引用
XIAO開発環境をArduino IDEによる開発
Ardino IDEを入手
Arduino IDEから XIAOを使うとき
【ファイル】【環境設定】【追加のボードマネージャのURL:】【https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json】を貼付ける。
●NeoPixel点滅
プログラム
#include <Adafruit_NeoPixel.h>
#define POW_PIN 11 //NeoPixelの電源
#define PIN 12 // NeoPixel の出力ピン番号
#define LED_COUNT 1 // LEDの連結数
#define BRIGHTNESS 2 // 輝度
Adafruit_NeoPixel pixels(LED_COUNT, PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
pinMode(POW_PIN, OUTPUT); //Neopixel電源供給
digitalWrite(POW_PIN, HIGH);
pixels.begin(); //NeoPixel開始
}
void loop()
{
pixels.clear();
//赤
pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, 0, 0));
pixels.show();
//緑
//pixels.setPixelColor(0, pixels.Color(0, BRIGHTNESS, 0));
//pixels.show();
//青
//pixels.setPixelColor(0, pixels.Color(0, 0, BRIGHTNESS));
//pixels.show();
delay(1000);
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); //消す
pixels.show();
delay(1000);
}
●スイッチとNeoPixelテスト
タクトスイッチをプルアップ接続して
スイッチを押すとNeoPixelが青点灯し、離すと消灯する。
プログラム
#include <Adafruit_NeoPixel.h>
#define POW_PIN 11 //NeoPixelの電源
#define PIN 12 // NeoPixel の出力ピン番号
#define LED_COUNT 1 // LEDの連結数
#define BRIGHTNESS 128 // 輝度
#define SW 2
Adafruit_NeoPixel pixels(LED_COUNT, PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
pinMode(POW_PIN, OUTPUT); //Neopixel電源供給
digitalWrite(POW_PIN, HIGH);
pinMode(SW, INPUT_PULLUP);
pixels.begin(); //NeoPixel開始
}
void loop()
{
pixels.clear();
if (digitalRead(SW) == LOW ){
//赤
//pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, 0, 0));
//pixels.show();
//緑
//pixels.setPixelColor(0, pixels.Color(0, BRIGHTNESS, 0));
//pixels.show();
//青
pixels.setPixelColor(0, pixels.Color(0, 0, BRIGHTNESS));
pixels.show();
}else{
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); //消す
pixels.show();
}
delay(10);
}
●ADCとPWMテスト
PWM1KHz |
ボリュームの電圧をADC変換しPWMに入力するとデューティ比が変化する。
ボリューム両端 GND・3.3V
中心 XIAO(IO26)
PWM出力 XIAO(IO1)
シリアルプロッタ
ボリュームを変化させた波形。
プログラム
#define PWM 1 //PWM 出力pin
uint16_t VR;
float v;
void setup() {
pinMode(PWM , OUTPUT);
Serial.begin(9600);
}
void loop() {
VR = analogRead(26);
v = VR;
Serial.println(v);
analogWrite(PWM, v/4);
delay(10);
}
プログラム
#include <DHT.h>
#define DHTPIN 1
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println(F("DHT11 TEST"));
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t) ) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hif = dht.computeHeatIndex(h, t);
Serial.print(F("Temperature: "));
Serial.print(t);
Serial.print(F("C Humidity: "));
Serial.print(h);
Serial.println(F("%"));
}
●サーボモータテスト
サーボモータ 0→180度・180度→0
繰り返す。
GND ー 黒
5V ー 赤
I01 ー 黄
プログラム
#include <Servo.h>
const int servoPin = 1;
Servo servo;
void setup() {
servo.attach(servoPin);
}
void loop() {
int angle = 0;
for (angle = 0; angle <= 180; angle++) {
servo.write(angle);
delay(10);
}
for (angle = 180; angle >= 0; angle--) {
servo.write(angle);
delay(10);
}
}
●OLED 表示テスト
0.96インチ 128×64ドットOLED
XIAO SSD1306
GND ー GND
3.3V ー VCC
IO7 ー SCL
IO6 ー SDA
プログラム
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Wire.begin();
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306:0 allocation failed"));
for (;;);
}
display.setTextColor(SSD1306_WHITE);
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(0, 20);
display.println("Hello");
display.println("World!");
display.display();
}
void loop() {
}
●デュアルコア テスト
シリアルモニタ
コアをデュアル処理する。
Core 0の処理count = count + 1
Core 1の処理
count = count + 100
プログラム
int count = 0;
void setup() { // Core 0の処理
Serial.begin(115200);
}
void loop() {
Serial.println(count);
count = count + 1;
delay(500);
}
void setup1() { // Core 1の処理
}
void loop1() {
count = count + 100;
delay(1000);
}
0 件のコメント:
コメントを投稿