#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.
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?
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
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?
// 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
}