メモ帳

期待値計算式のみ

期待値計算入出力

YouTube「クリップ」の使い方

blenderの基本操作

曲の作成

※ 備忘録です。使えたらコピペして使ってね。できれば、毎回HPを開いてくれると嬉しいです。データ データ

// ピンの定義
const int switchPins[] = {2, 3, 4, 5}; // スイッチピン
const int ledPins[] = {6, 7, 8, 9};    // LEDピン
const int buzzerPin = 10;              // ブザーのピン
const int segPins[] = {11, 12, 13, A0, A1, A2, A3}; // 7セグメントのピン

// 周波数の配列 (スイッチに対応する音)
const int frequencies[] = {440, 554, 659, 784}; // A4, C#5, E5, G5

// 数字に対応する7セグメントのパターン (0-4を表示するため)
const byte digitPatterns[5][7] = {
  {1, 1, 1, 1, 1, 1, 0}, // 0
  {0, 1, 1, 0, 0, 0, 0}, // 1
  {1, 1, 0, 1, 1, 0, 1}, // 2
  {1, 1, 1, 1, 0, 0, 1}, // 3
  {0, 1, 1, 0, 0, 1, 1}  // 4
};

void setup() {
  // 入力ピンの設定
  for (int i = 0; i < 4; i++) {
    pinMode(switchPins[i], INPUT);
    pinMode(ledPins[i], OUTPUT);
  }
  
  pinMode(buzzerPin, OUTPUT);
  
  // 7セグメントディスプレイのピンの設定
  for (int i = 0; i < 7; i++) {
    pinMode(segPins[i], OUTPUT);
  }
}

void loop() {
  for (int i = 0; i < 4; i++) {
    if (digitalRead(switchPins[i]) == HIGH) {
      // スイッチが押されたとき
      digitalWrite(ledPins[i], HIGH);   // 対応するLEDを点灯
      tone(buzzerPin, frequencies[i]);  // ブザーで音を鳴らす
      
      // 7セグメントディスプレイにスイッチ番号を表示
      displayDigit(i + 1);
    } else {
      digitalWrite(ledPins[i], LOW);    // 対応するLEDを消灯
    }
  }
  noTone(buzzerPin);  // スイッチが押されていないときはブザーを止める
}

// 7セグメントディスプレイに数字を表示する関数
void displayDigit(int digit) {
  for (int i = 0; i < 7; i++) {
    digitalWrite(segPins[i], digitPatterns[digit][i]);
  }
}

受信機

#include <LoRa.h>
#include <I2S.h>

// I2Sピン設定
#define I2S_DOUT 19  // I2Sのデータ出力ピン(DIN)
#define I2S_BCLK 20  // I2Sのビットクロックピン(BCLK)
#define I2S_LRCK 21  // I2Sの左右クロックピン(LRCK)

void setup() {
    // シリアル通信の開始
    Serial.begin(115200);
    while (!Serial);

    Serial.println("Starting LoRa Receiver");

    // LoRaの初期化(周波数915MHz)
    if (!LoRa.begin(915E6)) {
        Serial.println("Failed to initialize LoRa");
        while (1);
    }

    Serial.println("LoRa Initialized");

    // I2Sの初期化(標準の設定: I2S_PHILIPS_MODE, サンプリング周波数: 44100Hz, ビット数: 16)
    if (!I2S.begin(I2S_PHILIPS_MODE, 44100, 16)) {
        Serial.println("Failed to initialize I2S!");
        while (1);
    }

    Serial.println("I2S Initialized");
}

