pascalio - Input-/Output-Bibliothek für Free Pascal

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von Socke »

Hallo zusammen,

auf dem Forentreffen 2013 in Köln hatte ich ein Projekt vorgestellt, mit dem das Ansprechen der Ein- und Ausgänge des Raspberry Pi vereinfacht werden soll. Dazu werden Klassen für den Zugriff auf GPIO-Pins sowie den SPI- und I2C-Bus bereitgestellt. Dazu kommen Klassen um die GPIO-Pins eines GPIO-Expanders (wie dem MCP23017/MCP23S17) anzusprechen ohne sich über den Weg dahin Gedanken machen zu müssen.


Vielen Dank für euer Feedback :D
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von corpsman »

Servus,

Ich versuche mal wieder was mit dem Pi zu machen, und bin auf deine Lib gestosen. Ich suchte etwas mit dem ich nicht nur die GPIO's sondern auch die Sonderfunktionen (I2C, SPI) ansteuern kann.

Mittels : TGpioLinuxPin kann ich wunderbar auf Pins schreiben und Lesen.

Doch ich weis nicht so recht wie ich mit TSPILinuxDevice umgehen soll.

Das beginnt schon mit

SPI := TSPILinuxDevice.create(??, 7);

Was muss ich als Bus angeben ? Habe mal unter /dev/spidev gesucht, aber dort kann ich leider nichts der Gleichen finden, ..

In den Samples habe ich leider auch nichts passendes finden Können, kannst du mir hier weiter helfen ?

Gruß

Corpsman

[Edit]

So also hier steht dass man vorher ein :
sudo modprobe spi-bcm2708

machen muss, und dann ist auch Klar, dass man mittels
SPI := TSPILinuxDevice.create(0, 1);
arbeiten mus :)
--
Just try it

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von Socke »

Vielen Dank für das Feedback. Das Laden der entsprechenden Module werde ich in den nächsten Tagen in der Dokumentation aufnehmen. Wenn man die Module standardmäßig lädt, vergisst man die einfach ;-)

Wenn du noch mehr Feedback oder sogar Patches hast, nehme ich die gerne auf. In den letzten Monaten hatte ich mich leider anderen Projekten zugewendet -- das soll sich aber nächste Woche ändern.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von corpsman »

Ich versuche gerade mit deiner Lib das Raspberry Pi Display "C-Berry" an zu steuern.

Dazu portiere ich das mit gelieferte Sample, ist allerdings extrem aufwendig..

Wenns Fertig ist, poste ichs ;).

Corpsman

[Edit]

Ach und ein "Report" hätte ich auch schon :

Code: Alles auswählen

 
  RAIO_RST := TGpioLinuxPin.Create(P22);
  RAIO_RST.direction := gdin;
if RAIO_RST.direction = gdIn then begin
 .. Dieser Code wird nie ausgeführt ..
end;
 


[Edit2]
Aktuell bin ich bei dem Stand, dass wenn ich ein SPI.Write mache es nur 0en schreibt, und nicht das was ich will..
Zudem ist der Zugriff wohl extrem Langsam, ...

Code: Alles auswählen

 
  SPI := TSPILinuxDevice.Create(0, 1); // Device 0, Chipselect 1 => SPI with P26 as Chip Select
  SPI.BitsPerWord := 8;
  SPI.LSBFirst := False;
  SPI.Mode := SPI_MODE_2; // Was Stellt man hier eigentlich ein ?. Alle Mod 0..3 geben aber nichts aus.
..
procedure tCBerry.data_out(Value: integer);
var a:Array [0..1] of byte;
begin
//  a[0] := (value shr 8) and $FF;
//  a[1] := value and $FF;
  a[0] := $AA;
  a[1] := $AA;
  spi.Write(a, 2);
end;
 


Die Clock Leitung wackelt, ebenso die Chipselect Leitung, aber an Data Out ists still.

[Edit3]

Wenn man InheritFromTStream in fpspi ausschaltet compilierts nicht mehr,

Code: Alles auswählen

 
unit fpspi;
 
{$mode objfpc}{$H+}
{.$DEFINE InheritFromTStream}
interface
 
uses
  Classes,
 // {$IFDEF InheritFromTStream} // Das muss Raus
  SysUtils,
