Skocz do zawartości

aixI

Użytkownicy
  • Zawartość

    782
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    13

Posty napisane przez aixI


  1. Witam. Ostatnio pomyślałem, że lepszym rozwiązaniem będzie zamówienie płytki w tej firmie niż robienie jej samemu. Zacząłem czytać jak to się robi ale nie rozjaśniło mi to mojej sytuacji. Mam prośbę do Was dotyczącą tego jak stworzyć odpowiednie pliki do wykonania płytki w firmie i co dokładnie zaznaczyć na tej stronie. Mam gerbery 2010. Płytka będzie dwustronna, bez opisu. I jak to wygląda u nic z zapłatą, czy trzeba przelewem, czy przy odbiorze?

    Edit: Jeszcze jedno pytanie (może jeszcze coś zmienię w projekcie). Chodzi mi o to jaki tranzystor kupić aby sterował (włącz/wyłącz) diody IR w czujnikach podłoża ktir0711s.Są to dwie gałęzie po cztery czujniki w każdym. Myślałem o tranzystorze NPN 817.

    Z góry dzięki.


  2. Mi osobiście też się "nowy Forbot" podoba 🙂

    Jak chodzi o stopniowe zmiany na forum, to może dodam coś od siebie. Mianowicie chodzi mi o wyświetlanie kodów programu. Na niektórych blogach, forach wklejone kody wyglądają czytelniej niż te obecne tu - chodzi głównie o kolorystykę, inne w języku C, inne w Bascom'ie itd. Nie żeby mi się nie podobały obecne, ale zmiana kosmetyczna nie zaszkodziłaby.


  3. Pomijając to, że schemat jest nieczytelny, powinieneś dobrze filtrować przetwornik analogowo - cyfrowy (ADC), czyli: do pinu AVCC podłączyć dławik (10-100uH) do VCC i kondensator ceramiczny 100nF do GND. Tak jak kolega wyżej napisał mógł paść uC z powodu podania większego napięcia niż 5V pin PC2.

    Polecam ten blog - tam znajdziesz jak zrobić pomiar napięcia na którymś z kanałów ADC.


  4. Ok, dzięki :]

    Zacząłem testować i mam problem. W bascomie wysyłam "Pomiar(2)" w taki sposób:

    Print Stapomiar(2)sto
    

    Bascom tu wywala błąd: Numeric parametr expexted [sTAPOMIAR(2)] .

    Może najpierw wysłać "Sta", później "Pmoiar(2) i na końcu "Sto"?

    Czemu "sta" i "sto"? Ponieważ "Start" i "Stop" są zastrzeżone dla Bascom'a, więc musiałęm zmienić.

    Tak jak pisałeś w komponencie "ComDataPacket" ustawiłem "StartString" na "sta" i "StopString" na "sto". Rozmiaru (Size) nie ruszałem. W tym komponencie wybrałem "ComPort" czyli swój "ComPort1" (To było w Properties). Teraz w zakładce Events znowu wybieram swój "ComPort1" później mam OnCustomStar/Stop, OnDiscard, OnPacket - tych nie ruszałem.

    Dokładnie nie wiem jak mam to odbierać z poziomu Delphi. Mam taką procedurę:

    procedure ComDataPacket1Packet(Sender: TObject; const Str: string);
    //...
    //...
    //...
    procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: string); 
    begin
    
    end;
    

    Przy używaniu "ComDataPacket" używam też procedury TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);.

    Tak wygląda program w Delphi:

    unit Unit1;
    
    interface
    
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls, Buttons, CPort, CPortCtl;
    
    type
     TForm1 = class(TForm)
       GroupBox1: TGroupBox;
       GroupBox2: TGroupBox;
       bUstawienie: TButton;
       bPolacz_Rozlacz: TButton;
       GroupBox3: TGroupBox;
       lKp: TLabel;
       lKd: TLabel;
       lV_doc: TLabel;
       lV_min: TLabel;
       lV_max: TLabel;
       lZmiana: TLabel;
       lUchyb_regulacji: TLabel;
       lPredkosc_lewego_silnika: TLabel;
       lPredkosc_prawego_silnika: TLabel;
       GroupBox4: TGroupBox;
       lSuma_wag_z_czujnikow: TLabel;
       lDocelowa_pozycja: TLabel;
       lAktualna_pozycja: TLabel;
       Flaga_linii: TLabel;
       bWyjscie: TBitBtn;
       ComPort1: TComPort;
       GroupBox5: TGroupBox;
       GroupBox6: TGroupBox;
       Czujnik1: TLabel;
       ADC5: TLabel;
       Czujnik2: TLabel;
       ADC4: TLabel;
       Czujnik3: TLabel;
       ADC3: TLabel;
       Czujnik4: TLabel;
       ADC2: TLabel;
       Czujnik5: TLabel;
       AD1: TLabel;
       Czujnik6: TLabel;
       ADC0: TLabel;
       Czujnik7: TLabel;
       ADC7: TLabel;
       Czujnik8: TLabel;
       ADC6: TLabel;
       Label1: TLabel;
       Label2: TLabel;
       Label3: TLabel;
       Label4: TLabel;
       Label5: TLabel;
       Label6: TLabel;
       Label7: TLabel;
       Label8: TLabel;
       ComDataPacket1: TComDataPacket;
       procedure bWyjscieClick(Sender: TObject);
       procedure bUstawienieClick(Sender: TObject);
       procedure bPolacz_RozlaczClick(Sender: TObject);
       procedure ComPort1RxChar(Sender: TObject; Count: Integer);
       procedure ComDataPacket1Packet(Sender: TObject; const Str: string);
     private
       { Private declarations }
     public
       { Public declarations }
     end;
    
    var
     Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.bWyjscieClick(Sender: TObject);
    begin
     Form1.Close;
    end;
    
    //Wyswietlamy opcje ustawien portu COM//
    procedure TForm1.bUstawienieClick(Sender: TObject);
    begin
     ComPort1.ShowSetupDialog;
    end;
    
    
    procedure TForm1.bPolacz_RozlaczClick(Sender: TObject);
    begin
     If ComPort1.Connected Then
     begin
       ComPort1.Close;
       bPolacz_Rozlacz.Caption:= 'Połącz';
       ShowMessage('Rozłączono');
     end else begin
       ComPort1.Open;
       bPolacz_Rozlacz.Caption:= 'Rozłącz';
       ShowMessage('Połączono');
     end;
    end;
    
    
    procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
    var
     Str: String;
    begin
     ComPort1.ReadStr(Str,Count);
     //Memo1.Text:=Str;
     //Memo1.Lines.Add(Str);
     //Label2.Caption:=Str;
    end;
    
    procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: string);
    begin
     Label2.Caption:=Str;
    end;
    
    end.
    

  5. Poczytałem na temat komponentu "ComDataPacket" i napisałem kod w Bascom'ie aby wystawiał wartości 0/1 kiedy jeden czujnik będzie na linii, albo na białym tle. Sprawdzałem w terminalu jakie wartości w hex'ie ma 0/1 i wszyło mi tak:

    31 0D 0A - 1

    30 0D 0A - 0

    Z tego co czytałem w komponencie "ComDataPacket" trzeba ustawić rozmiar (Size) i StartString, StopString. Nie wiem dokładnie na czym to polega, liczę na waszą pomoc.


  6. Dzięki, z tym też działa. Jak się okazało musiałem w ComPort1 - Events: OnRxChar dodać "ComPort1RxChar" i śmiga. Są to moje początki w Delphi i każdemu się może zdarzyć 😃

    Teraz tak: Jak wyświetlam w "Memo1" wartość ADC (0 - 1024) to tak czasem "Memo1" nie ogarnia, ale ogólnie wartości wyświetla.

    Chciałbym te wartości finalnie wyświetlać w "Label'ach" i tu moje pytanie jak to zrobić? W "Memo1" było, np. tak:

    Memo1.Text:=A;
    //lub//
    Memo1.Lines.Add(A);
    

    a jak będzie w "Label1"?


  7. Witajcie.

    Postanowiłem sobie napisać w Delphi program do odbioru danych, które wysyła uC po kablu do RS-232. Mój problem polega na tym, że nic mi się nie wyświetla w "Memo1", a powinno się wyświetlać to co uC wysyła. Na terminalu Putty widać wysyłane dane. Pewnie spytacie czemu Delphi? Otóż na razie wolę sobie to opanować w tym języku, a może później w Visual C# 2010 Express.

    Screen programu w Delphi:

    Kod programu w Delphi:

    unit Unit1;
    
    interface
    
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls, Buttons, CPort;
    
    type
     TForm1 = class(TForm)
       GroupBox1: TGroupBox;
       GroupBox2: TGroupBox;
       bUstawienie: TButton;
       bPolacz_Rozlacz: TButton;
       GroupBox3: TGroupBox;
       lKp: TLabel;
       lKd: TLabel;
       lV_doc: TLabel;
       lV_min: TLabel;
       lV_max: TLabel;
       lZmiana: TLabel;
       lUchyb_regulacji: TLabel;
       lPredkosc_lewego_silnika: TLabel;
       lPredkosc_prawego_silnika: TLabel;
       GroupBox4: TGroupBox;
       lSuma_wag_z_czujnikow: TLabel;
       lDocelowa_pozycja: TLabel;
       lAktualna_pozycja: TLabel;
       Flaga_linii: TLabel;
       bWyjscie: TBitBtn;
       ComPort1: TComPort;
       Memo1: TMemo;
       Edit1: TEdit;
       procedure bWyjscieClick(Sender: TObject);
       procedure bUstawienieClick(Sender: TObject);
       procedure bPolacz_RozlaczClick(Sender: TObject);
       procedure ComPort1RxChar(Sender: TObject; Count: Integer);
       //procedure FormCreate(Sender: TObject);
     private
       { Private declarations }
     public
       { Public declarations }
     end;
    
    var
     Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.bWyjscieClick(Sender: TObject);
    begin
     Form1.Close;
    end;
    
    //Wyswietlamy opcje ustawien portu COM//
    procedure TForm1.bUstawienieClick(Sender: TObject);
    begin
     ComPort1.ShowSetupDialog;
    end;
    
    
    procedure TForm1.bPolacz_RozlaczClick(Sender: TObject);
    begin
     If ComPort1.Connected Then
     begin
       ComPort1.Close;
       bPolacz_Rozlacz.Caption:= 'Połącz';
     end else begin
       ComPort1.Open;
       bPolacz_Rozlacz.Caption:= 'Rozłącz';
     end;
    end;
    
    
    procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
    var
     A: String;
    begin
     ComPort1.ReadStr(A,Count);
     Memo1.Text:=A;
    end;
    
    
    //procedure TForm1.FormCreate(Sender: TObject);
    //begin
    //  Memo1.Lines.Clear;
    //end;
    
    end.
    

    Kod w Bascom'ie:

    $regfile = "m16def.dat"
    $crystal = 8000000
    $baud = 19200
    
    Dim A As String * 3
    
    A = "abc"
    
      Do
    
         Print A
         Waitms 150
    
      Loop
    End
    

    Pozdro!


  8. 🙂

    Ja się zabrałem za poprawę programu i działa 😉

    Zainstalowałem tą standardową apkę kolegi Naelektryzowanego (z 10 i 11), napisałem odpowiednio program no i działa. Jak klikam "Start" dioda się pali, a jak "Stop" - gaśnie. Teraz tylko to wykorzystać do zdalnego start/stop do LF'a 🙂

    [ Dodano: 17-07-2014, 23:08 ]

    Edit: Widzę, że jeszcze coś dopisałeś. Tak, widzę, że to zrobiłeś na 3 różne sposoby i nie musiałeś robić żadnej konwersji. W moim działającym programie też nie mam konwersji tylko:

    Odbior = Inkey()
        If Odbior = 10 Then
             Dioda = 1
        Elseif Odbior = 11 Then
             Dioda = 0
        End If
    
×
×
  • Utwórz nowe...