Renesas Rulz - Japan
Renesas Rulz - Japan
  • User
    Join or sign in
  • Site
  • Search Japan.RenesasRulz.com
  • User
  • Renesas Rulz
  • FAQ
  • パートナー
  • 半導体セミナ
  • eラーニング
  • ヘルプ
  • More
  • Cancel
  • かふぇルネ
  • がじぇるね
  • English Community
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-ADZUKI 12/6 イベント用プログラム
  • Forums
  • Blog
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 GR-SAKURA

 GR-KURUMI

 GR-COTTON

 GR-CITRUS

 GR-PEACH

 GR-KAEDE

 GR-ADZUKI

 GR-LYCHEE

 GR-ROSE

 GR-MANGO(*)

 SNShield

 Web Compiler

 IDE for GR

 TOPPERS関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • Replies 3 replies
  • Subscribers 435 subscribers
  • Views 5017 views
  • Users 0 members are here
Options
  • Share
  • More
  • Cancel
Related Tags
  • auzuki
  • azuki
  • BASIC
  • GR-ADZUKI
  • GR-ADZUKI Node.js Johnny-Five
  • GR-ADZUKI S4A モーター
  • GR-ADZUKI USB
  • WDT
  • デジタルコンパス
  • リセット
Related

12/6 イベント用プログラム

鈴木
鈴木 over 2 years ago

がじぇるね鈴木です。

GR-ADZUKIをIoTLT勉強会でがじぇるね賞としてお持ちの方も多いハズ。

今回はクリスマスっぽくGR-ADZUKIとHC-SR04(超音波距離センサ)とシリアルLEDを使って近づくと色が変わる電子工作をしてみます。

次に、これらの部品をGR-ADZUKIに接続します

これで距離センサの接続は完了です。次にシリアルLEDを接続します

下記のプログラムを

http://gadget.renesas.com/ja/product/adzuki_sp2.html

を参考にしてGR-ADUZKIで実行してください。

0624.GR-ADZUKI_HCSR04_tapeLed.txt
#include <Arduino.h>            

#define DI()      asm("di")
#define EI()      asm("ei")

// 端子         マイコンリソース
// D2           P3 テープLEDの制御  0xFFF03 アドレス
#define TAPELED 2
#define LEDR    17
#define LEDG    51
#define LEDB    50

//              テープLEDの信号を制御
#define TAPELED_ON      (*(volatile unsigned char *)0xFFF03) = 1
#define TAPELED_OFF     (*(volatile unsigned char *)0xFFF03) = 0

//              テープLEDの時間待ち処理
#define TAPELED_ON_WAIT1   dummy2++; dummy++
#define TAPELED_ON_WAIT0   for ( dummy = 0; dummy<0; dummy++ ) { ; }; dummy1++
#define TAPELED_OFF_WAIT1  for ( dummy = 0; dummy<0; dummy++ ) { ; }; dummy1++
#define TAPELED_OFF_WAIT0  for ( dummy = 0; dummy<1; dummy++ ) { ; }; dummy1++
#define TAPELED_WAIT       for ( dummy2 = 0; dummy2<100; dummy2++ ) { ; }

#define LEDMAX      24          // テープLEDに接続されているLEDの数
#define LEDDATAMAX  160         // テープLEDのカラーデータ数

void SetLed( void );            //  テープLEDにデータを送る関数

// HC-SR04 距離計用の変数
int Trig = 12;
int Echo = 9;
int Duration;
float Distance;

//  テープLED LEDMAX分のバッファ
uint8_t  gtLedData[ LEDMAX ][ 3 ] =
{
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,

     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,

     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } 
#if 0
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,

     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,

     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,

     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } 
#endif
};


