ヒートガン 1800W

ヒートガン 1800W 強弱2段階切り替え可能 アタッチメント付き


熱収縮チューブ 等に (利用無料)


利用してみたい方、お気軽にご連絡ください。
お問い合わせ

レーザーカッターで簡単にできるフェルトマスコット

おもちゃ病院の仲間が持っていた型紙付きのアンパンマン雑誌を見て、これはレーザーカッターの応用にちょうど良いと思い、早速作ってみました。


型紙をスキャナーで取り込み、ちょっと画像処理して、フェルトの色ごとに画像を分解します。

材料は、\100ショップで手に入れた、粘着タイプの「シールフェルト」です。
90x90の大きさで10色(10枚)入っていました。

レーザーカッターでカットの終わったシールフェルトを、貼り重ねるだけで、簡単に出来上がるので、小さい子供たちにはちょうど良いですね。

ご覧の通りの出来栄えです。(色の選び方は、私のセンスがいまいちですが・・・)



涵養塾のレーザーカッターは、半分自作で、10Wの半導体レーザーを使用しており、レーザー彫刻はもちろん、3mm程度のMDF木材、アクリル板(黒)などの切断まで可能です。

どうぞ、お試しください。


チャレンジしてみたい方、お気軽にご連絡ください。
お問い合わせ

HackBerry 電動義手 電子部品、金属部品キット

HackBerry 電動義手 電子部品、金属部品キット

HackBerry で使う電子部品と金属部品をキットにしました。


プリント基板は右手用(白)と左手用(茶色)があります。 どちらかをご指定下さい。

部品表は下記「涵養塾在庫表」の「HACKキット部品表」をご覧ください。https://docs.google.com/spreadsheets/d/1QE58LmNZpJyXpU6QLwH1ASy_kHTpAW_pjGs5_zJI8yI/pubhtml?gid=50258853&single=true

バッテリーとセンサーは含まれていません。別途ご用意ください。

価格 ¥9,500円(税込み 送料別) オンラインショップ


チャレンジしてみたい方、お気軽にご連絡ください。
お問い合わせ

スマートカーキット  CHUM ESP-Toy(esp8266) と Scratch Mesh

スクラッチ(ピョンキー)を使ったロボットプログラミングに最適のスマートカーキット 2種
ESP-Toyとセットでロボットプログラムの入門として最適です。

・3Dプリンターで作った、LEGO規格サイズのスマートカーキット
Smart Car Kit-LEGO_Forn_Factor


・アクリルベースの大型タイヤモデル
  Smart Car Kit-Acryl_Base
(超音波センサーはオプション)

ESP-Toyとセットで ¥3,000円(税込み 送料別)


ESP-Toyには、WiFi-APモードでScratch(Pyonkee)のMesh(遠隔センサー機能)対応のファームウェアが準備されています。

参考リンク
ITPRO 簡単だけど奥が深い!Scratchプログラミングの魅力
Mesh Scratch wiki




涵養塾のオリジナル商品や、取扱部品の価格や在庫状況は、涵養塾の在庫票をご参照下さい。

チャレンジしてみたい方、お気軽にご連絡ください。
お問い合わせ

スクラッチでも動かせるIoTおもちゃコントローラ "ESP-Toy"

スクラッチでも動かせるIoTおもちゃコントローラ "ESP-Toy"  はESP-WROOM02 WiFiモジュールをベースにカラーLEDとモータードライバーを搭載した汎用コントローラモジュールです

おもちゃを意識して、色もカラフルに5色そろえました。

用途
  • ArduinoIDEで簡単に開発できるIoTモジュール
  • 各種センサーを使ったリモートセンシング
  • スクラッチのプログラム勉強用フィジカルブロック
  • あなたのおもちゃをワイヤレスコントロールおもちゃに改造
  • LEGOブロックとの組み合わせでお安いロボット
  • スクラッチですぐに使えるWi-Fi AP 機能付きのファームもあります
できること

  • フルカラーLED(基板には1個、外付け(オプション)すれば)何個でも使える
  • モーターを2個まで動かせる
  • サーボモーターを同時に3個まで動かせる(オプション)
  • いろんなセンサーを付けることができる(I2Cオプション)
  • WiFiのアクセスポイントにもなる
  • スクラッチ(PYONKEE)からWiFi(無線で)コントロールできる
  • Arduino-IDEでプログラムできる
  • LUAやMicroPythonを使うこともできる(ファームの書き換えによる)


