差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
arduino:grovebeginnerkit [2023/05/16 18:39] – baba | arduino:grovebeginnerkit [2023/05/30 11:48] – [8. Temperature & Humidity Sensor] baba | ||
---|---|---|---|
行 24: | 行 24: | ||
* https:// | * https:// | ||
- | ====== 入門 | + | ===== 入門 ===== |
以下は,grove beginner kit を利用するための超シンプルな導入を記載します.授業ではこちらのページを忘備録としています. | 以下は,grove beginner kit を利用するための超シンプルな導入を記載します.授業ではこちらのページを忘備録としています. | ||
{{: | {{: | ||
- | ===== 1. LED ===== | + | ==== 1. LED ==== |
< | < | ||
void setup() { | void setup() { | ||
行 41: | 行 41: | ||
} | } | ||
</ | </ | ||
- | ===== 2. Buzzer | + | ==== 2. Buzzer ==== |
圧電素子の構造:https:// | 圧電素子の構造:https:// | ||
< | < | ||
行 160: | 行 160: | ||
} | } | ||
</ | </ | ||
- | ===== 音階で音を鳴らしてみる | + | ==== 音階で音を鳴らしてみる ==== |
ON/ | ON/ | ||
行 220: | 行 220: | ||
} | } | ||
</ | </ | ||
- | ===== 余談 | + | ==== 余談 ==== |
鳴らしたいノート番号を指定することでその周波数を計算することができますが、その逆である「鳴らしたい周波数が決まっている場合、それはピアノの鍵盤でいうところのどの位置になるのか?」を計算するには、方程式をnについてとけば良いです。 | 鳴らしたいノート番号を指定することでその周波数を計算することができますが、その逆である「鳴らしたい周波数が決まっている場合、それはピアノの鍵盤でいうところのどの位置になるのか?」を計算するには、方程式をnについてとけば良いです。 | ||
行 293: | 行 293: | ||
</ | </ | ||
==== 6. Light ==== | ==== 6. Light ==== | ||
+ | < | ||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | void loop() { | ||
+ | int a = analogRead(6); | ||
+ | Serial.println(a); | ||
+ | delay(33); | ||
+ | } | ||
+ | </ | ||
==== 7. Sound ==== | ==== 7. Sound ==== | ||
+ | < | ||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | void loop() { | ||
+ | int a = analogRead(2); | ||
+ | Serial.println(a); | ||
+ | delay(33); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === FFT === | ||
+ | < | ||
+ | #include < | ||
+ | |||
+ | #define SAMPLES 64 // サンプル数(2の累乗数) | ||
+ | #define SAMPLING_FREQUENCY 1000 // サンプリング周波数 | ||
+ | |||
+ | |||
+ | unsigned int sampling_period_us; | ||
+ | unsigned long microseconds; | ||
+ | |||
+ | double vReal[SAMPLES]; | ||
+ | double vImag[SAMPLES]; | ||
+ | |||
+ | arduinoFFT FFT = arduinoFFT(); | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | sampling_period_us = round(1000000*(1.0/ | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | /* サンプリング */ | ||
+ | for(int i=0; i< | ||
+ | microseconds = micros(); | ||
+ | vReal[i] = analogRead(2); | ||
+ | vImag[i] = 0; | ||
+ | // 次のサンプリング時間まで待つ | ||
+ | while(micros() - microseconds < sampling_period_us){ | ||
+ | // wait | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /* FFT */ | ||
+ | FFT.Windowing(vReal, | ||
+ | FFT.Compute(vReal, | ||
+ | FFT.ComplexToMagnitude(vReal, | ||
+ | | ||
+ | double peak = FFT.MajorPeak(vReal, | ||
+ | |||
+ | /* 結果を出力 */ | ||
+ | Serial.println(peak); | ||
+ | |||
+ | // delay(1000); | ||
+ | } | ||
+ | |||
+ | </ | ||
==== 8. Temperature & Humidity Sensor ==== | ==== 8. Temperature & Humidity Sensor ==== | ||
+ | Grove Temperature And Humidity Sensor | ||
+ | < | ||
+ | // | ||
+ | #include " | ||
+ | #include < | ||
+ | #include < | ||
+ | #define DHTPIN 3 // what pin we're connected to | ||
+ | #define DHTTYPE DHT11 // DHT 11 | ||
+ | DHT dht(DHTPIN, DHTTYPE); | ||
+ | |||
+ | U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE); | ||
+ | |||
+ | void setup(void) { | ||
+ | Serial.begin(9600); | ||
+ | Serial.println(" | ||
+ | dht.begin(); | ||
+ | u8x8.begin(); | ||
+ | u8x8.setPowerSave(0); | ||
+ | u8x8.setFlipMode(1); | ||
+ | } | ||
+ | |||
+ | void loop(void) { | ||
+ | |||
+ | float temp, humi; | ||
+ | temp = dht.readTemperature(); | ||
+ | humi = dht.readHumidity(); | ||
+ | | ||
+ | u8x8.setFont(u8x8_font_chroma48medium8_r); | ||
+ | u8x8.setCursor(0, | ||
+ | u8x8.print(" | ||
+ | u8x8.print(temp); | ||
+ | u8x8.print(" | ||
+ | u8x8.setCursor(0, | ||
+ | u8x8.print(" | ||
+ | u8x8.print(humi); | ||
+ | u8x8.print(" | ||
+ | u8x8.refreshDisplay(); | ||
+ | delay(200); | ||
+ | } | ||
+ | </ | ||
==== 9. Air Pressure Sensor ==== | ==== 9. Air Pressure Sensor ==== | ||
+ | Barometer Sensor BMP280 を追加する | ||
+ | < | ||
+ | //Air pressure detection | ||
+ | #include " | ||
+ | #include < | ||
+ | BMP280 bmp280; | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | if (!bmp280.init()) { | ||
+ | Serial.println(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | float pressure; | ||
+ | |||
+ | //get and print temperatures | ||
+ | Serial.print(" | ||
+ | Serial.print(bmp280.getTemperature()); | ||
+ | Serial.println(" | ||
+ | |||
+ | //get and print atmospheric pressure data | ||
+ | Serial.print(" | ||
+ | Serial.print(pressure = bmp280.getPressure()); | ||
+ | Serial.println(" | ||
+ | |||
+ | //get and print altitude data | ||
+ | Serial.print(" | ||
+ | Serial.print(bmp280.calcAltitude(pressure)); | ||
+ | Serial.println(" | ||
+ | |||
+ | Serial.println(" | ||
+ | |||
+ | delay(1000); | ||
+ | } | ||
+ | </ | ||
==== 10. 3-Axis Accelerator ==== | ==== 10. 3-Axis Accelerator ==== | ||