Einzelnen Beitrag anzeigen

hathor
(Gast)

n/a Beiträge
 
#2

AW: RGB Farbwerte an einen Mikrocontroller senden

  Alt 7. Apr 2011, 18:23
Ich vermute, dass da etwas Entscheidendes fehlt:

Der ARDUINO ist kein Hellseher.
Woher soll er wissen, was er mit den empfangenen Daten machen soll?

Wenn der ARDUINO 3 Bytes für RGB erwartet, dann musst Du auch 3 Bytes senden:

R:=ScrollBar1.Position;
G:=ScrollBar2.Position;
B:=ScrollBar3.Position;
ComPort1.SENDBYTE(76); // L= 76
ComPort1.SENDBYTE(R);
ComPort1.SENDBYTE(G);
ComPort1.SENDBYTE(B);

Integerwerte kannst Du direkt senden ohne Umwandlung.
Die OnChange-Proceduren kannst Du vereinfachen.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SynaSer;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button4: TButton;
    ScrollBar1: TScrollBar;
    ScrollBar2: TScrollBar;
    ScrollBar3: TScrollBar;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button4Click(Sender: TObject);
    procedure ScrollBarChange(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  R,G,B: integer;

implementation

{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
var
    ser:TBlockSerial;
begin
    ser:=TBlockSerial.Create; ser.RaiseExcept:= false;//True;
  try
    ser.Connect('COM1');
    ser.Config(StrToIntDef('9600', 9600),8,'N',2,false,false);
    sleep(20);
    ser.SENDBYTE(76); // L= 76
    ser.SENDBYTE(R);
    ser.SENDBYTE(G);
    ser.SENDBYTE(B);
  finally ser.Free; end;
end;

procedure TForm1.ScrollBarChange(Sender: TObject); //für alle 3 gleich
begin
Label1.Caption:=Inttostr(ScrollBar1.Position);
Label2.Caption:=Inttostr(ScrollBar2.Position);
Label3.Caption:=Inttostr(ScrollBar3.Position);

R:=ScrollBar1.Position;
G:=ScrollBar2.Position;
B:=ScrollBar3.Position;
Button4Click(Self);
end;

Geändert von hathor ( 7. Apr 2011 um 21:08 Uhr)
  Mit Zitat antworten Zitat