Difference between revisions of "Arduino"

From Free Pascal wiki
Jump to navigationJump to search
Line 84: Line 84:
 
TBD
 
TBD
  
== Usefull links ==
+
== Resources ==
 
[http://forum.lazarus.freepascal.org/index.php?topic=36885 Forum topic that started this article]
 
[http://forum.lazarus.freepascal.org/index.php?topic=36885 Forum topic that started this article]
 +
 +
[[AVR]]
 +
 +
[[AVR Programming]]
  
 
[https://bigdanzblog.wordpress.com/2014/11/07/serial-communications-usb-between-a-raspberry-pi-and-an-arduino-using-lazarus-free-pascal/ Raspberry Pi Lazarus application talking to Arduino over serial]
 
[https://bigdanzblog.wordpress.com/2014/11/07/serial-communications-usb-between-a-raspberry-pi-and-an-arduino-using-lazarus-free-pascal/ Raspberry Pi Lazarus application talking to Arduino over serial]

Revision as of 10:17, 30 May 2017

This article is about Arduino boards and how can your Lazarus/FPC application communicate with them.


Serial communication

Here we show how to communicate with your board through serial communication channel.

Lazarus side serial application

There are many ways for serial communication in Lazarus and FPC.

Minimal Lazarus Synaser serial example

We will use Synaser library in this example. Create Lazarus application with one form and two buttons. Include Synaser unit and add Synapse package as a new requirement to your project. In OnClick event of both buttons put something like this:

procedure TForm1.Button1Click(Sender: TObject);
var
  ser: TBlockSerial;
begin
  ser := TBlockSerial.Create;
  try
    ser.Connect('COM1'); // write here Arduino COM port number (on linux it's something like '/dev/ttyUSB0')
    Sleep(250);
    ser.config(9600, 8, 'N', SB1, False, False);
    ser.SendString('on'); // button 2 should have 'off' here
  finally
    ser.free;
  end;
end;

Arduino side serial application

You can program your Arduino in several languages.

Minimal Arduino C sketch example

You can follow this nice step by step tutorial. In short, you need to add a led with proper resistor to your input pin 13, compile this sketch in your Arduino IDE, and download it to your board:

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
    }
}

Minimal Arduino mkroPascal example

TBD

Minimal Arduino E-Lab AvrCo example

TBD

Minimal Arduino FPC example

Yes, your Arduino 8-bit AVR board can be programmed with FPC too. TBD.

Ethernet communication

Here we show how to communicate with your board through ethernet communication channel.

Lazarus ethernet application

TBD

Arduino ethernet application

TBD

Resources

Forum topic that started this article

AVR

AVR Programming

Raspberry Pi Lazarus application talking to Arduino over serial

FPC application talking to ESP8266 over TCP

FPC application talking to Arduino Nano over TCP