2025年5月1日木曜日

XIAO RP2040 Arduino IDE テスト

Seeed XIAO RP2040をArduino IDE環境でテストしました。
商品説明
・Raspberry RP2040チップ(デュアルコアARM Cortex M0+@133MHz)が搭載
・264KBのSRAMと2MBのオンボードフラッシュメモリ
・Arduino、MicroPython、CircuitPythonを完全にサポート   






参考サイト
●Arduino環境でSeeed XIAO RP2040を使う
●ラズパイPICO互換ボード XIAO RP2040の使い方


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】を貼付ける。










【ツール】【ボードマネージャ】【Raspberry Pi PR2040 Boards ...】
【Seeed XIAO RP2040】













●NeoPixel点滅
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が青点灯し、離すと消灯する。

タクトスイッチ ー  XIAO(IO2)












プログラム
#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);
}



●DHT11から温度・湿度をシリアルモニタ
温度・湿度測定をシリアルモニタに表示。
XIAO  DHT11端子
GND ー GND
3.3V ー VCC
I01 ー S








シリアルモニタ












プログラム
#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
繰り返す。
XIAO   SG90サーボモータ
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 件のコメント:

コメントを投稿

秋月8桁周波数カウンタキット組立・校正

10.000.000Hz 秋月8桁周波数カウンタキット組立・GPS校正・1.1GHzプリスケーラーについて。基準発振器に温度補償型水晶発振器 VCTCXO (12.8MHz±1ppm) を使用して 1Hz~50MHzの測定ができますが、今回 GPSモジュールの1S信号を使い基準発...