Thursday, May 1, 2025

Model_Wrong

 


// <!DOCTYPE html>

<html>
<head>
  <title>Teachable Machine + Arduino</title>
</head>
<body>
  <h2>Teachable Machine Audio Model</h2>

  <button onclick="connectToArduino()">Connect to Arduino</button>
  <button onclick="init()">Start Listening</button>
  <div id="label-container"></div>

  <!-- TensorFlow.js -->
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.3.1/dist/tf.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/speech-commands@0.4.0/dist/speech-commands.min.js"></script>

  <script>
    const URL = "https://teachablemachine.withgoogle.com/models/YXOHdOpw3/";
    let port, writer;

    // Connect to Arduino
    async function connectToArduino() {
      try {
        port = await navigator.serial.requestPort();
        await port.open({ baudRate: 9600 });

        const encoder = new TextEncoderStream();
        encoder.readable.pipeTo(port.writable);
        writer = encoder.writable.getWriter();

        alert("✅ Connected to Arduino!");
      } catch (err) {
        console.error("❌ Arduino connection error:", err);
      }
    }

    async function sendToArduino(message) {
      if (writer) {
        await writer.write(message + "\n");
      }
    }

    async function createModel() {
      const checkpointURL = URL + "model.json";
      const metadataURL = URL + "metadata.json";

      const recognizer = speechCommands.create("BROWSER_FFT", undefined, checkpointURL, metadataURL);
      await recognizer.ensureModelLoaded();
      return recognizer;
    }

    async function init() {
      const recognizer = await createModel();
      const classLabels = recognizer.wordLabels();
      const labelContainer = document.getElementById("label-container");
      labelContainer.innerHTML = "";

      for (let i = 0; i < classLabels.length; i++) {
        const div = document.createElement("div");
        labelContainer.appendChild(div);
      }

      recognizer.listen(result => {
        const scores = result.scores;
        const helloScore = scores[0]; // Adjust these indexes if needed
        const noiseScore = scores[1];

        labelContainer.childNodes[0].innerHTML = "Hello: " + helloScore.toFixed(2);
        labelContainer.childNodes[1].innerHTML = "Noise: " + noiseScore.toFixed(2);

        if (helloScore > 0.75) {
          sendToArduino("HELLO");
        } else if (noiseScore > 0.75) {
          sendToArduino("NOISE");
        }
      }, {
        includeSpectrogram: true,
        probabilityThreshold: 0.75,
        invokeCallbackOnNoiseAndUnknown: true,
        overlapFactor: 0.5
      });
    }
  </script>
</body>
</html>






#define GREEN_LED 7
#define RED_LED 8

void setup() {
  Serial.begin(9600);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(RED_LED, OUTPUT);
}

void loop() {
  if (Serial.available()) {
    String input = Serial.readStringUntil('\n');

    if (input.indexOf("HELLO") >= 0) {
      digitalWrite(GREEN_LED, HIGH);
      digitalWrite(RED_LED, LOW);
    } else if (input.indexOf("NOISE") >= 0) {
      digitalWrite(GREEN_LED, LOW);
      digitalWrite(RED_LED, HIGH);
    }
  }
}

No comments:

Post a Comment

MUD Three Mode operation Manual Automatic GPS

 Code for three mode operation: /*   3-Mode Headlight Controller   - Manual mode (driver uses a toggle to pick high/low)   - Auto mode (LDR...