ChatGPTでプログラム/ESP32DevKit/WS2812/Matrix32X8で色相環 | 秋葉は外神田ですがなにか?

秋葉は外神田ですがなにか?

ガッチャマン背景だったものを、映画不振とは関係なく、
ふつーのCoolTypeに変更しました。
少しは文字が読みやすくなったのではないでしょうか?
・・・と、思ったけど、やっぱりガッチャマンにもどしました。2013.10.15
※トップページ放置確認w2021.Aug

 

 
 
ChatGPTがかなりあふぉで、しっかり指示をしないとすぐバグったり仕様をはずれてまた動かなくなったり、
どこかの誰かさんと話をしているみたいで、勉強になります。
 
 

#include <Adafruit_GFX.h>

#include <Adafruit_NeoMatrix.h>

#include <Adafruit_NeoPixel.h>

 

#ifdef __AVR__

#include <avr/power.h>

#endif

 

#define PIN 5                // 出力ピン番号

#define MATRIX_WIDTH 32      // マトリクスの幅

#define MATRIX_HEIGHT 8      // マトリクスの高さ

 

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(MATRIX_WIDTH, MATRIX_HEIGHT, PIN, 

                                               NEO_MATRIX_TOP + NEO_MATRIX_LEFT +

                                               NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,

                                               NEO_GRB + NEO_KHZ800);

 

//このマトリクスプレートの配置結線部分がGPT君は作れなかった。

//当然、私の説明不足、至らない結果である。

 

int currentColumn = 0;  // 現在の列の位置

 

void setup() {

  matrix.begin();

  matrix.setBrightness(50);

  matrix.setTextWrap(false);

  matrix.setTextColor(matrix.Color(255, 255, 255));

}

 

void loop() {

  // 色相環を表現

  for (int col = 0; col < MATRIX_WIDTH; col++) {

    // 色相の計算

    float hue = map(col + currentColumn, 0, MATRIX_WIDTH, 0, 360);

 

    // 色相からRGB値を取得

    uint32_t color = HSBtoRGB(hue, 1.0, 1.0);

 

    // 全ドットに色を設定

    for (int row = 0; row < MATRIX_HEIGHT; row++) {

      matrix.drawPixel(col, row, color);

    }

  }

 

  matrix.show();    // 表示更新

  delay(10);       // 表示の更新間隔

 

  currentColumn++;  // 列の位置を更新

 

  // 右端に到達した場合は左端に戻る

  if (currentColumn >= MATRIX_WIDTH) {

    currentColumn = 0;

  }

}

 

// HSBからRGBへの変換

uint32_t HSBtoRGB(float hue, float saturation, float brightness) {

  if (saturation == 0) {

    // 彩度が0の場合、明度に応じた灰色を返す

    uint8_t value = round(brightness * 255);

    return matrix.Color(value, value, value);

  }

 

  hue = fmod(hue, 360); // 色相を0-359の範囲に正規化

  float hueSector = hue / 60.0;

  int sector = floor(hueSector);

  float fractionalPart = hueSector - sector;

 

  uint8_t p = round(brightness * (1 - saturation) * 255);

  uint8_t q = round(brightness * (1 - saturation * fractionalPart) * 255);

  uint8_t t = round(brightness * (1 - saturation * (1 - fractionalPart)) * 255);

 

  switch (sector) {

    case 0:

      return matrix.Color(round(brightness * 255), t, p);

    case 1:

      return matrix.Color(q, round(brightness * 255), p);

    case 2:

      return matrix.Color(p, round(brightness * 255), t);

    case 3:

      return matrix.Color(p, q, round(brightness * 255));

    case 4:

      return matrix.Color(t, p, round(brightness * 255));

    default:

      return matrix.Color(round(brightness * 255), p, q);

  }

}

 

数行をのぞき、CHATGPTが生成したプログラムになります。 

このプログラムをご利用されて、著作権を主張することはしないでください。私も主張しません。

悪意を持って改変しないでください。CHATGPT3.5が何を思って作成しているか全く不明です。

 

これは、同じハード構成にすればきちんと動作します。

 

世界のどこかで、似たプログラムがあった場合ご連絡ください。

 

 

お詫びして、著作権情報を付加したいと思います。