製作例







ESP-Toy_kit Green

ESP-Toy_kit Red

ESP-Toy_kit Yellow

ESP-Toy_kit Blue

ESP-Toy_kit Black

価格 ¥1,500.-(税込み 送料別)オンラインショップ
(組み立て済みは¥2,500.-)オンラインショップ



涵養塾のオリジナル商品や、取扱部品の価格や在庫状況は、涵養塾の在庫票をご参照下さい。

電子工作キット ESP-Toy_kit は 「涵養塾オリジナル」の「電子工作キット」



Appendix1.ESP-WROOM-02 参考URL ここを一番参考にしました
  http://qiita.com/tags/ESP-WROOM-02


チャレンジしてみたい方、お気軽にご連絡ください。
お問い合わせ




Appendix2. ESP-Toy Schematics


2.4" 240x320 color LCD と Arduino nano で、小さなターミナルを自作してみました。

2.4" 240x320 color LCD と Arduino nano で、小さなターミナルを自作してみました。
写真中央のArduino-NANOをコントローラとして、手前の黒いコネクタはマイコン用のUART、左上は電源コネクタ、右上はキーボード用のPS2コネクタ、その他はArguino互換のピン配置で、LCDモジュール用のコネクタだ。

実験なので、Arduino互換ピン配置のユニバーサルボードを使って、ラッピングで配線をした。

 液晶モジュールを載せたところ。

 キーボードと電源をつないで、ハイこの通り。
 画面の向き、文字の大きさ・色、UARTの通信速度等が設定できるように作ってみた。

チャレンジしてみたい方、お気軽にご連絡ください。

お問い合わせ






参考までに、Arduino-NANOのCodeです。
是非、コメントをお寄せください。

/* By T.Kasahara May-26 '17 CHUM_Terminal Ver1.0
 *PS2Keyboard Japanese Keyboard Layout  
  Color TFTLCD Adafruit library 
  PS2 Key board
  Charactor Terminal
F1 :Help
F5 :Save Setting
F6 :Local Echo
F7 :Board Rate
F8 :Reverse Color
F9 :Back color
F10:Font color
F11:Rotation
F12:Font Size

-ESC- for Exit from Settings
 
*/

//#define DEBUG //Debug mode

#ifdef DEBUG
 #define DEBUG_PRINTLN(x)  Serial.println (x)
 #define DEBUG_PRINT(x)  Serial.print (x)
 #define DEBUG_FPRINT(x,y)  Serial.print (x,y)
#else
 #define DEBUG_PRINTLN(x)
 #define DEBUG_PRINT(x)
 #define DEBUG_FPRINT(x,y)
#endif

#include    // Core graphics library
#include // Hardware-specific library
#include

#define YP A1  // must be an analog pin, use "An" notation!
#define XM A2  // must be an analog pin, use "An" notation!
#define YM 7   // can be a digital pin
#define XP 6   // can be a digital pin

#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940

// For better pressure precision, we need to know the resistance
// between X+ and X- Use any multimeter to read it
// For the one we're using, its 300 ohms across the X plate
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0

CHUM_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD);

#define T_Wrap HIGH //Text Wrap around ON:HIGH,OFF:LOW
#define blink_speed 1000
#define D_Width 240 //Display Width size Pixel
#define D_Hight 320 //Display Hight size Pixel
#define Wait_setup 2000

// Assign human-readable names to some common 16-bit color values:
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

#include
#define EE_boardrate 1023
#define EE_F_color 1022
#define EE_B_color 1021
#define EE_rotation 1020
#define EE_C_Size 1019
#define EE_Echo 1018

#include //code modified for Japanese Key board
const int DataPin = 18;
const int IRQpin =  2;
PS2Keyboard keyboard;

int color[]={BLACK,BLUE,RED,GREEN,CYAN,MAGENTA,YELLOW,WHITE};
int C_Size = 2; //Charactor Mag.
#define C_Max 4
long rate[]={9600,19200,38400,57600,74880,115200,230400,250000};
int boardrate = 0;
int rotation = 0; //Display rotation 0&2:H,1&3:V
int F_color = 0;
int B_color = 0;
int echo = 0;

