3D printerのLCDを交換する方法

# Anet A8 3D printerのLCDシールドを変更する方法です。

> LCDシールド12864を導入するための手順です。
> LCDシールドを大きくできます。

## 用意するもの
> ● 12864 LCD シールドと10pフラットケーブルとブレッドボードとジャンパ
> aliexpressで12864 rampsで検索すれば10ドル前後で手に入ります。

> ● marlinファームウェア Marlin-bugfix-2.0.x
>
> ● Visual Studio Code + Platform IO

## 物理的な配線をワイヤリングします。

> ピンアサインはmarlin 2.0のファームのヘッダファイルpins_ANET10.h中に書かれてあります。

```c++

/**
 * ====================================================================
 * ===================== LCD PINOUTS ==================================
 * ====================================================================
 *
 *   Anet V1.0 controller           | ZONESTAR_LCD      | ANET_FULL_      | RepRapDiscount Full      | Thingiverse RepRap wiring
 *   physical   logical   alt       |                   | GRAPHICS_LCD    | Graphics Display Wiring  | https://www.thingiverse
 *     pin        pin     functions |                   |                 |                          | .com/thing:2103748
 *------------------------------------------------------------------------------------------------------------------------
 *   ANET-J3.1    8 ***             | N/A               | J3_TX ***       |                          |
 *   ANET-J3.2    9 ***             | N/A               | J3_RX ***       |                          |
 *   ANET-J3.3    6       MISO      | N/A               | MISO ***        | EXP2.1   MISO            | EXP2.1   MISO
 *   ANET-J3.4    +5V               | N/A               | +5V             |                          |
 *   ANET-J3.5    7       SCK       | N/A               | SCK ***         | EXP2.2   SCK             | EXP2.2   SCK
 *   ANET-J3.6    5       MOSI      | N/A               | MOSI ***        | EXP2.6   MOSI            | EXP2.6   MOSI
 *   ANET-J3.7    !RESET            | N/A               | button          | EXP2.8   panel button    | EXP2.8   panel button
 *   ANET-J3.8    GND               | N/A               | GND             | EXP2.9   GND             | EXP2.9   GND
 *   ANET-J3.9    4       Don't use | N/A               | N/C             |                          |
 *   ANET-J3.10   +3.3V             | N/A               | +3.3V ***       |                          |
 *                                  |                   |                 |                          |
 *                                  |                   |                 |                          |
 *   ANET-LCD.1   GND               | GND               | GND             | EXP1.9   GND             | EXP1.9   GND
 *   ANET-LCD.2   +5V               | +5V               | +5V             | EXP1.10  +5V             | EXP1.10  +5V
 *   ANET-LCD.3   27      A4        | N/C *             | LCD_PINS_RS     | EXP1.4   LCD_PINS_RS     | EXP2.4   SDSS or N/C *
 *   ANET-LCD.4   10                | LCD_PINS_D4       | BTN_EN2         | EXP2.3   BTN_EN2         | EXP2.3   BTN_EN2
 *   ANET-LCD.5   28      A3        | LCD_PINS_RS       | LCD_PINS_ENABLE | EXP1.3   LCD_PINS_ENABLE | EXP1.1   BEEPER_PIN
 *   ANET-LCD.6   11                | LCD_PINS_D5       | BTN_EN1         | EXP2.5   BTN_EN1         | EXP2.5   BTN_EN1
 *   ANET-LCD.7   29      A2        | LCD_PINS_ENABLE   | N/C *           | EXP2.4   SDSS or N/C *   | EXP1.3   LCD_PINS_ENABLE
 *   ANET-LCD.8   16      SCL       | LCD_PINS_D6       | BTN_ENC         | EXP1.2   BTN_ENC         | EXP1.2   BTN_ENC
 *   ANET-LCD.9   30      A1        | ADC_KEYPAD_PIN ** | LCD_PINS_D4     | EXP1.5   LCD_PINS_D4     | EXP1.4   LCD_PINS_RS
 *   ANET-LCD.10  17      SDA       | LCD_PINS_D7       | BEEPER_PIN      | EXP1.1   BEEPER_PIN      | EXP1.5   LCD_PINS_D4
 *
 *                 N/C * - if not connected to the LCD can be used for BLTouch servo input
 *                 ** - analog pin -WITHOUT a pullup
 *                 *** - only connected to something if the Bluetooth module is populated
 */

```


> RepRapDiscount Full　Graphics Display Wiringの欄通りに結線します。
> ANET側のLCDとJ3端子をLCD側のEXP1とEXP2端子にのピンアサインに合わせれば動きます。

![IMG_1598.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399473/05ffc694-d646-aaba-c743-427ec1b71703.jpeg)


## ファームを書き換えVisusl Studio Code + PlatformIOでビルドします。

> Configuration.hファイルを書き換えます。

> 以下の#define ZONESTAR_LCDをコメントアウトします。

```c++
#define ZONESTAR_LCD
```

> 以下の#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLERをコメントアウトを外します。

```c++
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
```

> ファームをビルドしボードに転送すれば完了です。

## ライブラリのincludeがないエラーが出る場合

> pio lib install "arduino-libraries/LiquidCrystal"

> LiquidCrystalはarduinoのLCD出力の標準ライブラリでデフォルトでは存在しない仕様になってるみたいです。
> pio libを実行するとライブラリフォルダの.pio\libdeps\melziフォルダが更新されます。
> このフォルダで確認できます。

## LCDシールドのサイズ

> LCDの解像度は以下の通りです。
> デフォルト: 2004 20x4文字
> 変更後: 12864 128x64ドット

> できればフルカラー化にもしたいな。
> ファームのソースが一式あるのでやればできそう。

> 3D printerのマザーボードも中身はarduinoなので簡単なゲーム機なんかにも改造できそうな気もします。
> arduinoはプログラミングとハードウェアを学習するのに最適な教材だと思います。
> よく考えられてます。
> 太古のマイコンを改造して使うような感じになると思います。