I was able to get Lazarus (pascal) working with Arduin. I can send a command to Arduino to turn on several LEDs. I just add several Hall Effect Sensors on Arduino. I was able to get the data from Arduino on Serial Monitor from Arduino IDE but I could not figure out how to get the code from Arduino to Lazarus. I need some source code for Lazarus and Arduino that Lazarus can get the data from Arduino.
int led = 13; // Pin 13
void setup()
{
pinMode(led, OUTPUT); // Set pin 13 as digital out
// Start up serial connection
Serial.begin(9600); // baud rate
Serial.flush();
}
void loop()
{
String input = "";
// Read any serial input
while (Serial.available() > 0)
{
input += (char) Serial.read(); // Read in one char at a time
delay(5); // Delay for 5 ms so the next char has time to be received
if (input == "on")
{
digitalWrite(led, HIGH); // on
}
else if (input == "off")
{
digitalWrite(led, LOW); // off
}
}
}
procedure TForm1.FormCreate(Sender: TObject);
begin
ser := TBlockSerial.Create;
Sleep(25); //250
ser.Connect('COM5'); // write here Arduino COM port number (on linux it's something like '/dev/ttyUSB0')
Sleep(25); //250
ser.Config(9600, 8, 'N', SB1, False, False);
ser.RTS := false; // comment this if needed
ser.DTR := false; // comment this if needed
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Ser.SendString('off1');
end;
Is 'COM5' the actual serial port you have, or is that just the example name in the code?
TBlockSerial has methods for checking the serial buffer for data such as CanRead().
Perhaps the folks over at https://forum.lazarus.freepascal.org/ can help with a simple send and receive example.