//
表示中
モノづくり, Computer - コンピューター, Electronics - 電子工作, Music - 音楽

LPC1114から格安TFTを使う(続き)


前回の続きです。

LEDを点灯させるだけの単純なものを少し変更して、iPhoneからのメッセージ応じて動作を変えるようにしました。機能はLEDの点灯、液晶のバックライトの明るさ調整、液晶の背景色の変更。依然として単純ですけど・・・

2016-05-08 19.39.12

LPC1114側のプログラムの中からI2Cに関連する部分の抜粋です。(mbedオンラインコンパイラーでコンパイルしました)

#include "mbed.h"
#include "Adafruit_ST7735.h"
I2CSlave slave(dp5, dp27); // LPC1114 SDA=dp5, SCL=dp27
DigitalOut led1(LED1);
DigitalOut led2(LED2);
Adafruit_ST7735 tft(dp2, NC, dp6, dp24, dp26, dp25);
#define DEVICE_ADDR (0x20<<1)

Serial pc(USBTX, USBRX);
PwmOut bl(dp18);
int bgColor;
int textColor;

void drawString(char *str) {
  .....
  .....
}

void led1_on() {
  .....
  .....
}

void led2_on() {
  .....
  .....
}
#define LED_REG 0x31
#define BL_REG 0x32
#define COLOR_REG 0x33

#define BUFF_SIZE 20

uint8_t mode = 0x00;

int main() {
  char buff[BUFF_SIZE+1];
  char msg[] = "OK!";

  .....
  .....
  .....
  slave.address(DEVICE_ADDR);
  pc.printf("Initializing TFT\n\r");
  .....
  pc.printf("TFT initialized\n\r");

  // whileループの中がI2C通信処理
  while(1) {
    int i = slave.receive();
    switch(i) {
      case I2CSlave::ReadAddressed:
        slave.write(msg, strlen(msg)+1);
        break;
      case I2CSlave::WriteGeneral:
        slave.read(buff, BUFF_SIZE);
        pc.printf("Read General: %s\n\r", buff);
        break;
      case I2CSlave::WriteAddressed:
        slave.read(buff, BUFF_SIZE);
        pc.printf("Read Address: %s\n\r", buff);
        mode = buff[0];
        switch(mode) {
          case LED_REG:
            if(buff[1] == '0') {
              led1_on(); // LED1を点灯
            } else {
              led2_on(); // LED2を点灯
            }
            break;
          case BL_REG:
            float val = atof(&buff[1]);
            bl = val;  // バックライトの明るさを設定
            break;
          case COLOR_REG:
            bgColor = atoi(&buff[1]);
            tft.fillScreen(bgColor); // 背景色で塗りつぶし
            if(led1) {
              led1_on();
            } else {
              led2_on();
            }
            break;
          default:
            break;
        }
        break;
    }
    // 読み込みバッファをクリア
    for(int i = 0; i <= BUFF_SIZE; i++) { buff[i] = 0; }
  }
}

iPhone側のI2Cに関連する部分の抜粋です。

// LEDスイッチ
- (IBAction)led:(id)sender {
  UISwitch *sw = sender;
  uint8_t bytes[2] = {'1', sw.on ? '1' : '0'};
  [Konashi i2cStartCondition];
  [NSThread sleepForTimeInterval:0.01];
  [Konashi i2cWriteData:[NSData dataWithBytes:bytes length:2] 
                address:0x20];
  [NSThread sleepForTimeInterval:0.01];
  [Konashi i2cStopCondition];
  [NSThread sleepForTimeInterval:0.01];
}

// バックライトスライダー
- (IBAction)backlight:(id)sender {
  UISlider *slider = sender;
  char buff[10];
  buff[0] = 0x32;
  sprintf(&buff[1], "%.2f", slider.value);
  uint8_t len = strlen(buff);
  [Konashi i2cStartCondition];
  [NSThread sleepForTimeInterval:0.01];
  [Konashi i2cWriteData:[NSData dataWithBytes:buff length:len] 
                address:0x20];
  [NSThread sleepForTimeInterval:0.01];
  [Konashi i2cStopCondition];
  [NSThread sleepForTimeInterval:0.01];
}

// ColorPickerから色を選んだ時に呼ばれるメソッド
- (void) pickedColor:(UIColor *)color {
  uint16_t col = [color color565]; // UIColorのカテゴリメソッドを追加
  char buff[10];
  buff[0] = 0x33;
  sprintf(&buff[1], "%d", col);
  uint8_t len = strlen(buff);
  [Konashi i2cStartCondition];
  [NSThread sleepForTimeInterval:0.01];
  [Konashi i2cWriteData:[NSData dataWithBytes:buff length:len] 
                address:0x20];
  [NSThread sleepForTimeInterval:0.01];
  [Konashi i2cStopCondition];
  [NSThread sleepForTimeInterval:0.01];
}

面白いですね。

 

Koshianを2個追加購入しました。WICEDデベロッパーを入手できたので今度これのファームウエアを書いてみようと思います。楽しみです。

2016-05-08 18.56.42

 

仕上げに入れそうで入れないTelecasterタイプです。よ〜〜く見ると平滑でない部分があるので、真っ平らになるまで塗りと研ぎを繰り返してから仕上げ塗りです。

2016-05-08 18.11.55

 

kazz12211 について

Working as a OO programmer and enjoying music, bicycle and photography.

ディスカッション

コメントはまだありません。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

手仕事日記

評価

ブログ統計

  • 526,407 ヒット

カテゴリー

アーカイブ

カレンダー

2016年5月
« 4月   6月 »
1234567
891011121314
15161718192021
22232425262728
293031  
%d人のブロガーが「いいね」をつけました。