レビューメディア「ジグソー」


Galileo開発ボード

Galileo開発ボード

周辺機器動作報告・相談所

個体差か!?相性か!?

認識が出来たSDカード、出来なかったカード。
公式サイトにはないけど、動作したシールド。
完全ではないけど、何となく動くシールド。

このパーツ動くの?このパーツ動いたよ!みんなで報告・相談!
  • 2014/02/28
  • はにゃさん
    つきさん

    mikalhart さんの LiquidCrytal ライブラリ
    https://github.com/mikalhart/galileo-LiquidCrystal/releases/
    の write4bits() は既に書き換えられています。
    LCDシールドを持っていないので検証できないのですが、もう少し早くなるような気がしなくもないです。

    void LiquidCrystal::write4bits(uint8_t value) {
    for (int i = 0; i < 4; i++) {
    /* No need to set pinMode every time a character is drawn
    pinMode(_data_pins[i], OUTPUT);
    */
    digitalWrite(_data_pins[i], (value >> i) & 0x01);
    }

    pulseEnable();
    }

    2014/03/06

  • つきさん
    はにゃ さん

    ありがとうございます。
    試してみました。
    倍速くらいにはなりました。
    だたし、そこ1か所の変更では表示しなくなります。
    多分、最初の送信の時にポート設定してあげなくてはいけないと思うので、、、
    ちょっと横着して、コマンド送信の時はポート設定するようにしました。
    比較の動画も置いておきました。

    2014/03/06

  • はにゃさん
    つきさん

    確認ありがとうございます。

    なお、LCDシールドではできませんが、 D2ピン,D3ピンに限定すれば、
    pinMode(...,OUTPUT_FAST);
    が使用できます。

    というのも、D2ピン,D3ピンは 多重化されていて、
    pinMode(...,OUTPUT) では I2C標準モード接続の Cypress I/O Port Expander、
    pinMode(...,OUTPUT_FAST) では SoC側 GPIOが接続されて高速出力されるのです。

    wiring_digital.c の pinMode関数をみると、
    OUTPUT_FASTが指定されると、
    hardware/arduino/x86/variants/galileo_fab_d/variant.cppの
    variantEnableFastGpio() をコールして、Muxを切り替えているようです。

    なお、INPUT_FAST は使うなという指示がfast_gpio_sc.c ソースコードにあります。

    ここまでは回路図他とソースを睨めっこして分かってたのですが、
    https://communities.intel.com/message/207904
    に、
    出力関数ごとに速度が示されていて
    digitalWrite() で 477kHz,
    fastGpioDigitalWrite() で 680kHz
    fastGpioDigitalWriteDestructive() で 2.93MHz
    の波形出力ができることがしめされています。

    2014/03/06

  • つきさん
    はにゃ さん

    情報ありがとうございます。
    シールドを自作する場合は接続が自由なので高速のピンが使えますね。
    既製品だと改造することになります。お手軽がウリのArduinoから離れていく、、、

    2014/03/06

  • つきさん
    グラフィック液晶 LCD4884 シールドの表示に成功しました。
    画面のクリアに非常に時間がかって動いているのかわからないくらいです。
    そんな時は、の埋める値(パターン)を変えてみましょう。
    void LCD4884::LCD_clear(void)


    AVR用の、タイマ割り込みを置き換えることと、フォントパターンを取ってくる関数(pgm_read_byte)の定義が胆でした。

    表示ができたのはいいですが、遅すぎて使えない状況です。システム構成を変更するか、


    への乗り換えも検討した方がよさそうです。

    2014/03/09

  • つきさん
    先週から嵌っている


    ですが、
    11: はにゃ さんのアドバイスと、ウェイトを外すことでかなり改善しました。
    改善前


    改善後

    2014/03/15

  • はにゃさん
    おお!だいぶ改善しましたね!
    よかったよかった!

    2014/03/15

  • ヒロ妨さん
    此方のモーターシールドは、裏面のVinショートジャンパーをカットして、別電源を接続して
    動作させたら、大丈夫でした。



    テスト用スケッチ

    #define PORT_DIR_A 12
    #define PORT_DIR_B 13

    #define PORT_PWM_A 3
    #define PORT_PWM_B 11

    #define PORT_BRAKE_A 9
    #define PORT_BRAKE_B 8

    #define PORT_CURRENTSENSE_A A0
    #define PORT_CURRENTSENSE_B A1
    void controlMotor(boolean motor_r_fwd,boolean motor_l_fwd,byte motor_r_power,byte motor_l_power);

    void setup()
    {
    // ポートの初期設定を行う
    pinMode(PORT_DIR_A,OUTPUT);
    pinMode(PORT_DIR_B,OUTPUT);
    pinMode(PORT_PWM_A,OUTPUT);
    pinMode(PORT_PWM_B,OUTPUT);
    pinMode(PORT_BRAKE_A,OUTPUT);
    pinMode(PORT_BRAKE_B,OUTPUT);

    digitalWrite(PORT_DIR_A,LOW);
    digitalWrite(PORT_DIR_B,LOW);
    digitalWrite(PORT_BRAKE_A,LOW);
    digitalWrite(PORT_BRAKE_B,LOW);
    analogWrite(PORT_PWM_A,0);
    analogWrite(PORT_PWM_B,0);
    }

    void loop()
    {
    // モーターを駆動
    controlMotor(true,true,255,255);
    // 3秒待つ
    delay(3000);
    // モーターを駆動
    controlMotor(false,false,255,255);
    // 3秒待つ
    delay(3000);
    }

    void controlMotor(boolean motor_r_fwd,boolean motor_l_fwd,byte motor_r_power,byte motor_l_power)
    {
    if(motor_r_power == 0){
    digitalWrite(PORT_BRAKE_A,HIGH);
    }
    else {
    digitalWrite(PORT_BRAKE_A,LOW);
    }
    if(motor_l_power == 0){
    digitalWrite(PORT_BRAKE_B,HIGH);
    }
    else {
    digitalWrite(PORT_BRAKE_B,LOW);
    }

    digitalWrite(PORT_DIR_A,motor_r_fwd == false ? HIGH : LOW);
    digitalWrite(PORT_DIR_B,motor_l_fwd == false ? HIGH : LOW);

    analogWrite(PORT_PWM_A,motor_r_power);
    analogWrite(PORT_PWM_B,motor_l_power);
    }

    2014/03/22

  • いぐなっちさん
    GROVEベースシールドVer1.3、
    GROVE 3軸加速度センサ(ADXL345版)

    特別なことは必要なく動きました。

    2014/03/29

  • いぐなっちさん
    CPU温度が70度を超えると、スケッチが強制終了します。
    そよ風程度でも風をあてるだけで、60度まで低下、安定動作します。
    ヒートシンク(2cm角)を取り付ければ、さらに冷え冷えで、43度まで下がりました。

    高負荷のスケッチを常時稼動させるなら、ヒートシンクとDCファンは欲しいですね。

    2014/04/03


ZIGSOW にログイン

ZIGSOW会員登録(無料)はこちらから