Now I got it working. I got those numbers backward. Ex. number 1 should be OFF, not ON and number 2 should be ON, not OFF. I change the code in Arduino. Here is the code for Arduino.
Two more things I would like to fix.
First - When I run Serial Monitor and it runs pretty fast. But when I use Lazarus program and it run slower than Serial monitor. Of course, I took out the pinMode(RE_DE, OUTPUT); and digitalWrite(RE_DE, LOW); to get the Serial Monitor working.
Second. I would like to add second Arduino to run. I am not sure how to write the code for Arduino and Lazarus to get some LED light on from second Arduino. I will add second Max485 on second Arduino.
int RE_DE = 2;
void setup()
{
pinMode(13, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5,OUTPUT);
pinMode(6, OUTPUT),
// Put Max485 in transmit mode so that Arduino can recieve message
pinMode(RE_DE, OUTPUT);
digitalWrite(RE_DE, LOW);
// Start up serial connection
Serial.begin(9600);
while (!Serial); // not sure what is this
// for serial monitor?
Serial.println("Input 1 to Turn LED on and 2 to off");
}
void loop()
{
if (Serial.available())
{
int state = Serial.parseInt();
if (state == 1)
{
digitalWrite(13, LOW);
Serial.println("Command completed LED 13 turned OFF");
}
if (state == 2)
{
digitalWrite(13, HIGH);
Serial.println("Command completed LED 13 turned ON");
}
if (state == 3)
{
digitalWrite(3, LOW);
Serial.println("Command completed LED 3 turned OFF");
}
if (state == 4)
{
digitalWrite(3, HIGH);
Serial.println("Command completed LED 3 turned ON");
}
if (state == 5)
{
digitalWrite(4, LOW);
Serial.println("Command completed LED 4 turned OFF");
}
if (state == 6)
{
digitalWrite(4, HIGH);
Serial.println("Command completed LED 4 turned ON");
}
if (state == 7)
{
digitalWrite(5, LOW);
Serial.println("Command completed LED 5 turned OFF");
}
if (state ==
{
digitalWrite(5, HIGH);
Serial.println("Command completed LED 5 turned ON");
}
if (state == 9)
{
digitalWrite(6, LOW);
Serial.println("Command completed LED 6 turned OFF");
}
if (state == 10)
{
digitalWrite(6, HIGH);
Serial.println("Command completed LED 6 turned ON");
}
}
}
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Menus, synaser;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
ser: TBlockSerial;
a: integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
ser.SendString('1'); // button 1 should have 'off' here
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
ser.SendString('10'); // button 10 should have 'on' here
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
ser.SendString('11'); // button 11 should have 'off' here
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
ser.SendString('12'); // button 12 should have 'on' here
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ser.SendString('2'); // button 2 should have 'on' here
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ser.SendString('3'); // button 3 should have 'off' here
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
ser.SendString('4'); // button 4 should have 'on' here
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
ser.SendString('5'); // button 5 should have 'off' here
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
ser.SendString('6'); // button 4 should have 'on' here
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
ser.SendString('7'); // button 7 should have 'on' here
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
ser.SendString('8'); // button 8 should have 'on' here
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
ser.SendString('9'); // button 9 should have 'on' here
end;
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.FormDestroy(Sender: TObject);
begin
ser.free;
end;
end.