Raspberry zu Arduino per I2C

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
braspi
Beiträge: 57
Registriert: So 20. Mär 2016, 16:39

Re: Raspberry zu Arduino per I2C

Beitrag von braspi »

Hallo, habe nochmal ein Beispiel für meinen Raspi.
Downloadbar auf http://teso.de/web.teso_16_raspi/rp2ar.htm
BildBild
Grüße

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Raspberry zu Arduino per I2C

Beitrag von Mathias »

Noch ein Verbesserungsvorschlag, du hast Radio-Buttons für die I²C Device.

Ich würde dir eine Combo-Box empfehlen und eine Autoerkennung der vorhandenen Ports.

Code: Alles auswählen

var
  SLPort: TStringList;
begin
  SLPort := FindAllFiles('/dev', 'i2c*', False);
  ComboBoxI2C.Items.Assign(SLPort);
  SLPort.Free;   

Somit ist dein Programm gerüstet, wen es mal 3 oder mehr Schnittstellen gibt. :wink:

So nebenbei, ich dachte der Raspi hat nur eine I²C-Schnittstelle.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

braspi
Beiträge: 57
Registriert: So 20. Mär 2016, 16:39

Re: Raspberry zu Arduino per I2C

Beitrag von braspi »

Hallo Mathias,
wenn ich das richtig gelesen habe, dann gibt es 2 i2c-Schnittstellen.
Ich habe mal deinen Vorschlag umgesetzt.

Code: Alles auswählen

 
var
  SLPort: TStringList;
begin
  SLPort := FindAllFiles('/dev/', 'i2c*', False);       // "/" fehlt in '/dev'
  ComboBoxI2C.Items.Assign(SLPort);
  SLPort.Free
 

... dann muss ich den ersten Eintrag ComboBoxI2C.Text := SLPort[0]; setzen.
Fehlt der Eintrag, dann schmiert das Programm ab, d.h. ich müßte noch eine mögliche Fehlerroutine schreiben.
Der Aufwand ist mir zu groß. Eigentlich ist das "Programm" als Lernhilfe für mich (und andere) gedacht.
Ich wollte so wenig wie möglich in das Programm reinpacken. Ich hasse das, wenn Beispiele das ganze Weltall und alle Möglichkeiten darstellen wollen.
Zum Schluss weiß ich nicht mehr wo der Anfang war.
Trotzdem und sowieso herzlichen Dank für dein Interesse. Ich bin immer für Tipps dankbar.

Und zu C : Im letzten Winter habe ich mir ein ESP8266 zugelegt, Spottbillig und super schnell und mit WLan.
Also mit "C" angefangen. Solange ein Pinchen gesetzt werden soll oder ein DHT22 abgefragt werden soll, ist "C" wirklich einfach.
Grüße
Zuletzt geändert von braspi am Mi 10. Mai 2017, 11:38, insgesamt 1-mal geändert.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Raspberry zu Arduino per I2C

Beitrag von Mathias »

wenn ich das richtig gelesen habe, dann gibt es 2 i2c-Schnittstellen.

Du hast falsch gelesen, die 2 Schnittstellen habe ich bei deinem Bild oben gesehen.

... dann muss ich den ersten Eintrag ComboBoxI2C.Text := SLPort[0]; setzen.
Dies ist sehr gefährlich, wen keine I²C-Schnittelle vorhanden ist, dann hast du ein SIGSEV.

Der Aufwand ist mir zu groß. Eigentlich ist das "Programm" als Lernhilfe für mich (und andere) gedacht.

Der Aufwand ist sehr klein, aber dafür wird sich kein Nutzer mit Abstürzen nerven.

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
var
  SLPort: TStringList;
begin
  SLPort := FindAllFiles('/dev', 'i2c*', False);       // "/" fehlt in '/dev'
  ComboBox1.Items.Assign(SLPort);
  SLPort.Free;
  if ComboBox1.Items.Count > 0 then begin
    ComboBox1.Text := ComboBox1.Items[0];
  end else begin
    ShowMessage('Kein I²C-Bus vorhanden, Programm wird beendet !');
    Application.Terminate; // Wen nicht in Create, kann es auch Close sein.
  end;
end;   


// "/" fehlt in '/dev

Bei mir geht es auch ohne den "/" .
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

braspi
Beiträge: 57
Registriert: So 20. Mär 2016, 16:39

Re: Raspberry zu Arduino per I2C

Beitrag von braspi »

Hallo Mathias,

- Bei mir geht es auch ohne den "/" . stimmt, aber ich wollte mal alle Dateien anzeigen lassen. Da ging es nicht ohne. EGAL.
- Deinen Vorschlag habe ich eingeabeitet und steht zum Download bereit.
Bild
Bild
Klappt wunderbar. Merci
Grüße ...

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Raspberry zu Arduino per I2C

Beitrag von Mathias »

Wen du auf deinem PC Linux hast, wird dein Programm auch dort laufen, und die I²C erkennen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten