注意、いろいろ
- 過去ログを見よ!!!
- 3.1.3
- 時間あわせは、別
- 展示
結果
プログラム
//balloon_ds1307_1_M5StampS3_1
//インクルド
#include <Arduino.h>
#include <Wire.h>
#include <M5UnitGLASS2.h>
#include <M5Unified.h>
#include <Avatar.h>
//定義
using namespace m5avatar; //ネームスペース
Avatar avatar; //アバターの実体の定義
const char* lyrics[] = {"今何時","何時カナ","時間"};//ポインター配列
const int lyricsSize = sizeof(lyrics) / sizeof(char*);//配列の個数
int lyricsIdx = 0;//カウンター
//初期化
void setup(){
auto cfg=M5.config();
cfg.unit_glass2.pin_sda=13;
cfg.unit_glass2.pin_scl=15;
M5.begin(cfg);//M5の初期化
avatar.setScale(.45);
avatar.setPosition(-88-17,-96);
avatar.init();//アバターの初期化 (アバターは、バックグランドで動く)
//avatar.setSpeechFont(&fonts::lgfxJapanGothic_12);//日本語フォント
avatar.setSpeechFont(&fonts::lgfxJapanGothicP_16);//日本語フォント
delay(3000);//決め打ちなので、おかしかったら調整してね! wifiの待ち0.5*6
}//setup
//メインループ
void loop(){
//M5.update();
//if (M5.BtnA.wasPressed()){//ボタンが押された場合
//lyricsIdx++は、後で1プラスする
//余りを求める処理は、0から文字列のポインター配列サイズぶん繰り返す
//「l」に文字列のポインターが入る
const char* l = lyrics[lyricsIdx++ % lyricsSize];
avatar.setSpeechText(l); //テキストの表示
avatar.setExpression(Expression::Happy); //表情を変える
avatar.setMouthOpenRatio(0.7); //口を動かす
delay(200);//0.2秒待つ
avatar.setMouthOpenRatio(0); //口を閉じる
delay(2000);//1秒待つ
//時間
avatar.stop();
//時計の処理 ↓ここから
// レジスタのアドレスを先頭にする
Wire.beginTransmission(0x68);
Wire.write(0x00);
Wire.endTransmission();
delay(1);
// I2Cスレーブに8byteのレジスタデータを要求する
Wire.requestFrom(0x68, 8);
// 8byteのデータを取得する
char data_read[16] = {0x88, 0x88, 0x88}; //データバッファー
int ii = 0;
while (Wire.available()) { // 要求より短いデータが来る可能性あり
data_read[ii++] = Wire.read(); // 1バイトを受信
}//while
delay(1);
//表示変換する パック二進化十進を文字列にする
char cn1[16]; //桁
cn1[0] = '0' + (data_read[2] >> 4); //0 時 上位
cn1[1] = '0' + (data_read[2] & 0xf); //1 時 下位
cn1[2] = ':';
cn1[3] = '0' + (data_read[1] >> 4); //2 分 上位
cn1[4] = '0' + (data_read[1] & 0xf); //3 分 下位
cn1[5] = 0;
//時計の処理 ↑ここまで
avatar.start();
avatar.setSpeechText(cn1); //テキストの表示
avatar.setMouthOpenRatio(0.7); //口を動かす
delay(200);//0.2秒待つ
avatar.setMouthOpenRatio(0); //口を閉じる
//}//if
delay(4000);//3秒待つ
}//loop