void loop() {
    // LoRaパケットの受信を確認
    int packetSize = LoRa.parsePacket();
    if (packetSize) {
        String deviceId = "";
        String signalStatus = "";

        // デバイスIDと信号を受信
        while (LoRa.available()) {
            String msg = LoRa.readString();
            int separatorIndex = msg.indexOf(',');
            if (separatorIndex != -1) {
                deviceId = msg.substring(0, separatorIndex);
                signalStatus = msg.substring(separatorIndex + 1);
            }
        }

        // 受信したデータの表示
        Serial.print("Device ID: ");
        Serial.println(deviceId);
        Serial.print("Signal Status: ");
        Serial.println(signalStatus);

        // ON信号が来た場合、音を鳴らす処理
        if (signalStatus.equals("ON")) {
            Serial.println("Sound ON");

            // 音データを送信(例: 簡単なサイン波を生成して送信)
            for (int i = 0; i < 1000; i++) {
                int16_t sample = (int16_t)(sin(i * 2.0 * PI / 100.0) * 32767);
                I2S.write((uint8_t*)&sample, sizeof(sample));
            }
        } else {
            Serial.println("Sound OFF");
        }
    }
}

2個目

#include <RadioLib.h>
#include <I2S.h>

// Initialize the SX1262 LoRa module without specifying pins if they are predefined
SX1262 lora;

// I2S pin configuration
#define I2S_DOUT 19  // I2S Data Out (DIN)
#define I2S_BCLK 20   // I2S Bit Clock (BCLK)
#define I2S_LRCK 21   // I2S Left-Right Clock (LRCK)

void setup() {
    // Start Serial communication
    Serial.begin(115200);
    while (!Serial);

    Serial.println("Starting LoRa Receiver");

    // Initialize LoRa with SX1262 module
    int state = lora.begin();
    if (state != RADIOLIB_ERR_NONE) {
        Serial.print("LoRa initialization failed, code: ");
        Serial.println(state);
        while (true);
    }
    Serial.println("LoRa Initialized");

    // Initialize I2S (Standard mode: I2S_PHILIPS_MODE, Sampling: 44100Hz, Bit depth: 16)
    if (!I2S.begin(I2S_PHILIPS_MODE, 44100, 16)) {
        Serial.println("Failed to initialize I2S!");
        while (true);
    }
    Serial.println("I2S Initialized");
}

void loop() {
    // Buffer for received LoRa message
    String receivedMessage;

    // Receive LoRa message
    int state = lora.receive(receivedMessage);
    if (state == RADIOLIB_ERR_NONE) {
        String deviceId = "";
        String signalStatus = "";

        // Parse the message (assumes "DeviceID,Status" format)
        int separatorIndex = receivedMessage.indexOf(',');
        if (separatorIndex != -1) {
            deviceId = receivedMessage.substring(0, separatorIndex);
            signalStatus = receivedMessage.substring(separatorIndex + 1);
        }

        // Display received data
        Serial.print("Device ID: ");
        Serial.println(deviceId);
        Serial.print("Signal Status: ");
        Serial.println(signalStatus);

        // Play sound if signal is "ON"
        if (signalStatus.equals("ON")) {
            Serial.println("Sound ON");

            // Generate a simple sine wave tone
            for (int i = 0; i < 1000; i++) {
                int16_t sample = (int16_t)(sin(i * 2.0 * PI / 100.0) * 32767);
                I2S.write((uint8_t*)&sample, sizeof(sample));
            }
        } else {
            Serial.println("Sound OFF");
        }
    } else {
        Serial.print("Receive failed, code: ");
        Serial.println(state);
    }
}
#include <RadioLib.h>

SX1262 lora;

void setup() {
    Serial.begin(115200);
    
    // LoRaモジュールの初期化(ピンの指定を省略)
    int state = lora.begin();
    if (state != RADIOLIB_ERR_NONE) {
        Serial.print("LoRaの初期化に失敗しました。エラーコード: ");
        Serial.println(state);
        while (true);
    }
    Serial.println("LoRa Initialized");
}

void loop() {
    // ループ内のコード
}

送信機

#include <LoRa.h>

// スイッチが接続されるピン
#define SWITCH_PIN 15

