①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 から抜粋
【https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json】追加
①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"));
}
.png)
.png)
.png)
.png)
.png)
.png)
.png)
0 件のコメント:
コメントを投稿