AS5600 Sensor gibt nichts aus

mein code sieht so aus

#include <Wire.h>
#include <AS5600.h>
#ifdef ARDUINO_SAMD_VARIANT_COMPLIANCE
  #define SERIAL SerialUSB
  #define SYS_VOL   3.3
#else
  #define SERIAL Serial
  #define SYS_VOL   5
#endif

AMS_5600 ams5600;

int ang, lang = 0;

void setup()
{
  SERIAL.begin(9600);
  Wire.begin();
  SERIAL.println(">>>>>>>>>>>>>>>>>>>>>>>>>>> ");
  if(ams5600.detectMagnet() == 0 ){
    while(1){
        if(ams5600.detectMagnet() == 1 ){
            SERIAL.print("Current Magnitude: ");
            SERIAL.println(ams5600.getMagnitude());
            break;
        }
        else{
            SERIAL.println("Can not detect magnet");
        }
        delay(1000);
    }
  }
}
/*******************************************************
/* Function: convertRawAngleToDegrees
/* In: angle data from AMS_5600::getRawAngle
/* Out: human readable degrees as float
/* Description: takes the raw angle and calculates
/* float value in degrees.
/*******************************************************/
float convertRawAngleToDegrees(word newAngle)
{
  /* Raw data reports 0 - 4095 segments, which is 0.087890625 of a degree */
  float retVal = newAngle * 0.087890625;
  return retVal;
}
void loop()
{
    SERIAL.println(String(convertRawAngleToDegrees(ams5600.getRawAngle()),DEC));
}

es gibt nur >>>>>>>>>>>>>>>>>>>>>>>>>>> aus und nichts wenn ich einen magneten drüber halte der Sensor ist so angeschlossen:
VCC -> 3.3V
OUT -> A0
GND -> GND
ich benutze die SEEED AS5600 library
ich habe keine I2C
danke im voraus

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

sorry hab ich nicht gemerkt

Warum nicht?

Weil ich sie soweit ich weiß nicht undbedingt brauche

Ist/Hat das denn eine Possibility?

Heute darfst du bemerken, wie dermaßen man sich doch irren kann.
Ist doch auch mal ganz schön ....

und das Ganze kosten- und gebührenfrei :slight_smile:

Also liefert die Methode detectMagnet() nicht 0 zurück.
Da du aber nicht sagst, dass loop permanent die Serielle Schnittstelle mit zehnstelligen Float-Zahlen zuballert, stimmt was nicht an deiner Problembeschreibung.

Evtl. kommt jede Sekunde der Text
"Can not detect magnet"
und der Sketch kommt nie aus setup raus?

leider kommt nichtmal "Can not detect magnet"
wie könnte ich es den ermöglichen dass detectMagnet() 0 zurückliefert

Da musst du in die AS5600 Bibliothek gucken.

Ich glaube das problem liegt daran das ich im Code erst einstellen muss dass es den analogen pin statt den I2C pins nutzen soll ich weiß aber nicht wie

Gib uns mal Links vom Sensor, der Lib (es gibt mehrere) und woher Du den Sketch hast.

Gruß Tommy

Sensor
library
Sketch ist einfach aus der library examples und heißt read angle

Die Lib arbeitet aber mit I2C, also musst Du auch nach I2C verkabeln und nicht nach A0. Hast Du die Readme auf der Startseite zur Lib gelesen und befolgt?

Gruß Tommy

du hast recht ich hab jetzt chatgpt einfach code schreiben lassen und es funktioniert

while (Wire.available() == 0)
    ;

Da wird es wohl hängen...
( AMS_5600::readOneByte wird in AMS_5600::detectMagnet aufgerufen)

Poste den Sketch, damit alle was davon haben.

Wieso fragst du hier, wenn du nichts lernen willst?

// AS5600 Pin-Belegung
const int AS5600_OUT_PIN = A0; // Analoger Ausgang des Sensors
const float MAX_ANGLE = 360.0; // Maximaler Winkel, den der Sensor messen kann

void setup() {
  Serial.begin(9600); // Starten der seriellen Verbindung für die Ausgabe
}

void loop() {
  // Lesen des analogen Ausgangs des AS5600 Sensors
  int sensorValue = analogRead(AS5600_OUT_PIN);

  // Berechnen des Winkels
  float angle = (float)sensorValue / 1024.0 * MAX_ANGLE;

  // Ausgabe des Winkels auf der seriellen Schnittstelle
  Serial.print("Winkel: ");
  Serial.print(angle);
  Serial.println(" Grad");

  delay(1000); // Pause für 1 Sekunde
}