int End_Line ;
int C_Line = 0;
boolean toggle = 0;
int ii,jj;
char cc;
uint8_t c;
int count;
unsigned long c_time;

void setup() {
// Restore settings
  boardrate = EEPROM.read(EE_boardrate);
  F_color = EEPROM.read(EE_F_color);
  B_color = EEPROM.read(EE_B_color);
  rotation = EEPROM.read(EE_rotation);
  C_Size = EEPROM.read(EE_C_Size);
  if(C_Size == 0) C_Size = 1;
  echo = EEPROM.read(EE_Echo);

//Keyboard Serial Begin
  keyboard.begin(DataPin, IRQpin, PS2Keymap_Japanese);
  Serial.begin(rate[boardrate]);
  DEBUG_PRINTLN(F("CHUM_Terminal V0.1"));

// TFTLCD Initialize
  tft.reset();
  uint16_t identifier = tft.readID();
  tft.begin(identifier);

  refresh(); //Refresh display
  tft.print(F("F1 for Setting"));
  refresh(); //Refresh display
  tft.print(F("F1 for Setting"));

// Setting
  if (keyboard.available()) {
    c = cc = keyboard.read();
    DEBUG_FPRINT(c,HEX);
    DEBUG_PRINT(" ");

    if(c == 0xc2){
      while(c != 0x1B) { // Wait ESC
        switch(c){
          case 0x81:  // F1 Help
            tft.fillScreen(color[B_color]); // Screen clear
            tft.setTextWrap(T_Wrap); //Set Text Wrap around
            tft.setCursor(0,0);
            DEBUG_PRINTLN(F("F1 :Help"));
            tft.println(F("F1 :Help"));
            tft.println(F("F5 :Save EEPROM"));
            tft.println(F("F6 :Local Echo"));
            tft.println(F("F7 :Board Rate"));
            tft.println(F("F8 :Reverse Color"));
            tft.println(F("F9 :Back color"));
            tft.println(F("F10:Font color"));
            tft.println(F("F11:Rotation"));
            tft.println(F("F12:Font Size"));
            tft.println();
            tft.println(F("-ESC- for Exit from Help"));
          break;

          case 0x85:  // F5 Save Settings to EEPROM
            F5_Set_EEPROM();
          break;
     
          case 0x86:  // F6 Local Echo On/Off
            F6_sw_echo();
          break;

          case 0x87:  // F7 BoardRte
            F7_BoardRate();
          break;
     
          case 0x88:  // F8 Reverse color
            jj = B_color;
            B_color = F_color;
            F_color = jj;
            refresh();        
          break;
     
          case 0x89:  // F9 Back ground color KCMYGBR
            B_color += 1;
            if( B_color >7) B_color =0;
            refresh();
          break;
     
          case 0x8A:  // F10 Font Color WRGBMYC
            F_color -= 1;
            if( F_color < 0) F_color =7;
            refresh();
          break;
     
          case 0x8B:  // F11 Rotation 0,1,2,3
            rotation +=1;
            if(rotation > 3) rotation=0;
            refresh();
          break;
     
          case 0x8C:  // F12 Zoom 1,2,3,4
            C_Size +=1;
            if(C_Size > C_Max) C_Size=1;
            refresh();
          break;
             
          default:
            ;
          break;

        }
        while (!keyboard.available()) ;
        cc = keyboard.read();
        c = cc;
        DEBUG_FPRINT(c,HEX);
        DEBUG_PRINT(" ");
      }
      refresh();
    }
  }
  refresh();
  c_time = millis();
}

