Bonjour à tous,

Je suis étudiant en 2ème année de DUT Mesures Physiques et je suis actuellement en stage de fin d'étude. Il m'est demandé de piloter un capteur de température et d'humidité/température ... mais avant de je dois prendre en main Lazarus version 1.2.4. Je découvre à peine ce langage c'est pourquoi je sollicite votre aide.
Le but de l'application est de faire clignoter une led, et de choisir le nombre de clignotements. J'utilise les fonctions arduino dans mon code car je les ai déjà utilisées dans ma formation. Voici le code que j'utilise:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  libwiringpi, Dos;   //libwiringpi permet d'utiliser les fonctions arduino 
 
 
type
 
  { TForm_Cligno2 }
 
  TForm_Cligno2 = class(TForm)
    Valider: TButton;
    Edit1: TEdit;                        //permet de choisir le nombre de clignotements
    Label1: TLabel;
    Test: TButton;
    close_all: TButton;
    procedure close_allClick(Sender: TObject);    //stoppe l'application
    procedure FormCreate(Sender: TObject);
    procedure TestClick(Sender: TObject);         // lance un cycle de 10 clignotements
    procedure ValiderClick(Sender: TObject);      //valide le nb de clignotement choisi par l'utilisateur
  private
    { private declarations }
  public
    { public declarations }
  end;   
 
var
  Form_Cligno2: TForm_Cligno2;        //variables globales
  nb_cycle: string;
  r: longint;
  Edit1: TEdit;
  nb_clignotements: longint;    
 
 
implementation
 
{$R *.lfm}
 
{ TForm_Cligno2 }
 
 
procedure TForm_Cligno2.FormCreate(Sender: TObject);
 
 
begin
     r := wiringPiSetup; // permet d'utiliser les fonctions d'arduino
     pinMode(15, OUTPUT); //configure le port ou est relié la led en sortie
     digitalWrite(15, 0);
 
end; 
 
 
procedure Recup_Text; //procédure pour récupérer le nombre de clignotement saisi dans l'edit
 
var chaine: string;
 
begin
 
      Edit1.text :=chaine;                       //récupère le texte saisi dans l'edit
     nb_clignotements:=StrToInt(chaine);         // convertit en longint pour utiliser dans une autre procédure
 
 
end;   
 
Procedure TForm_Cligno2.ValiderClick(Sender: TObject);      //lance le cycle de clignotement de la led
 
  var j:longint;
 
begin
     Recup_Text;
     j:=0;
                while j<nb_clignotements do
                                 begin
                                           j:=j+1;
                                           digitalWrite(15, 1);        //allume la led
                                           delay(50);
                                           digitalWrite(15, 0);         //éteint la led
                                           delay(50);
                                 end;
end;   
 
procedure TForm_Cligno2.close_allClick(Sender: TObject);    //arrête l'application
begin
  Close;
end;
 
 
 
 
procedure TForm_Cligno2.TestClick(Sender: TObject); //déclenche le cylce de 10 clignotements
 
 var  i: longint;
 
begin
           i:=0;
 
                  while  i<9 do
                              begin
                                  i:=i+1 ;
                                  digitalWrite(15, 1);
                                  delay(50);
                                  digitalWrite(15, 0);
                                  delay(50);
 
                              end;
 
 
end;
 
 
 
end.

Le programme se compile et s’exécute normalement : quand je clique sur test, je peux rentrer une valeur dans l'edit mais quand je clique sur valider une fenêtre d'erreur m'apparait :
'Le projet Cligno2 à levé une exception de class 'External: SIGSEGV', puis je suis redirigé vers la ligne du code "control.inc" suivante:
GetTextMethod := TMethod(@Self.GetTextBuf);

Je ne comprends vraiment pas ce qui ne va pas. J'ai essayé d'être le plus clair possible, mais n'hésitez pas à me demander pour des photos ou autre.

Merci d'avance,

Thibault FERREIRA