//  テープLED 色を変化させるためのデータテーブル 160個分
uint8_t  gtLedColorData[ LEDDATAMAX ][ 3 ] =
{   //  G       R       B
     { 0x00,   0x00,   0x00 } ,     //  1
     { 0x00,   0x10,   0x00 } ,
     { 0x00,   0x20,   0x00 } ,
     { 0x00,   0x30,   0x00 } ,
     { 0x00,   0x40,   0x00 } ,
     { 0x00,   0x50,   0x00 } ,
     { 0x00,   0x60,   0x00 } ,
     { 0x08,   0x70,   0x00 } ,
     { 0x00,   0x80,   0x00 } ,
     { 0x08,   0x90,   0x00 } ,
     { 0x00,   0xa0,   0x00 } ,
     { 0x08,   0xb0,   0x00 } ,
     { 0x00,   0xc0,   0x00 } ,
     { 0x08,   0xd0,   0x00 } ,
     { 0x00,   0xe0,   0x10 } ,
     { 0x00,   0xf0,   0x20 } ,

     { 0x00,   0x00,   0x30 } ,     // 2
     { 0x00,   0x00,   0x40 } ,
     { 0x00,   0x00,   0x50 } ,
     { 0x00,   0x00,   0x60 } ,
     { 0x00,   0x00,   0x70 } ,
     { 0x00,   0x00,   0x80 } ,
     { 0x00,   0x00,   0x90 } ,
     { 0x00,   0x00,   0xa0 } ,
     { 0x00,   0x00,   0xb0 } ,
     { 0x00,   0x00,   0xc0 } ,
     { 0x00,   0x00,   0xd0 } ,
     { 0x00,   0x00,   0xe0 } ,
     { 0x10,   0x00,   0x10 } ,
     { 0x20,   0x00,   0x20 } ,
     { 0x30,   0x00,   0x30 } ,
     { 0x40,   0x00,   0x40 } ,

     { 0x50,   0x00,   0x50 } ,     // 3
     { 0x60,   0x00,   0x60 } ,
     { 0x70,   0x00,   0x70 } ,
     { 0x80,   0x00,   0x80 } ,
     { 0x90,   0x00,   0x90 } ,
     { 0xa0,   0x00,   0xa0 } ,
     { 0xb0,   0x00,   0xb0 } ,
     { 0xc0,   0x00,   0xc0 } ,
     { 0xd0,   0x00,   0xd0 } ,
     { 0xe0,   0x00,   0xe0 } ,
     { 0x00,   0x10,   0x10 } ,
     { 0x00,   0x20,   0x20 } ,
     { 0x00,   0x30,   0x30 } ,
     { 0x00,   0x40,   0x40 } ,
     { 0x00,   0x50,   0x50 } ,
     { 0x00,   0x60,   0x60 } ,

     { 0x00,   0x70,   0x70 } ,     // 4
     { 0x00,   0x80,   0x80 } ,
     { 0x00,   0x90,   0x90 } ,
     { 0x00,   0xa0,   0xa0 } ,
     { 0x00,   0xb0,   0xb0 } ,
     { 0x00,   0xc0,   0xc0 } ,
     { 0x00,   0xd0,   0xd0 } ,
     { 0x00,   0xe0,   0xe0 } ,
     { 0x10,   0x10,   0x00 } ,
     { 0x20,   0x20,   0x00 } ,
     { 0x30,   0x30,   0x00 } ,
     { 0x40,   0x40,   0x00 } ,
     { 0x50,   0x50,   0x00 } ,
     { 0x60,   0x60,   0x00 } ,
     { 0x70,   0x70,   0x00 } ,
     { 0x80,   0x80,   0x00 } ,

     { 0x90,   0x90,   0x00 } ,     // 5
     { 0xa0,   0xa0,   0x00 } ,
     { 0xb0,   0xb0,   0x00 } ,
     { 0xc0,   0xc0,   0x00 } ,
     { 0xe0,   0xe0,   0x00 } ,
     { 0xf0,   0xf0,   0x00 } ,
     { 0xe0,   0xb0,   0x08 } ,
     { 0xd0,   0x90,   0x10 } ,
     { 0xc0,   0x80,   0x18 } ,
     { 0xb8,   0x70,   0x20 } ,
     { 0xb0,   0x60,   0x30 } ,
     { 0xa8,   0x58,   0x40 } ,
     { 0xa0,   0x50,   0x38 } ,
     { 0x98,   0x48,   0x30 } ,
     { 0x90,   0x40,   0x20 } ,
     { 0x90,   0x38,   0x10 } ,

     { 0x88,   0x30,   0x20 } ,     // 6
     { 0x80,   0x28,   0x28 } ,
     { 0x78,   0x20,   0x30 } ,
     { 0x70,   0x18,   0x38 } ,
     { 0x68,   0x10,   0x40 } ,
     { 0x60,   0x20,   0x48 } ,
     { 0x58,   0x30,   0x50 } ,
     { 0x50,   0x40,   0x60 } ,
     { 0x48,   0x50,   0x68 } ,
     { 0x40,   0x60,   0x70 } ,
     { 0x50,   0x70,   0x78 } ,
     { 0x48,   0x80,   0x80 } ,
     { 0x40,   0x90,   0x88 } ,
     { 0x30,   0xa0,   0x90 } ,
     { 0x20,   0xb0,   0xa0 } ,
     { 0x10,   0xc0,   0xb0 } ,

     { 0x20,   0xd0,   0xc0 } ,     // 7
     { 0x30,   0xe0,   0xd0 } ,
     { 0x40,   0xff,   0xe0 } ,
     { 0x50,   0x90,   0xf0 } ,
     { 0x60,   0x80,   0x80 } ,
     { 0x70,   0x78,   0x78 } ,
     { 0x80,   0x70,   0x70 } ,
     { 0x90,   0x68,   0x68 } ,
     { 0xa0,   0x60,   0x60 } ,
     { 0xb0,   0x58,   0x58 } ,
     { 0xc0,   0x50,   0x50 } ,
     { 0xa0,   0x48,   0x48 } ,
     { 0x80,   0x40,   0x40 } ,
     { 0x60,   0x30,   0x30 } ,

     { 0x4f,   0x20,   0x20 } ,     // 8
     { 0x20,   0x10,   0x10 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x08,   0x08,   0x08 } ,
     { 0x10,   0x10,   0x10 } ,
     { 0x18,   0x18,   0x18 } ,
     { 0x20,   0x20,   0x20 } ,
     { 0x28,   0x28,   0x28 } ,
     { 0x30,   0x30,   0x30 } ,
     { 0x38,   0x38,   0x38 } ,
     { 0x40,   0x40,   0x40 } ,
     { 0x50,   0x50,   0x50 } ,
     { 0x60,   0x60,   0x60 } ,
     { 0x70,   0x70,   0x70 } ,
     { 0x80,   0x80,   0x80 } ,
     { 0x90,   0x90,   0x90 } ,

     { 0xb0,   0xb0,   0xb0 } ,     // 9
     { 0xe0,   0xe0,   0xe0 } ,
     { 0xff,   0xff,   0xff } ,
     { 0xff,   0xff,   0xff } ,
     { 0xe0,   0xe0,   0xe0 } ,
     { 0xd0,   0xd0,   0xd0 } ,
     { 0xc0,   0xc0,   0xc0 } ,
     { 0xb0,   0xb0,   0xb0 } ,
     { 0xa8,   0xa8,   0xa8 } ,
     { 0xa0,   0xa0,   0xa0 } ,
     { 0x98,   0x98,   0x98 } ,
     { 0x90,   0x90,   0x90 } ,
     { 0x88,   0x88,   0x88 } ,
     { 0x80,   0x80,   0x80 } ,
     { 0x78,   0x78,   0x78 } ,
                    
     { 0x70,   0x70,   0x70 } ,     // 10
     { 0x68,   0x68,   0x68 } ,
     { 0x60,   0x60,   0x60 } ,
     { 0x58,   0x58,   0x58 } ,
     { 0x50,   0x50,   0x50 } ,
     { 0x48,   0x48,   0x48 } ,
     { 0x40,   0x40,   0x40 } ,
     { 0x38,   0x38,   0x38 } ,
     { 0x30,   0x30,   0x30 } ,
     { 0x28,   0x28,   0x28 } ,
     { 0x20,   0x20,   0x20 } ,
     { 0x18,   0x18,   0x18 } ,
     { 0x10,   0x10,   0x10 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } ,
     { 0x00,   0x00,   0x00 } 
};