//  {$ENDIF InheritFromTStream}// Das muss Raus
  spidev, baseunix, RtlConsts; 
..
 
--
Just try it

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von Socke »

corpsman hat geschrieben:Ich versuche gerade mit deiner Lib das Raspberry Pi Display "C-Berry" an zu steuern.

Dazu portiere ich das mit gelieferte Sample, ist allerdings extrem aufwendig..

In der Unit spidev findest du die Übersetzung des SPI-Linux-Headers zur Ansteuerung der /dev/spi-Geräte - für den Fall, dass du direkt mit Linux arbeiten willst.

In der Tat hast du mich mit SPI auf dem vollkommen falschen Fuß erwischt; ich hatte mich zuerst um den I2C-Port gekümmert (und der läuft auch recht reibungslos). Zum SPI bin ich noch nicht wirklich gekommen. Daher muss man hier leider noch mit falsch übersetzten C-Funktionen oder falsch definierten Records kämpfen (Beta!-Status).

corpsman hat geschrieben:Ach und ein "Report" hätte ich auch schon :

Das wird direkt auf dem Linux-Device gesetzt und abgefragt; vielleicht ist der IOCtl-Aufruf fehlerhaft.

corpsman hat geschrieben:[Edit2]
Aktuell bin ich bei dem Stand, dass wenn ich ein SPI.Write mache es nur 0en schreibt, und nicht das was ich will..
Zudem ist der Zugriff wohl extrem Langsam, ...

Wenn es zu langsam ist, musst du ggf. die Geschwindigkeit setzen.

corpsman hat geschrieben:SPI.Mode := SPI_MODE_2; // Was Stellt man hier eigentlich ein ?. Alle Mod 0..3 geben aber nichts aus.

