2026年10月1日木曜日

XIAO SAMD21 - ①LED②ADC③DAC④PWM⑤Servo⑥SR04⑦DHT11テスト

高性能Arduino互換機 Seeeduino XIAO SAMD21使い下記をテストしました。
①LED ②ADC ③DAC ④PWM ⑤Servo ⑥SR04 ⑦DHT11     










参考サイト



XIAO SAMD21
・強力な CPU:ARM® Cortex®-M0+ 32bit 48MHz マイクロコントローラー(SAMD21G18)、256KB Flash、32KB SRAM を搭載。
・柔軟な互換性:Arduino IDE と互換性があります。
・11 個のデジタル/アナログピン、10 個の PWM ピン、1 個の DAC 出力、1 個の SWD ボンディングパッドインターフェース、1 個の I2C インターフェース、1 個の UART インターフェース、1 個の SPI インターフェース。







ピン配置図
seeed studio から抜粋



















追加のボードマネージャーのURL:
【https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json】追加
【,】カンマで区切る



















ボードマネージャー
【seeeduino】インストール















ボード選択【Seeeduino XIAO】


















①LED点滅
PIN 11 - LED(T)
PIN 12 - LED(R)
PIN 13 - LED(オレンジ)

LOW - 点灯
HIGH - 消灯










プログラム Arduino IDE【ボード:Seeeduino XIAO】

void setup() {
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {  
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13, LOW);
  delay(500);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);  
  delay(2000);
}


②ADC
A7ピンに0V~3.3Vを加える(10KΩボリーム調整)
シリアルモニタ・シリアルプロッタで確認
分解能 analogReadResolution( )
初期値(10ビット) 0~1023値
最大値(12ビット) 0~4095値






プログラム Arduino IDE【ボード:Seeeduino XIAO】
void setup() {
  Serial.begin(115200);
  pinMode(A7, INPUT);
  analogReadResolution(12);//分解能-初期値(10ビット)MAX(12ビット)
}

void loop() {
  int adc = analogRead(A7);  
  Serial.println(adc); //シリアルプロッタ
}





③DACノコギリ波出力















波形を見るとPK-PK:2.23Vで飽和している?


プログラム Arduino IDE【ボード:Seeeduino XIAO】

#define DAC A0 // XIAO SAMD21はA0ピンがDAC出力
void setup()
{
pinMode(DAC, OUTPUT);
analogWriteResolution(10);// 解像度 MAX(10ビット)0〜1023
}

void loop()
{
  for(int i = 0; i < 1024; i ++)
  {
    analogWrite(DAC, i );  
    delayMicroseconds(1);    
  }  
}





④PWM出力















上:A5 PWM波形
下:A6 PWM波形



プログラム Arduino IDE【ボード:Seeeduino XIAO】
void setup(){  
  pinMode(A5,OUTPUT);
  pinMode(A6,OUTPUT);
  analogWriteResolution(8);//解像度 初期値(8)0~255, MAX(10)0〜1023
  analogWrite(A5,64);
  analogWrite(A6,128);
}
void loop(){  
}



⑤サーボモーター

赤ー5V
黒ーGND
黄ーD10

90度往復動作














プログラム Arduino IDE【ボード:Seeeduino XIAO】
#include <Servo.h>
Servo servo;
void setup() {
  servo.attach(D10);  
}
void loop() {
  servo.write(0);
  delay(1000);
  servo.write(90);
  delay(1000);
}



⑥HC-SR04超音波距離センサー
HC-SR04(3.3-5V対応)
trigPin- D8
echoPinー D7
VCCー3.3V
GNDーGND









シリアルモニタ
障害物検知6cm~7cm













プログラム Arduino IDE【ボード:Seeeduino XIAO】
#define trigPin D8
#define echoPin D7

void setup() {  
  Serial.begin(9600);
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
}  
void loop() {
  digitalWrite(trigPin, LOW);  
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);  
  delayMicroseconds(20);
  digitalWrite(trigPin, LOW);  
  int dist = pulseIn(echoPin, HIGH);  
  dist= dist/58;
  Serial.println(dist);    
   
}




無印ー3.3V
⊖ーGND
ⓈーD7 















シリアルモニタ




















プログラム Arduino IDE【ボード:Seeeduino XIAO】
//https://docs.sunfounder.com/projects/ultimate-sensor-kit/ja/latest/components_basic/12-component_dht11.html

#include <DHT.h>

#define DHTPIN D7       // Define the pin used to connect the sensor
#define DHTTYPE DHT11  // Define the sensor type

DHT dht(DHTPIN, DHTTYPE);  // Create a DHT object

void setup() {
  // Initialize the serial communication
  Serial.begin(9600);
  Serial.println(F("DHT11 test!"));

  dht.begin();  // Initialize the DHT sensor
}

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  // Print the humidity, temperature, and heat index values to the serial monitor
  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}





0 件のコメント:

コメントを投稿

XIAO SAMD21 - テーブル落下回避ロボットカー

以前製作したArduino nano制御とVL53L0X 距離センサによる落下回避ロボットカーをXIAO XIAO SAMD21に入替てテストしました。 ●同ブログ関連記事【 落下回避 ロボットカー Arduino VL53 】   動画