// the setup routine runs once when you press reset:
void setup() 
{                
    pinMode( Trig,OUTPUT );
    pinMode( Echo,INPUT );

    pinMode( LEDR, OUTPUT );
    pinMode( LEDG, OUTPUT );
    pinMode( LEDB, OUTPUT );
    digitalWrite( LEDR, HIGH );
    digitalWrite( LEDG, HIGH );
    digitalWrite( LEDB, HIGH );

    pinMode( TAPELED, OUTPUT );
    Serial.begin( 9600 );             // シリアルモニタの通信速度
}

// the loop routine runs over and over again forever:
void loop() 
{
    uint8_t datg, datr, datb;
    uint16_t datadrs, distance_u;    
    char msg[128];

    // 距離を計測
    digitalWrite( Trig, LOW );
    delayMicroseconds( 1 );
    digitalWrite( Trig, HIGH );
    delayMicroseconds( 11 );
    digitalWrite( Trig, LOW );
    Duration = pulseIn( Echo, HIGH );
    if ( Duration > 0 ) 
    {
        Distance = Duration/2;
        Distance = Distance*340*100/1000000; // ultrasonic speed is 340m/s = 34000cm/s = 0.034cm/us 
        distance_u = (uint16_t)Distance;
        sprintf( msg," %d us, %f cm,  %d cm", Duration, Distance, distance_u );
        Serial.println( msg );
    }

    if ( distance_u > 100 )
    { // 距離が100cm以上なら LEDを消灯する
        datadrs = 0;
    }
    else if ( distance_u < 20 )
    { // 距離が20cm以下なら警告LED色とする
        datadrs = 15;
    }
    else
    { // それ以外の距離は、距離に応じたデータを送出
        datadrs = distance_u;
    }

    datg = gtLedColorData[ datadrs ][ 0 ];
    gtLedData[ 0 ][ 0 ] = datg;
    
    datr = gtLedColorData[ datadrs ][ 1 ];
    gtLedData[ 0 ][ 1 ] = datr;
    
    datb = gtLedColorData[ datadrs ][ 2 ];
    gtLedData[ 0 ][ 2 ] = datb;

    SetLed();
    delay( 100 );
}