//************************************************//
void loop() {
    C_Line = tft.getCursorY();

// Keyboard
    if (keyboard.available()) {
      off_Cursor();
      c = cc = keyboard.read();
      DEBUG_FPRINT(c,HEX);
      DEBUG_PRINT(" ");

      switch(c){
        case 0x0d:  //CR
          if ( echo != 0) New_Line();
          Serial.println();
        break;

        case 0x0a:  //LF
          if ( echo != 0) New_Line();
          Serial.println();
        break;

        case 0x08:  //Back Space or Left arrow
          if ( echo != 0) Back_Space(1);
          Serial.print(cc);
        break;

        case 0x7F:  //Delete
          if ( echo != 0) Delete_Space();
          Serial.print(cc);
        break;
     
        case 0x8d:  // Up
          Serial.write(0x1b);Serial.write(0x5b);
          Serial.write(0x41);
        break;

        case 0x8e:  // Down
          Serial.write(0x1b);Serial.write(0x5b);
          Serial.write(0x42);
        break;

        case 0x8f:  // Right
          Serial.write(0x1b);Serial.write(0x5b);
          Serial.write(0x43);
        break;

        case 0x90:  // Left
          Serial.write(0x1b);Serial.write(0x5b);
          Serial.write(0x44);
        break;

        default:
          if ( echo != 0){
            tft.print(cc);
            New_Line();
          }
          Serial.write(c);
        break;
      }
    }

//Serial
    if(Serial.available()){
      off_Cursor();
      c = cc = Serial.read();

      switch(c){
        case 0x0d:  //CR
          tft.setCursor( 0, tft.getCursorY());
//          New_Line();
        break;

        case 0x0a:  //LF
          tft.println();
          New_Line();
        break;

        case 0x08:  //Back Space
          Back_Space(1);
        break;
     
        case 0x7F:  //Delete
          Delete_Space();
        break;

        case 0x1b:  //ESC Sequence
          while(!Serial.available());
          c = cc = Serial.read();
          if(c != 0x5b ) break;
          count = 0;
          do{
            while(!Serial.available());
            c = cc = Serial.read();
            if( c == 0x4b ){  //delete line
              Clear_line(tft.getCursorX(),tft.getCursorY());
              break;
            }else if(c == 0x44){ //Number
              if(count == 0) count = 1;
              Back_Space(count);
              break;
            }else if( (c >= 0x30) && (c <= 0x39)){ //Number
              count = count*10 + (c -0x30);
            }else {
              break;
            }
          }while(1);
        break;

        default:
          tft.print(cc);
          New_Line();
        break;
      }
    }
  if ( (millis()-c_time) > blink_speed ){
    if(toggle){
      tft.setTextColor(color[F_color]);
      tft.print("_");
    }else{
      tft.setTextColor(color[B_color]);
      tft.print("_");
    }
    Back_Space(1);
    tft.setTextColor(color[F_color],color[B_color]);
    toggle = !toggle;
    c_time = millis();
  }
}

void off_Cursor(){
  tft.setTextColor(color[B_color]);
  tft.print("_");
  Back_Space(1);
  tft.setTextColor(color[F_color],color[B_color]);
}

void Delete_Space(){
      tft.print(" ");
      jj = tft.getCursorX() - 12 * C_Size;
      if( jj < 0) jj=0;
      tft.setCursor( jj, tft.getCursorY());
}

void Back_Space(int pp){
      jj = tft.getCursorX() - 6 * C_Size * pp;
      if( jj < 0) jj=0;
      tft.setCursor( jj, tft.getCursorY());
}

void  New_Line(){
      jj = tft.getCursorY();
      if( C_Line < jj ){
        if(jj >= End_Line){
          tft.setCursor(0, 0);
          jj = 0;
        }
//        DEBUG_PRINT(" Y=");
//        DEBUG_PRINTLN(jj);
        C_Line = jj;
        Clear_line(tft.getCursorX(),jj);
      }
}

void Clear_line(int xx, int yy){
        tft.setTextWrap(LOW);
        tft.print(F("                                                       "));
        tft.setCursor(xx,yy);
        tft.setTextWrap(T_Wrap);
}

void  F6_sw_echo(){
          tft.fillScreen(color[B_color]); // Screen clear
          tft.setCursor(0,0);
          DEBUG_PRINTLN(F("F6 :Local Echo ON/Off"));
          if( echo == 0) {
            tft.println(F("Local Echo OFF"));
          }else{
            tft.println(F("Local Echo ON "));
          }
          tft.println();
          tft.println(F("ESC->Exit"));
          while(c != 0x1B) { // Wait ESC
            while(!keyboard.available()) ; // wait key
            c = keyboard.read();
            tft.setCursor(0,0);
            tft.println();
            if(keyboard.available()) c = keyboard.read();
            if(c != 0x1B) echo ^= 0x0001 ;
            if( echo == 0) {
              tft.println(F("Local Echo OFF"));
            }else{
              tft.println(F("Local Echo ON "));
            }
          }
          refresh();
}