// 各送信機のユニークなIDを設定
String deviceID = "Device123";  // ここを各デバイスごとに異なるIDに変更

void setup() {
    Serial.begin(115200);
    while (!Serial);

    Serial.println("Starting LoRa Sender");

    // LoRaの初期化(周波数915MHz)
    if (!LoRa.begin(915E6)) {
        Serial.println("Failed to initialize LoRa");
        while (1);
    }

    Serial.println("LoRa Initialized");

    // スイッチピンを入力モードに設定(プルアップ)
    pinMode(SWITCH_PIN, INPUT_PULLUP);
}

void loop() {
    // スイッチの状態を読み取る(ONの場合はLOW)
    int switchState = digitalRead(SWITCH_PIN);

    // スイッチがONのとき(通電時)
    if (switchState == LOW) {
        sendLoRaMessage(deviceID + ",ON");
        Serial.println("Sent: " + deviceID + ",ON");
    } 
    // スイッチがOFFのとき(非通電時)
    else {
        sendLoRaMessage(deviceID + ",OFF");
        Serial.println("Sent: " + deviceID + ",OFF");
    }

    // 送信間隔を設定(例:1秒)
    delay(1000);
}

// メッセージをLoRaで送信する関数
void sendLoRaMessage(String message) {
    LoRa.beginPacket();
    LoRa.print(message);
    LoRa.endPacket();
}

}

#include <RadioLib.h>  // RadioLibライブラリをインクルード

// SX1262 LoRaモジュールを初期化(ピンは内部で設定されていると仮定)
SX1262 lora;

// デバイスIDを定義(各デバイスの識別に使用)
String deviceID = "Device123";  // 必要に応じて変更

void setup() {
    Serial.begin(115200);  // シリアル通信を115200bpsで開始

    // LoRaモジュールの初期化
    if (lora.begin() != RADIOLIB_ERR_NONE) {
        Serial.println("LoRa init failed!");  // 初期化に失敗した場合のエラーメッセージ
        while (true);  // 無限ループで停止
    }
    Serial.println("LoRa Initialized");  // 初期化成功メッセージ

    // スイッチ入力ピンの設定(プルアップ抵抗を使用)
    pinMode(15, INPUT_PULLUP);  // ピン15を入力として設定
}

void loop() {
    // スイッチの状態を読み取り
    int switchState = digitalRead(15);  // スイッチの状態を取得
    String message = deviceID + "," + (switchState == LOW ? "ON" : "OFF");  // メッセージを生成

    // メッセージの送信
    int state = lora.transmit(message);  // LoRaを介してメッセージを送信
    if (state == RADIOLIB_ERR_NONE) {
        Serial.println("Sent: " + message);  // 送信成功メッセージ
    } else {
        Serial.print("Failed to send, error code: ");  // 送信失敗メッセージ
        Serial.println(state);  // エラーコードを表示
    }

    delay(1000);  // 1秒ごとに送信(必要に応じて調整)
}

#include <LoRa.h>

void setup() {
    Serial.begin(115200);
    while (!Serial);

    // LoRaの初期化
    if (!LoRa.begin(915E6)) {  // 使用する周波数を設定
        Serial.println("LoRa init failed!");
        while (1);
    }
    Serial.println("LoRa Initialized");
}

void loop() {
    // 受信データがあるか確認
    int packetSize = LoRa.parsePacket();
    if (packetSize) {
        String receivedMessage = "";
        while (LoRa.available()) {
            receivedMessage += (char)LoRa.read();
        }

        Serial.print("Received message: ");
        Serial.println(receivedMessage);

        // ON/OFFの表示
        if (receivedMessage.equals("ON")) {
            Serial.println("State: ON");
        } else if (receivedMessage.equals("OFF")) {
            Serial.println("State: OFF");
        }
    }
}

https://dl.espressif.com/dl/package_esp32_index.json

https://dl.espressif.com/dl/package_esp32_index.json