Der Mode gibt die Konfiguration von Clock Polarität (CPOL) und Clock Phase (CPHA) an (siehe http://de.wikipedia.org/wiki/Serial_Per ... lichkeiten). Die genauen Details sind in https://www.kernel.org/doc/Documentatio ... pi-summary und https://www.kernel.org/doc/Documentation/spi/spidev nachzulesen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von corpsman »

Der Mode gibt die Konfiguration von Clock Polarität (CPOL) und Clock Phase (CPHA)

So was in der Art dachte ich mir schon, Wenn ich meinem Oscilloscop trauen kann, dann funktioniert dies allerdings nicht. Bzw. ändert sich bei den Ausgaben nichts.

Ansich gefällt mir deine Klassen Variante, nur muss ich sie halt zum laufen bringen *g*.

Mit Langsam meinte ich den Zugriff mittels TGpioLinuxPin.value := X; setze ich das bei 2en direkt nacheinander dann dauert es sehr lange, in der C-Version geschieht dies quasi synchron.

Ich bleib an der Sache dran, evtl finde ich ja was..

[Edit]

So also dein SPI-Modul habe ich nicht zum Laufen bekommen, aber ein Dummy geschrieben. Damit kann ich das Display nun Ansteuern ( Zur Zeit gehen nur Linien, aber es wird mehr *g*)

Code: Alles auswählen

unit spi_dummy;
 
{$mode objfpc}{$H+}
{$define HW_REVISION_01}
 
interface
 
uses
  fpspi,  Classes, SysUtils,fpgpio;
 
type
 
  { TSPILinuxDeviceDummy }
 
  TSPILinuxDeviceDummy = Class
  private
    mosi: TGpioLinuxPin;
    miso: TGpioLinuxPin;
    CS: TGpioLinuxPin;
    CLK: TGpioLinuxPin;
  public
    BitsPerWord :integer;
    LSBFirst :boolean;
    Mode :TSPIMode;
    constructor create(dummy1, dummy2:integer);
    destructor free;
    Procedure Write(Const Buffer; ByteCount:integer);
  end;
 
 
implementation
const
// Mapper Pin Number to GPIO Port
{$ifdef HW_REVISION_01}
P3 = 0;
P5 = 1;
P13 = 21;
{$else}
P3 = 2;
P5 = 3;
P13 = 27;
{$endif}
P7 = 4;
P8 = 14;
P10 = 15;
P11 = 17;
P12 = 18;
P15 = 22;
P16 = 23;
P18 = 24;
P19 = 10;
P21 = 9;
P22 = 25;
P23 = 11;
P24 = 8;
P26 = 7;
 
{ TSPILinuxDeviceDummy }
 
constructor TSPILinuxDeviceDummy.create(dummy1, dummy2: integer);
begin
  inherited create;
  mosi:= TGpioLinuxPin.create(P21); // Eingang
  mosi.direction := gdIn;
  miso:= TGpioLinuxPin.create(P19);   // Ausgang
  miso.direction := gdout;
  miso.value := false;
  if dummy2 = 1 then begin
    CS:= TGpioLinuxPin.create(P26);
  end else begin
    CS:= TGpioLinuxPin.create(P24);
  end;
  cs.direction := gdout;
  cs.value := true;
  CLK:= TGpioLinuxPin.create(P23);
  clk.direction := gdout;
  clk.value := false;
end;
 
destructor TSPILinuxDeviceDummy.free;
begin
  mosi.free;
  miso.free;
  cs.free;
  clk.free;
end;
 
procedure TSPILinuxDeviceDummy.Write(const Buffer; ByteCount: integer);
var i, j: integer;
    a: PByte;
    b:Byte;
begin
  //system.write('Write ');
  cs.value := false;
  a := @buffer;
  for i := 0 to Bytecount -1 do begin
    //system.write(format('%0.2X ', [a^]));
    for j := 7 downto 0 do begin
      miso.value := (a^ and (1 shl j)) <> 0;
      clk.value := true;
      clk.value := false;
      // Würden wir Gleichzeitig lesen müsste Mosi hier ausgewertet werden.
    end;
    inc(a);
  end;
  cs.value := true;
  //writeln('');
end;
 
end.
 
--
Just try it

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von Socke »

corpsman hat geschrieben:[Edit]

Ach und ein "Report" hätte ich auch schon :

Code: Alles auswählen

 
  RAIO_RST := TGpioLinuxPin.Create(P22);
  RAIO_RST.direction := gdin;
if RAIO_RST.direction = gdIn then begin
 .. Dieser Code wird nie ausgeführt ..
end;
 

gefixt.

Was den SPI-Bus angeht: die Klasse TSPILinuxDevice hatte ich erfolgreich bei dem Baustein MCP3008 verwendet (siehe auch die entsprechenden Klassen in fpspilib). Bei einem neuen Test mit dem Baustein MCP23S17 bin ich direkt über den IoCtl-System-Call gegangen, konnte hier jedoch nur Daten lesen. Aus irgendeinem Grund gingen keine Daten raus. Die Geschwindigkeit hingegen war in Ordnung (funktioniert ab 5 kHz Minimum). Auf der anderen Seite habe ich festgestellt, dass die Verbindung zwischen Raspberry Pi und dem Breadboard sehr empfindlich war und leicht gestört werden konnte.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von corpsman »

so ich habe da mal wieder eine frage zu deiner Library.

Diesmal versuche ich den Si7020 an den Raspberry an zu binden. Und habe dabei so meine Probleme.

So wie ich das sehe (Datenblatt Seite 20 / 21) unterstützt der IC nur das "NAk -Polling", oder das Clock Stretching, aber keinen "Vernünftigen" Zugriff wie das der BMP180 macht (den ich übrigens 1a ansteuern kann).

In der i2c_dev.pas gibts in Zeile 57 eine Konstante die da heist : I2C_M_IGNORE_NAK was mir Prinzipiell die Hoffnung gibt, das es möglich sein muss mit dem Raspberry auf den Si7020 zu verbinden und Daten aus zu tauschen, nur weis ich leider nicht wie.

Ob nun via "NAk -Polling" oder Clock Stretching ist mir dabei eigentlich wurscht, kannst du mir sagen wie ich deine Lib dazu ertüchtige mit dem Si7020 zu kommunizieren ?

Übrigens Kriege ich mit den "i2cget" und "i2cset" tools auch keine Vernünftige Verbindung hin. Wenn ich Pech habe kann das die Hardware vom Pi nicht ?

[Edit]
So nach einer kleinen Internet Suche scheint es so zu sein, dass der RaspberryPi das Clock Stretching nicht kann (siehe hier) wenn ich das richtig verstehe ist das ein Bug in der Hardware, einzige Lösung ist die i2c Geschwindigkeit extrem zu verringern, so dass quasi nicht mehr gestrechted werde muss. Mal schaun ob ich noch was zum Nack-polling finde..
--
Just try it

faloraspi
Beiträge: 1
Registriert: So 25. Jan 2015, 15:28

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von faloraspi »

Hallo Socke,

ich bin neu hier und habe vor labger Zeit mit TP4.0 angefangen, mit TP6 meine Diplomarbeit geschrieben und später immer mal wieder was in Delphi gefrickelt.
Da ich die Sntax von Pascal/Delphi noch recht gut beherrsche habe ich mich an Lazarus gewagt und setze auf meinen Raspberries Deine Bibliothek ein. Es funktioniert auch alles so wie es soll (sind auch recht einfache Programme), allerdings bekomme ich es nicht hin an mehreren Ports (GPIO's) gleichzeitig den Interrupt abzufragen. Deshalb bitte ich um eine kleine Erläuterung für einen alten Mann der doch schon länger draussen ist..................

greetz
Olaf

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von Socke »

faloraspi hat geschrieben:allerdings bekomme ich es nicht hin an mehreren Ports (GPIO's) gleichzeitig den Interrupt abzufragen.

Die Interrupt-Funktionen können nur mit einem GPIO arbeiten. Daher musst du für jeden GPIO einen Thread erstellen und darin den jeweiligen GPIO abfangen.

Andernfalls musst du eine eigene Funktion schreiben, die wie TGpioLinuxPin.WaitForInterrupt arbeitet:
  1. alle gpio/value-Dateien öffnen und auslesen
  2. Dateihandles in einem Array of pollfd zusammenfassen
  3. Funktion FpPoll() aufrufen
  4. Geänderte Datei im Array suchen
  5. Datei erneut öffnen und auslesen
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

roodemol
Beiträge: 1
Registriert: So 14. Feb 2016, 17:27

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von roodemol »

Hallo,

Ich beschäftige mich seit kurzem wieder mit Pascal und bin im FreePascal Wiki auf diese Bibliothek gestoßen, meine ersten Tests waren sofort Erfolgreich. Vielen Dank für diese Veröffentlichung von diesem Package, gute Arbeit.

Jetzt habe ich mir das Beispiel im Verzeichnis
pascalio/examples/linux_interrupt
genauer angeschaut, dort befindet sich folgender Quellcode:

Code: Alles auswählen

 
procedure InstallSignalHandler;
var
  na, oa: psigactionrec;
begin
  new(na);
  new(oa);
  na^.sa_Handler:=SigActionHandler(@DoSig);
  fillchar(na^.Sa_Mask,sizeof(na^.sa_mask),#0);
  na^.Sa_Flags:=0;
  {$ifdef Linux}               // Linux specific
   na^.Sa_Restorer:=Nil;
  {$endif}
  if fpSigAction(SIGINT,na,oa) <> 0 then
  begin
    writeln('Error: ',fpgeterrno,'.');
    halt(1);
  end;
  Dispose(na);
  Dispose(oa);
end;
 

Was macht dieser Code? Genauer gesagt wozu dient oa? Das einfache Beispiel aus dem Wiki funktioniert bei mir.

MFG,
Gilles

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von Socke »

Hallo,

roodemol hat geschrieben:Jetzt habe ich mir das Beispiel im Verzeichnis
pascalio/examples/linux_interrupt
genauer angeschaut, dort befindet sich folgender Quellcode:

Code: Alles auswählen

 
procedure InstallSignalHandler;
var
  na, oa: psigactionrec;
begin
  new(na);
  new(oa);
  na^.sa_Handler:=SigActionHandler(@DoSig);
  fillchar(na^.Sa_Mask,sizeof(na^.sa_mask),#0);
  na^.Sa_Flags:=0;
  {$ifdef Linux}               // Linux specific
   na^.Sa_Restorer:=Nil;
  {$endif}
  if fpSigAction(SIGINT,na,oa) <> 0 then
  begin
    writeln('Error: ',fpgeterrno,'.');
    halt(1);
  end;
  Dispose(na);
  Dispose(oa);
end;
 

Was macht dieser Code? Genauer gesagt wozu dient oa? Das einfache Beispiel aus dem Wiki funktioniert bei mir.

Die Prozedur InstallSignalHandlerinstalliert einen Singnal-Handler (Prozedur DoSig()) um auf das Signal SIGINT zu reagieren und das Programm sauber zu beenden.
Im Parameter oa wird der bisher registrierte Signal-Handler zurückgegeben; da dieser hier nicht verarbeitet wird, wäre auch folgendes möglich:

Code: Alles auswählen

procedure InstallSignalHandler;
var
  na, oa: SigactionRec;
begin
  na.sa_Handler:=SigActionHandler(@DoSig);
  fillchar(na.Sa_Mask,sizeof(na.sa_mask),#0);
  na.Sa_Flags:=0;
  {$ifdef Linux}               // Linux specific
    na.Sa_Restorer:=Nil;
  {$endif}
  if fpSigAction(SIGINT,@na,nil) <> 0 then
  begin
    writeln('Error: ',fpgeterrno,'.');
    halt(1);
  end;
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

jagko
Beiträge: 1
Registriert: Di 1. Mär 2016, 15:15

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von jagko »

Hallo,

ich habe mir für ein paar kleine Spielereien nun einen RPi zugelegt. Und weil ich in meiner Jugend mal Pascal ausprobiert habe, möchte ich mit Lazarus und pascalio Bibliothek mein Glück versuchen.

Mit den Testprogrammen habe ich auch schon kleine Erfolge erzielen können.
Jetzt habe ich aber speziell zum SPI zwei, vielleicht etwas naive Fragen:

Gibt es einen Event, um Mitzubekommen, dass sich am SPI mit angeschlossenem MCP3008 etwas geändert hat?

Kann ich über TMCP3008.Value auch einen Wert setzen, der mir am MCP3008 dann als Spannung ausgegeben wird?

Viele Grüße
Konrad

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von Socke »

jagko hat geschrieben:Kann ich über TMCP3008.Value auch einen Wert setzen, der mir am MCP3008 dann als Spannung ausgegeben wird?

Nein. Der MCP3008 ist ein reiner Analog-Digital-Converter (ADC). Für die entgegengesetze Richtung brauchst du einen Digital-Analog-Converter (DAC).

jagko hat geschrieben:Gibt es einen Event, um Mitzubekommen, dass sich am SPI mit angeschlossenem MCP3008 etwas geändert hat?

Die an einen SPI-Bus angeschlossenen Geräte dürfen nur Daten senden, wenn der SPI-Master (hier der Raspberry Pi) das Gerät dazu aufgefordert hat (indem die Leitung Cable-Select auf die passende Spannung gezogen wird). Der MCP3008 hat auch keine andere Möglichkeit, nach Außen zu kommunizieren. Hier gibt es mit Sicherheit andere ADC, die eine Interrupt-Leitung besitzen. Diese Interrupt-Leitung wird dann mit einem GPIO-Eingang verbunden, dess Änderungen überwacht werden.
Beim MCP3008 kannst du also nur die aktuellen Werte selbst regelmäßig abfragen (Polling, z.B. per Timer).

Hier das Datenblatt zum MCP3008 http://www.mikrocontroller.net/part/MCP3008
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Murphy.
Beiträge: 20
Registriert: Fr 21. Okt 2016, 19:02

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitrag von Murphy. »

Hi,

ich beschäftige mich seit kurzem mit dem Raspberry Pi + Lazarus und habe eine Frage zu PascalIO. Ich würde gerne mit einem GPIO Pin über einen Transistor ein Relai schalten. Das Relai soll bei Überschreitung der Maximaltemperatur an einem Sensor schalten. Mit der Unit fpgpio müsste das doch eigentlich funktionieren.

Ich habe bist jetzt folgendes probiert um GPIO 21 bzw. Pin 40 auf true zu setzen.

Code: Alles auswählen


Code: Alles auswählen

procedur TForm5.Timer1Timer(Sender: TObject);
    var
    gpio: TGpioLinuxPin,
    write: TGpioDirection;
    begin
    na := True;
    gpio := TGpioLinuxPin.Create(21);
    gpio.Direction := write;
    gpio.Value := true;
    gpio.Destroy;
    end





Wäre cool wenn mir jemand auf die Sprünge helfen könnte.

Antworten