void  F7_BoardRate(){
          tft.fillScreen(color[B_color]); // Screen clear
          tft.setCursor(0,0);
          DEBUG_PRINTLN(F("F2 :BoardRate"));
          Serial.end();
          tft.println("        ");
          tft.println("bps");
          tft.println();
          tft.println(F("ESC->Exit"));
          while(c != 0x1B) { // Wait ESC
            tft.setCursor(0,0);
            tft.print(rate[boardrate]);
            tft.println("      ");
            while(!keyboard.available()) ; // wait key
            c = keyboard.read();
            if(keyboard.available()) c = keyboard.read();
            if(c != 0x1B) boardrate += 1;
            if(boardrate > 7) boardrate = 0;
          }
          Serial.begin(rate[boardrate]);
          refresh();
}

void   F5_Set_EEPROM(){
          EEPROM.write(EE_boardrate,boardrate);
          EEPROM.write(EE_F_color,F_color);
          EEPROM.write(EE_B_color,B_color);
          EEPROM.write(EE_rotation,rotation);
          EEPROM.write(EE_C_Size,C_Size);
          refresh();
}

void F1_Help(){
          tft.fillScreen(color[B_color]); // Screen clear
          tft.setTextWrap(T_Wrap); //Set Text Wrap around
          tft.setCursor(0,0);
          DEBUG_PRINTLN(F("F1 :Help"));
       
          tft.println(F("F1 :Help"));
          tft.println(F("F5 :Save EEPROM"));
          tft.println(F("F7 :Board Rate"));
          tft.println(F("F8 :Reverse Color"));
          tft.println(F("F9 :Back color"));
          tft.println(F("F10:Font color"));
          tft.println(F("F11:Rotation"));
          tft.println(F("F12:Font Size"));
          tft.println();
          tft.println(F("-ESC- for Exit from Help"));
          while(c != 0x1B) { // Wait ESC
            c = keyboard.read();
            delay(200);
          }
          refresh();
}

void refresh(){
  tft.fillScreen(color[B_color]); // Screen clear
  tft.setTextWrap(T_Wrap); //Set Text Wrap around
  tft.setRotation(rotation);
  tft.setCursor(0,0);
  tft.setTextColor(color[F_color],color[B_color]);  tft.setTextSize(C_Size);
  tft.println(F("CHUM_Terminal V0.1"));
  if(rotation == 0 || rotation == 2 ){
    End_Line = D_Hight;
  }else{
    End_Line = D_Width;
  }
}

Micro Python & 自作ターミナル

手持ちの ”Cortex-M4"マイクロコントローラボード "NUCLEO-F401RE" の使い道を考えていたところ、"MicroPython" を見つけたので、試してみた。

 CQ出版の インターフェース2016年10月号(PDFで購入)で"Python" の特集があり、そこに、詳しい説明(第7章アプリはスクリプトで柔軟に!マイコン用MicroPythonプログラミング)があったので参考にした。

左のLCDは、320x240の自作ターミナルです。

映像は、ターミナルをリセットしたのち、NUCLEO-F401REをリセットするとMicroPythonが起動し、キーボードから”1+2”と入力すると、答えが表示されている様子がわかります。

"MicroPython"には、esp8266、esp32用のコードも用意されていますので、ターミナルさえ準備できれば、手軽に学習ができると思い、このターミナルを作ってみました。

てがるに、Pythonを勉強するには、持ってこいではないですか?

チャレンジしてみたい方、お気軽にご連絡ください。

お問い合わせ

REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER をつなぐ

REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER をつないで、SDCardから、オフラインでプリントできるようになりました。



使ったLCDは、REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER(安いです)

Ben_Kとの接続のためには、コネクタのアダプターを別途作成する必要があります。

それ用に、ピンを開けておいたので、割と簡単にできると思います。
以下のpins.hを参考に、作ってください。
(ご要望が多ければ、専用のボードを開発しますので、ご連絡ください。)

もちろんファームの変更も必要です。
Marlin Firmware の configuration.h  pins.h の2つのファイルを変更します。

**** configuration.h *****
まず、configuration.h は 500行目付近にある

//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

この行の頭の"//"を削除して、有効にします。
(もちろん他のLCDをすでに使っていた場合は、その該当行はコメントにしてください。)

***** pins.h *****
こちらは、Ben_K のPin Assignments を以下を参考に、変更します。

