Mein Code funktioniert nicht für eine Motorsteuerung über den Raspberry?
Ich versuche eine Steuerung für einen Miniatur-Kran mit einem raspberry zu bauen. Die Steuerung läuft über eine HTML-Website (Laut Chat-gpt ist die richtig, einfach fragen wenn ihr das Script dazu noch benötigt). Auf Putty kommt die Meldung, sobald ich auf dem Knopf drücke, das der GPIO-Pin kein Pin auf dem Raspberry ist.
Das ist das Code:
using Microsoft.AspNetCore.Mvc;
using System.Device.Gpio;
using System.Numerics;
namespace Kransteuerung_MEKW.Controllers
{
[ApiController]
[Route("[controller]")]
public class CraneController : ControllerBase
{
private readonly GpioController _gpioController;
private readonly ILogger<CraneController> _logger;
public CraneController(ILogger<CraneController> logger)
{
_logger = logger;
_gpioController = new GpioController(PinNumberingScheme.Board);
var allOutputPinNumbers = new List<int>{ 3 };
_logger.LogInformation("Setze alle GPIO Pins auf Output start");
foreach (int pinNumber in allOutputPinNumbers)
{
var pin = _gpioController.OpenPin(pinNumber);
pin.SetPinMode(PinMode.Output);
pin.Write(PinValue.Low);
}
_logger.LogInformation("Setze alle GPIO Pins auf Output fertig");
}
[HttpGet()]
public string Info()
{
return "Mögliche Posts: crane/turnLeftStart oder crane/turnLeftStop";
}
[HttpPost("turnLeftStart")]
public void TurnLeftStart()
{
_logger.LogInformation("Kran dreht links start");
var pin = _gpioController.OpenPin(3);
pin.Write(PinValue.High);
}
[HttpPost("turnRightStart")]
public void TurnRightStart()
{
_logger.LogInformation("Kran dreht rechts start");
var pin = _gpioController.OpenPin(4);
pin.Write(PinValue.High);
}
[HttpPost("turnLeftStop")]
public void TurnLeftStop()
{
_logger.LogInformation("Kran dreht links stop");
var pin = _gpioController.OpenPin(3);
pin.Write(PinValue.Low);
}
[HttpPost("turnRightStop")]
public void TurnRightStop()
{
_logger.LogInformation("Kran dreht rechts stop");
var pin = _gpioController.OpenPin(4);
pin.Write(PinValue.Low);
}
}
}
PS: Nach links dreht sich der Motor, er dreht sich aber nicht nach rechts. Auf der HTML-Website wird auch ein Error angezeigt. Einen Motorentreiber benutze ich dafür.
HTTP Code 500 steht für internal Server Error. Wähle mal in den Dev Tools eine der fehlgeschlagenen Anfragen aus und ergänze die Infos die im Antwort Tab enthalten sind.
Es gibt einen Fehler beim laden der Antwortdaten
1 Antwort
In den Logs müssten die Exception geloggt sein die den Fehler verursacht. Wenn du zugriff auf die Konsolen Ausgabe hasst müsste die dort geloggt sein. Wenn du nicht auf die Konsole zugreifen kannst, dann nutze eine 3rd Party Lib wie Serilog um die Logs in eine Datei zu schreiben.