//  テープLEDにデータを送る
void SetLed( void )
{
    uint8_t datg, datr, datb, ledloop;
    volatile uint8_t dummy;
    volatile uint16_t dummy1;
    volatile uint32_t dummy2;

    // 割り込みを禁止して、データ送信がずれないようにする
    DI();

    for ( ledloop = 0; ledloop < LEDMAX; ledloop++ )
    {
        datg = gtLedData[ ledloop ][ 0 ];
        datr = gtLedData[ ledloop ][ 1 ];
        datb = gtLedData[ ledloop ][ 2 ];
    
        // 緑LED
        if ( datg & 0x80 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datg & 0x40 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datg & 0x20 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datg & 0x10 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datg & 0x08 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datg & 0x04 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datg & 0x02 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datg & 0x01 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
    
        // 赤LED
        if ( datr & 0x80 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datr & 0x40 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datr & 0x20 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datr & 0x10 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datr & 0x08 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datr & 0x04 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datr & 0x02 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datr & 0x01 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
 
   
        // 青LED
        if ( datb & 0x80 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datb & 0x40 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datb & 0x20 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datb & 0x10 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datb & 0x08 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datb & 0x04 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datb & 0x02 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    
        if ( datb & 0x01 )
        {   // on data send
            TAPELED_ON;
            TAPELED_ON_WAIT1;
            TAPELED_OFF;
            TAPELED_OFF_WAIT1;
        }
        else
        {   // off data send
            TAPELED_ON;
            TAPELED_ON_WAIT0;
            TAPELED_OFF;
            TAPELED_OFF_WAIT0;
        }
    }

    // テープLEDのバッファをずらして、流れる表示にする
    for ( ledloop = LEDMAX - 1; ledloop > 0; ledloop-- )
    {
        datg = gtLedData[ ledloop - 1 ][ 0 ];
        gtLedData[ ledloop ][ 0 ] = datg;

        datr = gtLedData[ ledloop - 1 ][ 1 ];
        gtLedData[ ledloop ][ 1 ] = datr;

        datb = gtLedData[ ledloop - 1 ][ 2 ];
        gtLedData[ ledloop ][ 2 ] = datb;
    }

    EI();
}

こんな動作になるはずです。

プログラムの解説です。

GR-ADZUKIは、5V出力があるので、5V用のセンサや、5V駆動のLEDがコントロールしやすいです。(サーボも)

ちょっとした工作ですが、光り物はわかりやすいのでLチカの次のステップにお勧めです。初心者の方は、IoTLT勉強会で声をかけてください。このキットを持っているかもしれません。

 シリアルLEDをUARTで制御することが多いと思いますが、ここではベタに波形を制御しています。このような制御をしておくと、どんな信号入力でも調整可能です。32MHzで動作するマイコンなら400nsぐらいの信号は制御可能です。こんな制御ができるのもGR-ADZUKIの特長の一つです。

 最後にIoTなのに"Internet"の部分がないと思われた方。すみません、近日中にアップデートする予定です!

  • Reply
  • Cancel
  • Cancel
  • @chobichan
    @chobichan over 2 years ago
    動画も是非!
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • 鈴木
    鈴木 over 2 years ago in reply to @chobichan

    お待たせしました。動画です。

    Click here to play this video

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • 鈴木
    鈴木 over 1 year ago in reply to 鈴木

    LEDによっては、動かないようです。

    その際は、このコードを使ってください

     

    GR_ADZUKI_HC-SR04_TapeLED.txt
    #include <Arduino.h>             // webコンパイラを使う場合はコメントにする
    
    #define DI()      asm("di")
    #define EI()      asm("ei")
    
    // 端子         マイコンリソース
    // D2           P3 テープLEDの制御  0xFFF03 アドレス
    #define TAPELED 2
    #define VOLUME  A0
    
    #define LEDR    17
    #define LEDG    51
    #define LEDB    50
    
    //              テープLEDの信号を制御
    #define TAPELED_ON      (*(volatile unsigned char *)0xFFF03) = 1
    #define TAPELED_OFF     (*(volatile unsigned char *)0xFFF03) = 0
    
    //              テープLEDの時間待ち処理
    #if 1
    #define TAPELED_ON_WAIT1   dummy2++; dummy++; dummy1++
    #define TAPELED_ON_WAIT0   for ( dummy = 0; dummy<0; dummy++ ) { ; }; dummy1++
    #define TAPELED_OFF_WAIT1  for ( dummy = 0; dummy<0; dummy++ ) { ; }; dummy1++
    #define TAPELED_OFF_WAIT0  for ( dummy = 0; dummy<1; dummy++ ) { ; }; dummy1++
    #else
    #define TAPELED_ON_WAIT1   dummy2++; dummy++
    #define TAPELED_ON_WAIT0   for ( dummy = 0; dummy<0; dummy++ ) { ; }; dummy1++
    #define TAPELED_OFF_WAIT1  for ( dummy = 0; dummy<0; dummy++ ) { ; }; dummy1++
    #define TAPELED_OFF_WAIT0  for ( dummy = 0; dummy<1; dummy++ ) { ; }; dummy1++
    #endif
    #define TAPELED_WAIT       for ( dummy2 = 0; dummy2<50; dummy2++ ) { ; }
    
    #define LEDDISTANCE 40          // テープLEDを時計モードにするA/D値
    #define LEDMAX      16          // テープLEDに接続されているLEDの数
    #define LEDDATAMAX  160         // テープLEDのカラーデータ数
    
    
    void SetLed( void );            //  テープLEDにデータを送る関数
    
    
    int gAd0value;
    
    // HC-SR04 距離計用の変数
    int Trig = 12;
    int Echo = 9;
    int Duration;
    float Distance;
    
    //  テープLED LEDMAX分のバッファ
    uint8_t  gtLedData[ LEDMAX ][ 3 ] =
    {
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
    
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } 
    #if 0
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
    
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
    
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
    
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
    
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } 
    #endif
    };
    
    
    //  テープLED 色を変化させるためのデータテーブル 160個分
    uint8_t  gtLedColorData[ LEDDATAMAX ][ 3 ] =
    {   //  G       R       B
         { 0x00,   0x00,   0x00 } ,     //  1
         { 0x00,   0x10,   0x00 } ,
         { 0x00,   0x20,   0x00 } ,
         { 0x00,   0x30,   0x00 } ,
         { 0x00,   0x40,   0x00 } ,
         { 0x00,   0x50,   0x00 } ,
         { 0x00,   0x60,   0x00 } ,
         { 0x08,   0x70,   0x00 } ,
         { 0x00,   0x80,   0x00 } ,
         { 0x08,   0x90,   0x00 } ,
         { 0x00,   0xa0,   0x00 } ,
         { 0x08,   0xb0,   0x00 } ,
         { 0x00,   0xc0,   0x00 } ,
         { 0x08,   0xd0,   0x00 } ,
         { 0x00,   0xe0,   0x10 } ,
         { 0x00,   0xf0,   0x20 } ,
    
         { 0x00,   0x00,   0x30 } ,     // 2
         { 0x00,   0x00,   0x40 } ,
         { 0x00,   0x00,   0x50 } ,
         { 0x00,   0x00,   0x60 } ,
         { 0x00,   0x00,   0x70 } ,
         { 0x00,   0x00,   0x80 } ,
         { 0x00,   0x00,   0x90 } ,
         { 0x00,   0x00,   0xa0 } ,
         { 0x00,   0x00,   0xb0 } ,
         { 0x00,   0x00,   0xc0 } ,
         { 0x00,   0x00,   0xd0 } ,
         { 0x00,   0x00,   0xe0 } ,
         { 0x10,   0x00,   0x10 } ,
         { 0x20,   0x00,   0x20 } ,
         { 0x30,   0x00,   0x30 } ,
         { 0x40,   0x00,   0x40 } ,
    
         { 0x50,   0x00,   0x50 } ,     // 3
         { 0x60,   0x00,   0x60 } ,
         { 0x70,   0x00,   0x70 } ,
         { 0x80,   0x00,   0x80 } ,
         { 0x90,   0x00,   0x90 } ,
         { 0xa0,   0x00,   0xa0 } ,
         { 0xb0,   0x00,   0xb0 } ,
         { 0xc0,   0x00,   0xc0 } ,
         { 0xd0,   0x00,   0xd0 } ,
         { 0xe0,   0x00,   0xe0 } ,
         { 0x00,   0x10,   0x10 } ,
         { 0x00,   0x20,   0x20 } ,
         { 0x00,   0x30,   0x30 } ,
         { 0x00,   0x40,   0x40 } ,
         { 0x00,   0x50,   0x50 } ,
         { 0x00,   0x60,   0x60 } ,
    
         { 0x00,   0x70,   0x70 } ,     // 4
         { 0x00,   0x80,   0x80 } ,
         { 0x00,   0x90,   0x90 } ,
         { 0x00,   0xa0,   0xa0 } ,
         { 0x00,   0xb0,   0xb0 } ,
         { 0x00,   0xc0,   0xc0 } ,
         { 0x00,   0xd0,   0xd0 } ,
         { 0x00,   0xe0,   0xe0 } ,
         { 0x10,   0x10,   0x00 } ,
         { 0x20,   0x20,   0x00 } ,
         { 0x30,   0x30,   0x00 } ,
         { 0x40,   0x40,   0x00 } ,
         { 0x50,   0x50,   0x00 } ,
         { 0x60,   0x60,   0x00 } ,
         { 0x70,   0x70,   0x00 } ,
         { 0x80,   0x80,   0x00 } ,
    
         { 0x90,   0x90,   0x00 } ,     // 5
         { 0xa0,   0xa0,   0x00 } ,
         { 0xb0,   0xb0,   0x00 } ,
         { 0xc0,   0xc0,   0x00 } ,
         { 0xe0,   0xe0,   0x00 } ,
         { 0xf0,   0xf0,   0x00 } ,
         { 0xe0,   0xb0,   0x08 } ,
         { 0xd0,   0x90,   0x10 } ,
         { 0xc0,   0x80,   0x18 } ,
         { 0xb8,   0x70,   0x20 } ,
         { 0xb0,   0x60,   0x30 } ,
         { 0xa8,   0x58,   0x40 } ,
         { 0xa0,   0x50,   0x38 } ,
         { 0x98,   0x48,   0x30 } ,
         { 0x90,   0x40,   0x20 } ,
         { 0x90,   0x38,   0x10 } ,
    
         { 0x88,   0x30,   0x20 } ,     // 6
         { 0x80,   0x28,   0x28 } ,
         { 0x78,   0x20,   0x30 } ,
         { 0x70,   0x18,   0x38 } ,
         { 0x68,   0x10,   0x40 } ,
         { 0x60,   0x20,   0x48 } ,
         { 0x58,   0x30,   0x50 } ,
         { 0x50,   0x40,   0x60 } ,
         { 0x48,   0x50,   0x68 } ,
         { 0x40,   0x60,   0x70 } ,
         { 0x50,   0x70,   0x78 } ,
         { 0x48,   0x80,   0x80 } ,
         { 0x40,   0x90,   0x88 } ,
         { 0x30,   0xa0,   0x90 } ,
         { 0x20,   0xb0,   0xa0 } ,
         { 0x10,   0xc0,   0xb0 } ,
    
         { 0x20,   0xd0,   0xc0 } ,     // 7
         { 0x30,   0xe0,   0xd0 } ,
         { 0x40,   0xff,   0xe0 } ,
         { 0x50,   0x90,   0xf0 } ,
         { 0x60,   0x80,   0x80 } ,
         { 0x70,   0x78,   0x78 } ,
         { 0x80,   0x70,   0x70 } ,
         { 0x90,   0x68,   0x68 } ,
         { 0xa0,   0x60,   0x60 } ,
         { 0xb0,   0x58,   0x58 } ,
         { 0xc0,   0x50,   0x50 } ,
         { 0xa0,   0x48,   0x48 } ,
         { 0x80,   0x40,   0x40 } ,
         { 0x60,   0x30,   0x30 } ,
    
         { 0x4f,   0x20,   0x20 } ,     // 8
         { 0x20,   0x10,   0x10 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x08,   0x08,   0x08 } ,
         { 0x10,   0x10,   0x10 } ,
         { 0x18,   0x18,   0x18 } ,
         { 0x20,   0x20,   0x20 } ,
         { 0x28,   0x28,   0x28 } ,
         { 0x30,   0x30,   0x30 } ,
         { 0x38,   0x38,   0x38 } ,
         { 0x40,   0x40,   0x40 } ,
         { 0x50,   0x50,   0x50 } ,
         { 0x60,   0x60,   0x60 } ,
         { 0x70,   0x70,   0x70 } ,
         { 0x80,   0x80,   0x80 } ,
         { 0x90,   0x90,   0x90 } ,
    
         { 0xb0,   0xb0,   0xb0 } ,     // 9
         { 0xe0,   0xe0,   0xe0 } ,
         { 0xff,   0xff,   0xff } ,
         { 0xff,   0xff,   0xff } ,
         { 0xe0,   0xe0,   0xe0 } ,
         { 0xd0,   0xd0,   0xd0 } ,
         { 0xc0,   0xc0,   0xc0 } ,
         { 0xb0,   0xb0,   0xb0 } ,
         { 0xa8,   0xa8,   0xa8 } ,
         { 0xa0,   0xa0,   0xa0 } ,
         { 0x98,   0x98,   0x98 } ,
         { 0x90,   0x90,   0x90 } ,
         { 0x88,   0x88,   0x88 } ,
         { 0x80,   0x80,   0x80 } ,
         { 0x78,   0x78,   0x78 } ,
                        
         { 0x70,   0x70,   0x70 } ,     // 10
         { 0x68,   0x68,   0x68 } ,
         { 0x60,   0x60,   0x60 } ,
         { 0x58,   0x58,   0x58 } ,
         { 0x50,   0x50,   0x50 } ,
         { 0x48,   0x48,   0x48 } ,
         { 0x40,   0x40,   0x40 } ,
         { 0x38,   0x38,   0x38 } ,
         { 0x30,   0x30,   0x30 } ,
         { 0x28,   0x28,   0x28 } ,
         { 0x20,   0x20,   0x20 } ,
         { 0x18,   0x18,   0x18 } ,
         { 0x10,   0x10,   0x10 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } ,
         { 0x00,   0x00,   0x00 } 
    };
    
    
    // the setup routine runs once when you press reset:
    void setup() 
    {                
        pinMode( Trig,OUTPUT );
        pinMode( Echo,INPUT );
    
        pinMode( LEDR, OUTPUT );
        pinMode( LEDG, OUTPUT );
        pinMode( LEDB, OUTPUT );
        digitalWrite( LEDR, HIGH );
        digitalWrite( LEDG, HIGH );
        digitalWrite( LEDB, HIGH );
    
        pinMode( TAPELED, OUTPUT );
        Serial.begin( 9600 );             // シリアルモニタの通信速度
    }
    
    // the loop routine runs over and over again forever:
    void loop() 
    {
        uint8_t datg, datr, datb;
        uint16_t datadrs, distance_u;    
        char msg[128];
    
        // 距離を計測
        digitalWrite( Trig, LOW );
        delayMicroseconds( 1 );
        digitalWrite( Trig, HIGH );
        delayMicroseconds( 11 );
        digitalWrite( Trig, LOW );
        Duration = pulseIn( Echo, HIGH );
        if ( Duration > 0 ) 
        {
            Distance = Duration/2;
            Distance = Distance*340*100/1000000; // ultrasonic speed is 340m/s = 34000cm/s = 0.034cm/us 
            distance_u = (uint16_t)Distance;
            sprintf( msg," %d us, %f cm,  %d cm", Duration, Distance, distance_u );
            Serial.println( msg );
        }
    
        if ( distance_u > 100 )
        { // 距離が100cm以上なら LEDを消灯する
            datadrs = 0;
        }
        else if ( distance_u < 20 )
        { // 距離が20cm以下なら警告LED色とする
            datadrs = 15;
        }
        else
        { // それ以外の距離は、距離に応じたデータを送出
            datadrs = distance_u;
        }
    
        datg = gtLedColorData[ datadrs ][ 0 ];
        gtLedData[ 0 ][ 0 ] = datg;
        
        datr = gtLedColorData[ datadrs ][ 1 ];
        gtLedData[ 0 ][ 1 ] = datr;
        
        datb = gtLedColorData[ datadrs ][ 2 ];
        gtLedData[ 0 ][ 2 ] = datb;
    
        SetLed();
        delay( 100 );
    }
    
    
    //  テープLEDにデータを送る
    void SetLed( void )
    {
        uint8_t datg, datr, datb, ledloop;
        volatile uint8_t dummy;
        volatile uint16_t dummy1;
        volatile uint32_t dummy2;
    
        // 割り込みを禁止して、データ送信がずれないようにする
        DI();
    
        for ( ledloop = 0; ledloop < LEDMAX; ledloop++ )
        {
            datg = gtLedData[ ledloop ][ 0 ];
            datr = gtLedData[ ledloop ][ 1 ];
            datb = gtLedData[ ledloop ][ 2 ];
        
            // 緑LED
            if ( datg & 0x80 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datg & 0x40 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datg & 0x20 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datg & 0x10 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datg & 0x08 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datg & 0x04 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datg & 0x02 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datg & 0x01 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
        
            // 赤LED
            if ( datr & 0x80 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datr & 0x40 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datr & 0x20 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datr & 0x10 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datr & 0x08 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datr & 0x04 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datr & 0x02 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datr & 0x01 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
     
       
            // 青LED
            if ( datb & 0x80 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datb & 0x40 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datb & 0x20 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datb & 0x10 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datb & 0x08 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datb & 0x04 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datb & 0x02 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        
            if ( datb & 0x01 )
            {   // on data send
                TAPELED_ON;
                TAPELED_ON_WAIT1;
                TAPELED_OFF;
                TAPELED_OFF_WAIT1;
            }
            else
            {   // off data send
                TAPELED_ON;
                TAPELED_ON_WAIT0;
                TAPELED_OFF;
                TAPELED_OFF_WAIT0;
            }
        }
    
        // テープLEDのバッファをずらして、流れる表示にする
        for ( ledloop = LEDMAX - 1; ledloop > 0; ledloop-- )
        {
            datg = gtLedData[ ledloop - 1 ][ 0 ];
            gtLedData[ ledloop ][ 0 ] = datg;
    
            datr = gtLedData[ ledloop - 1 ][ 1 ];
            gtLedData[ ledloop ][ 1 ] = datr;
    
            datb = gtLedData[ ledloop - 1 ][ 2 ];
            gtLedData[ ledloop ][ 2 ] = datb;
        }
    
        EI();
    }
    
    
    

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2020 Renesas Electronics Corporation. All rights reserved.