/****************************************************************
* BEN_K Pin Assignments
******************************************************************/
#if MB(BEN_K)
#define KNOWN_BOARD
#ifndef __AVR_ATmega2560__
#error Oops!  Make sure you have 'Ben_K2560' selected from the 'Tools -> Boards' menu.
#endif

#define LARGE_FLASH true

#define X_STEP_PIN 37
#define X_DIR_PIN 49
#define X_ENABLE_PIN 29

#define Y_STEP_PIN 36
#define Y_DIR_PIN 48
#define Y_ENABLE_PIN 28

#define Z_STEP_PIN 32
#define Z_DIR_PIN 47
#define Z_ENABLE_PIN 27

// Brn_K pin#
#define X_MIN_PIN 81
#define X_MAX_PIN -1 //82
#define Y_MIN_PIN 80
#define Y_MAX_PIN -1 //83
#define Z_MIN_PIN 79
#define Z_MAX_PIN -1 //38 Use for Servo


#define HEATER_BED_PIN 45
#define TEMP_BED_PIN 13  // Therm1

#define HEATER_0_PIN  44
#define TEMP_0_PIN 12  // Therm0

#define HEATER_1_PIN -1
#define TEMP_1_PIN 14  // Therm3

#ifdef BARICUDA
#define HEATER_2_PIN -1
#else
#define HEATER_2_PIN -1
#endif
#define TEMP_2_PIN 15  // Therm3


#define E0_STEP_PIN         34
#define E0_DIR_PIN          43
#define E0_ENABLE_PIN       26

#define E1_STEP_PIN         33
#define E1_DIR_PIN          42
#define E1_ENABLE_PIN       25

#define SDPOWER            -1
#define SDSS               -1
#define LED_PIN            13
#define FAN_PIN            46
#define PS_ON_PIN          -1
#define KILL_PIN           -1 //80 with Smart Controller LCD
#define SUICIDE_PIN        -1  //PIN that has to be turned on right after start, to keep power flowing.

#ifdef NUM_SERVOS
  #define SERVO0_PIN       38 // Z_MAX_PIN
#endif

#ifdef ULTRA_LCD
  #define KILL_PIN 55
  #ifdef NEWPANEL
   //arduino pin which triggers an piezzo beeper
    #define BEEPER 56      // Beeper on AUX-4
    #define LCD_PINS_RS 60
    #define LCD_PINS_ENABLE 61
    #define LCD_PINS_D4 62
    #define LCD_PINS_D5 63
    #define LCD_PINS_D6 64
    #define LCD_PINS_D7 65

    //buttons are directly attached using AUX-2
    #define BTN_EN1 57
    #define BTN_EN2 58
    #define BTN_ENC 59  //the click

    #define BLEN_C 2
    #define BLEN_B 1
    #define BLEN_A 0

    #define SDCARDDETECT 54
#define SDSS         53

    //encoder rotation values
    #define encrot0 0
    #define encrot1 2
    #define encrot2 3
    #define encrot3 1
  #else //old style panel with shift register
    //arduino pin witch triggers an piezzo beeper
    #define BEEPER 33    No Beeper added
    //buttons are attached to a shift register
    // Not wired this yet
    // #define SHIFT_CLK 38
    // #define SHIFT_LD 42
    // #define SHIFT_OUT 40
    // #define SHIFT_EN 17

    #define LCD_PINS_RS 75
    #define LCD_PINS_ENABLE 17
    #define LCD_PINS_D4 23
    #define LCD_PINS_D5 25
    #define LCD_PINS_D6 27
    #define LCD_PINS_D7 29

    //encoder rotation values
    #define encrot0 0
    #define encrot1 2
    #define encrot2 3
    #define encrot3 1

    //bits in the shift register that carry the buttons for:
    // left up center down right red
    #define BL_LE 7
    #define BL_UP 6
    #define BL_MI 5
    #define BL_DW 4
    #define BL_RI 3
    #define BL_ST 2
    #define BLEN_B 1
    #define BLEN_A 0
  #endif
#endif //ULTRA_LCD

#ifndef SDSUPPORT
// these pins are defined in the SD library if building with SD support
  #define SCK_PIN          52
  #define MISO_PIN         50
  #define MOSI_PIN         51
#endif

#endif // BEN_K
**************************
以上です。

チャレンジしてみたい方、お気軽にご連絡ください。