Hôm nay electronic sẽ gửi đến các bạn phần tiếp theo về điều khiển tốc độ động cơ và hiển thị lên giao diện Visual.
Phần 1: Code CCS
Mã CCS:
/* Phan Hoang Thinh
MSSV: 1413072 */
#include <baitapdoluonglythuyet.h>
#fuses HS NOWDT, NOPROTECT, NOLVP, NOBROWNOUT
// # sử dụng fast_io (d)
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <lcd.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
// # sử dụng delay (clock = 20000000)
RS232 #use (baud = 9600, parity = N, xmit = PIN_C6, RCV = PIN_C7, bit = 8)
//DINH NGHIA CAC LED
#define LED1 PIN_D0
#define LED2 PIN_D1
#define LED3 PIN_D2
#define LED4 PIN_D3
#define LED5 PIN_D4
#define LED6 PIN_D5
#define LED7 PIN_D6
#define LED8 PIN_D7
//DINH NGHIA CAC CHAN
NUT NHAN HOAC 02 CHAN ENCODER
#define SW1 PIN_B0
//NGAT NGOAI
#define SW2 PIN_B4
//DINH NGHIA CHAN TU
CAM BIEN LM35
#define LM35 PIN_A1
//DINH NGHIA CHAN DIEU
KHIEN DONG CO DUNG L298
#define DIR1 PIN_C0 // IN1
#define PWM PIN_C2
//CHAN DIEU RONG XUNG, ENA
#define dir2 PIN_C1 // IN2
//DINH NGHIA CAC
BIEN
//BIEN NHAN DU LIEU
// unsigned int16 SoXungDangDem = 0;
// unsigned int16 SoXungDoDuoc = 0;
char
c_start,c_stop,c_tem; //bien tam luu ma bat dau và ket thúc
char s1[9]; //bi?n t?m
luu d? li?u nh?n du?c t? máy tính
int k; // bi? N ch? S? cho m? ng d? li? u nh? n du? c
int biennhan; // bi?n
báo hi?u dã nh?n d? li?u xong
// BIÊN MA LED
char sled1[] =
"l1"; // mã d? sáng/t?t led1
char sled2 [] = "l2"; // LED2
char sled3 [] = "l3"; // LED3
char sled4 [] = "L4"; // LED4
char sled5 [] = "l5"; // led5
char sled6 [] = "l6"; // led6
char sled7 [] = "l7"; // led7
char sled8 [] = "L8"; // led8
unsigned char led1_on;
// bi?n tr?ng thái sáng t?t led 1
unsigned char led2_on;
unsigned char led3_on;
unsigned char led4_on;
unsigned char led5_on;
unsigned char led6_on;
unsigned char led7_on;
unsigned char led8_on;
//BIEN MA NHIET DO
char snhietdo[] =
"nd"; //yeu cau nhiet do
// MOTOR BIÊN MA
char smthuan [] = "mt"; // dongcoquaythuan
int co_thuan; // bi?n
báo tr?ng thái d?ng co quay thu?n
char smnghich [] = "mn"; // dongcoquaynghich
int co_nghich; //bi?n
báo tr?ng thái d?ng co quay ngh?ch
char smstop [] = "ms"; // dongcongungchay
// luu y: neu nhan ma
@td+"xxx"+x
char smpwm [] = "td"; // ma_nap_pwm
// CŨNG PWM
long ppwm; // bien luu
giá tri %PWM nhan duoc tu máy tính
//BIEN SW - NGAT NGOAI
int ngat;//báo tr?ng
thái ng?t ngoài
signed int32 TSW=0;
//bien dem cho hai SW1 va SW2
int bien_goinhietdo;
int dem_t; // bien luu nên l? Nd m timer1?
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH NGAT
RS232
//NEU DUNG MA SE LUU
VAO S1, BIEN NHAN = 1,
//NEU KHONG DUNG MA
BIEN NHAN = 0
#int_rda
khoảng trống RDA_isr (void)
{
c_tem=getc();//NHAN TUNG KI TU
if (c_tem == '@') // xet ki tu bat dau "@"
{
c_start = c_tem;
k = 0;
s1 [k] = c_start;
}
if
(c_tem=='x') //xet ki tu ket thuc "x"
{
c_stop = c_tem;
s1 [k] = c_stop;
}
if (c_start == '@' && c_stop == 'x')
{
k = 0;
biennhan=1;//bao hieu da nhan dung ma
dau-cuoi
c_start = 0;
c_stop = 0;
}
khác
{
s1[k]=c_tem;
a ++;
if (k> = 9) {k = 0;}
}
}
///////////////////////////////////////////////////////////////////////////////
// chuong trinh ngat
ngoài
#INT_RB
khoảng trống RB_isr (void)
{
if (!input(SW1)) //có tác dong nút nhan SW1
{
while (đầu vào (SW1)!);
TSW + = 1; // tang nên
ngat=1; //báo trang thái ngat
}
if (!input(SW2)) //có tác dong nút nhan SW2
{
while (đầu vào (SW2)!);
TSW--; //giam so dem
ngat=1; //báo trsng thái ngat
}
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH CON
DAOLED
void daoled1() //sáng
t?t led 1
{
led1_on = ~ led1_on;
output_bit (LED1, led1_on);
printf ( "% s \ n \ r", "@ dao dẫn 1x"); // g? Id? li? uv? your computer
}
khoảng trống daoled2 ()
{
led2_on = ~ led2_on;
output_bit (LED2, led2_on);
printf ( "% s \ n \ r", "@ dao dẫn 2x");
}
khoảng trống daoled3 ()
{
led3_on = ~ led3_on;
output_bit (LED3, led3_on);
printf ( "% s \ n \ r", "@ dao dẫn 3x");
}
khoảng trống daoled4 ()
{
led4_on = ~ led4_on;
output_bit (LED4, led4_on);
printf ( "% s \ n \ r", "@ dao dẫn 4x");
}
khoảng trống daoled5 ()
{
led5_on = ~ led5_on;
output_bit (LED5, led5_on);
printf ( "% s \ n \ r", "@ dao dẫn 5x");
}
khoảng trống daoled6 ()
{
led6_on = ~ led6_on;
output_bit (LED6, led6_on);
printf ( "% s \ n \ r", "@ dao dẫn 6x");
}
khoảng trống daoled7 ()
{
led7_on = ~ led7_on;
output_bit (LED7, led7_on);
printf ( "% s \ n \ r", "@ dao dẫn 7x");
}
khoảng trống daoled8 ()
{
led8_on = ~ led8_on;
output_bit (LED8, led8_on);
printf ( "% s \ n \ r", "@ dao dẫn 8x");
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH DOC
NHIET DO
khoảng trống goinhietdo ()
{
nổi adcndo;
// ADC dài;
delay_ms (10);
// bo ADC 10 bit = 1024
// Vref- = 0, Vref + = 1,5 1500 mV - 1024, // 10mV - 1 làm C
// adcndo = (1520 * (float) read_adc () / 1023);
// ADC = read_adc ();
//nhiet=adc*0.488;
adcndo = (2000f * (float) read_adc () / 1023);
// printf ( "% s% u% s \ n \ r", "a", nhiet, "s");
printf("%s %3.2f
%s\n\r","@ND",adcndo,"x"); //goi du lieu ve máy tính
theo quy d?nh
}
//NGAT TIMER 1
# INT_TIMER1
khoảng trống ngattimer1 ()
{
//Th?ch anh 20000000,
chu ki máy 0.2us
//Timer1 16 bit, tràn
khi dem toi: 0.2*65535*8 = 104856 us, voi 8 là so scale khi cài d?t
// timer: DIV_BY_8
// SoXungDoDuoc = SoXungDangDem;
// SoXungDangDem = 0;
//viet chuong trinh ngat
set_timer1 (4856); // timer dơi dau dem tu 4856
dem_t++; //moi lan
tang khi timer 1 tran, tuong ung voi 100000 us
if (dem_t==10) //dem
toi 10 thì tuong ung voi chu ki 1s
{
bien_goinhietdo=1;
//báo chu ki 1s
}
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH DIEU
KHIEN MOTOR
//CHUONG TRINH NHAN
%PWM TU MAY TINH
khoảng trống nappwm ()
{
char SPWM [3];
spwm[0]=s1[4]; //lay
giá tri %PWM tu bien nhan theo quy dinh
SPWM [1] = s1 [5];
SPWM [2] = s1 [6];
PWM = atoi (PWM);
printf ( "% s% Lu% s \ n \ r", "@ Toc làm:", ppwm, "% x");
}
//CHUONG TRINH MOTOR
STOP
khoảng trống motostop ()
{
set_pwm1_duty (0);
// output_bit (PWM, 0);
output_bit(DIR1,0); //
motor ngung khi Dir 1 và 2 = 0
output_bit (DIR2,0);
setup_ccp1(CCP_OFF);
//ngung xuat PWM
co_thuan=0; //reset
tr?ng thái ch?y thu?n ngh?ch
co_nghich=0;
printf ( "% s \ n \ r", "@ mstopx");
}
//CHUONG TRINH MOTOR
CHAY THUAN
//Luu y ve cach tinh
do rong xung
// pwm_chuki = [PR2 + 1] * 4 * T_daodong * Tmr2
//tmr2:
16,4,1===>dua vao chu ky xung mong muon, xac dinh pr2
//tu pr2 xac dinh 100%
la gia tri bao nhieu (x)
//tu do nap gia tri dieu
rong xung vao. vidu: 50% la x*50%
//vi du thach anh
20.000.000 Hz, tao xung 2440hz, tinh ra pr2=127
//tinh ra chu ky xung
pwm la 512 ung voi 100%
//////////////Ngat cho
toc do dong co/***********/
/************************************************/
khoảng trống quaythuan ()
{
nổi pwm_t;
// nổi tocdo;
pwm_t = (float) ppwm * 512/100;
// pwm_t = (float) ppwm;
setup_ccp1(CCP_PWM);
//cho phep xuat PWM kenh 1
output_bit (DIR1,1); // chon huong quay
output_bit (DIR2,0);
set_pwm1_duty ((int32) pwm_t); // nap xung PWM
co_thuan=1;
printf ( "% s \ n \ r", "@ mthuanx");
/**************************/
// xungthinh = set_pwm1_duty ((int32) pwm_t); // nap xung PWM
nổi tocdo = ((1000f / 25F) * pwm_t * 60F) / 136;
printf ( "% s% 3.0lf% s \ r \ n", "@ DC", tocdo / 60 "x"); // vong / giay
// printf ( "% s% 3.2f% s \ n \ r", "@ NĐ", adcndo, "x");
/*****************************/
}
//CHUONG TRINH MOTOR
CHAY NGHICH
khoảng trống quaynghich ()
{
nổi pwm_n;
pwm_n = (float) ppwm * 512/100;
setup_ccp1 (CCP_PWM);
output_bit (DIR1,0);
output_bit (DIR2,1);
set_pwm1_duty ((int16) pwm_n);
co_nghich=1;
printf ( "% s \ n \ r", "@ mnghichx");
/****************************/
nổi tocdo = ((1000f / 25F) * pwm_n * 60F) / 136;
printf ( "% s% 3.0lf% s \ r \ n", "@ DC", tocdo / 60 "x"); // vong / giay
/***********************/
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH XOA
BIEN NHAN
khoảng trống xoanhan ()
{
int j;
for (j = 0; j <= 9; j ++) {s1 [j] = 0;}
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH CON XET
MA NHAN DUOC
khoảng trống xetma ()
{
if ((biennhan) && (Ngát == 0))
{
if (strncmp (strstr (s1, sled1), sled1,2) == 0) {daoled1 ();} // n u = “l1”
if (strncmp (strstr (s1, sled2), sled2,2) == 0) {daoled2 ();} // n u =”l2”
if (strncmp (strstr (s1, sled3), sled3,2) == 0) {daoled3 ();}
if (strncmp (strstr (s1, sled4), sled4,2) == 0) {daoled4 ();}
if (strncmp (strstr (s1, sled5), sled5,2) == 0) {daoled5 ();}
if (strncmp (strstr (s1, sled6), sled6,2) == 0) {daoled6 ();}
if (strncmp (strstr (s1, sled7), sled7,2) == 0) {daoled7 ();}
if (strncmp (strstr (s1, sled8), sled8,2) == 0) {daoled8 ();}
if (strncmp (strstr (s1, snhietdo), snhietdo, 2) == 0) {goinhietdo ();} // n u = “nd”
if (strncmp (strstr (s1, smthuan), smthuan, 2) == 0) {quaythuan ();} // nau = “mt”
if (strncmp (strstr (s1, smnghich), smnghich, 2) == 0) {quaynghich ();} // nau = “mn”
if (strncmp (strstr (s1, smstop), smstop, 2) == 0) {motostop ();} // nau = “ms”
if (strncmp (strstr (s1, smpwm), smpwm, 2) == 0) // nau = “td”
{
nappwm ();
if (co_thuan) {quaythuan ();}
if (co_nghich) {quaynghich();}
}
xoanhan();
biennhan = 0;
}
}
///////////////////////////////////////////////////////////////////////////////
// DOCNUTNHAN
khoảng trống nutnhan ()
{
char sodem [8];
char sf [8] = "@ SD";
char
duong[3]="+";
char ssl [3] = "x";
if ((Ngát) && (biennhan == 0))
{
if (TSW> 0)
{
itoa (TSW, 10, sodem); // dai sa đập thành dang chuai
strcat(sodem,ssl);//ghép
sa dam voi ss1
strcat(sf,duong);
//ghép chuoi
strcat(sf,sodem);//
ghép chuoi
}
if (TSW <= 0)
{
itoa (HƯƠNG, 10, sodem);
strcat (sodem, ssl);
strcat (sf, sodem);
}
printf ( "% s \ n \ r", sf);
ngat=0;
}
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH CHINH
void main ()
{
ext_int_edge(H_TO_L );
//quy dinh ngat ngoài tích cuc muc thap = canh xuong
enable_interrupts(INT_RB0);//khai
bao INT0, canh xuong
enable_interrupts(INT_RB4);//khai
bao INT4, canh xuong
enable_interrupts(INT_RDA);//cho
phep ngat truyen thong
enable_interrupts(INT_TIMER1);
// cho phép ngat timer1
//enable_interrupts(INT_TIMER0);
// cho phép ngat timer1
enable_interrupts(GLOBAL);
//cho phép ngat toàn cuc
setup_adc_ports(VREF_VREF);//quy
dinh áp nguong so sánh ADC
setup_adc_ports (san1);
setup_adc (ADC_CLOCK_INTERNAL); // Built-in A / D chức năng thiết lập
set_adc_channel(1);
//chon ADC kênh 1
setup_timer_2(T2_DIV_BY_16,127,1);//cài
dat timer2
setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8); // cài dat timer1
set_timer1 (4865);
delay_ms (10);
while (true)
{
xetma();//goi chuong
trình xét mã nhan duoc tu máy tính
nutnhan(); //goi
chuong trình nhan nút nhan
if
(bien_goinhietdo==1) //goi nhiet do dua vào chu ki xap xi 1s dã thiet lap tu
ngat timer1
{
goinhietdo ();
bien_goinhietdo = 0;
dem_t = 0;
}
}
}
…………………………………………………………………………………………………………………………………………………….
Phần code gửi tốc
độ động cơ lên giao diện :
//CHUONG TRINH MOTOR
CHAY THUAN
khoảng trống quaythuan ()
{
nổi pwm_t;
// nổi tocdo;
pwm_t = (float) ppwm * 512/100;
// pwm_t = (float) ppwm;
setup_ccp1(CCP_PWM);
//cho phep xuat PWM kenh 1
output_bit (DIR1,1); // chon huong quay
output_bit (DIR2,0);
set_pwm1_duty ((int32) pwm_t); // nap xung PWM
co_thuan=1;
printf ( "% s \ n \ r", "@ mthuanx");
/**************************/
// xungthinh = set_pwm1_duty ((int32) pwm_t); // nap xung PWM
nổi tocdo = ((1000f / 25F) * pwm_t * 60F) / 136;
printf ( "% s% 3.0lf% s \ r \ n", "@ DC", tocdo / 60 "x"); // vong / giay
// printf ( "% s% 3.2f% s \ n \ r", "@ NĐ", adcndo, "x");
/*****************************/
}
//CHUONG TRINH MOTOR
CHAY NGHICH
khoảng trống quaynghich ()
{
nổi pwm_n;
pwm_n = (float) ppwm * 512/100;
setup_ccp1 (CCP_PWM);
output_bit (DIR1,0);
output_bit (DIR2,1);
set_pwm1_duty ((int16) pwm_n);
co_nghich=1;
printf ( "% s \ n \ r", "@ mnghichx");
/****************************/
nổi tocdo = ((1000f / 25F) * pwm_n * 60F) / 136;
printf ( "% s% 3.0lf% s \ r \ n", "@ DC", tocdo / 60 "x"); // vong / giay
/***********************/
}
///////////////////////////////////////////////////////////////////////////////
CODE trên Visual :
nhập khẩu Hệ thống
nhập khẩu System.ComponentModel
nhập khẩu System.IO.Ports
Công Lớp GiaodienHoangThinh
không nhietdo
không bodemnhan
không tocdo
Private Sub GiaodienHoangThinh_Load (người gửi Như Object , e Như EventArgs ) Xử lý MyBase Load
Baotrangthai.Text = "Mời bạn mở cổng COM"
MoCongCOM.Enabled = Đúng
DongCOM.Enabled = False
goi.Enabled = False
Nhan.Enabled = False
led_1.Enabled = False
led_2.Enabled = False
led_3.Enabled = False
led_4.Enabled = False
led_5.Enabled = False
led_6.Enabled = False
led_7.Enabled = False
led_8.Enabled = False
End Sub
Private Sub MoCongCOM_Click (người gửi Như Object , e Như EventArgs ) Xử lý MoCongCOM.Click
Nếu (CongCOM.IsOpen) Sau đó,
Exit Sub
End If
với CongCOM
.PortName = "COM1"
.BaudRate = 9600
.Parity = IO.Ports. chẵn lẻ .None
.StopBits = IO.Ports. StopBits .Một
.DataBits = 8
.ReceivedBytesThreshold = 1
End Với
Thử
CongCOM.Open ()
MoCongCOM.Enabled = False
DongCOM.Enabled = Đúng
goi.Enabled = Đúng
Nhan.Enabled = True
led_1.Enabled = Đúng
led_2.Enabled = Đúng
led_3.Enabled = Đúng
led_4.Enabled = Đúng
led_5.Enabled = Đúng
led_6.Enabled = Đúng
led_7.Enabled = Đúng
led_8.Enabled = Đúng
Baotrangthai.Text = "Cổng COM đã mở"
Catch ex Như ngoại lệ
End Try
End Sub
Private Sub DongCOM_Click (người gửi Như Object , e Như EventArgs ) Xử lý DongCOM.Click
CongCOM.Close ()
MoCongCOM.Enabled = Đúng
DongCOM.Enabled = False
goi.Enabled = False
Nhan.Enabled = False
led_1.Enabled = False
led_2.Enabled = False
led_3.Enabled = False
led_4.Enabled = False
led_5.Enabled = False
led_6.Enabled = False
led_7.Enabled = False
led_8.Enabled = False
Baotrangthai.Text = "Mời bạn mở cổng COM"
End Sub
Private Sub Thoat_Click(sender As Object, e As EventArgs) Handles Thoat.Click
If MsgBox("Bạn có muốn thoát khỏi chương
trình?",
MsgBoxStyle .YesNo + MsgBoxStyle .Question, "Exit" ) =
MsgBoxResult .Yes Sau đó,
Gần()
EndIf
End Sub
Private Sub led_1_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_1.Click
CongCOM.Write ( "@ L1x" )
End Sub
Private Sub DATA_RECEIVED (người gửi Như Object , e Như IO.Ports. SerialDataReceivedEventArgs ) Xử lý CongCOM.DataReceived
Dim v_start Như Integer
Dim v_stop Như Integer
Dim v_nhietdo Như Integer
Dim v_tocdo Như Integer
Thử
CheckForIllegalCrossThreadCalls = False
bodemnhan + = CongCOM.ReadExisting
Nếu bodemnhan.Contains ( "@" ) Sau đó,
Nếu
bodemnhan.EndsWith ( "x" ) Sau đó,
CongCOM.DiscardInBuffer ()
v_start = bodemnhan.IndexOf ( "@" )
v_stop = bodemnhan.IndexOf ( "x" )
Nếu bodemnhan.Contains ( "NĐ" ) Sau đó,
v_nhietdo = bodemnhan.IndexOf ( "NĐ" )
nhietdo = bodemnhan.Substring (v_nhietdo + 2, v_stop - (v_nhietdo + 1) - 1) + "oC"
ElseIf bodemnhan.Contains("DC") Then //nhận
giá trị tốc độ
v_tocdo = bodemnhan.IndexOf ( "DC" )
tocdo = bodemnhan.Substring (v_tocdo + 2, v_stop - (v_tocdo + 1) - 1) + "Vọng / s"
khác
Onhan.Text = bodemnhan.Substring (v_start + 1, v_stop - 1 - v_start)
EndIf
Nếu bodemnhan.Contains ( "+" ) Sau đó,
sw1.BackColor = Màu .Green
khác
sw1.BackColor = Màu .Red
EndIf
Nếu bodemnhan.Contains ( "-" ) Sau đó,
sw2.BackColor = Màu .Green
khác
sw2.BackColor = Màu .Red
EndIf
bodemnhan = ""
EndIf
EndIf
Catch ex Như ngoại lệ
End Try
End Sub
Private Sub Nhan_Click(sender As Object, e As EventArgs) Handles Nhan.Click
laymau.Start ()
End Sub
Private Sub led_2_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_2.Click
CongCOM.Write ( "@ L2x" )
End Sub
Private Sub led_3_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_3.Click
CongCOM.Write ( "@ l3x" )
End Sub
Private Sub led_4_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_4.Click
CongCOM.Write ( "@ L4x" )
End Sub
Private Sub led_5_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_5.Click
CongCOM.Write ( "@ L5X" )
End Sub
Private Sub led_6_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_6.Click
CongCOM.Write ( "@ L6x" )
End Sub
Private Sub led_7_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_7.Click
CongCOM.Write ( "@ L7x" )
End Sub
Private Sub led_8_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_8.Click
CongCOM.Write ( "@ l8x" )
End Sub
Private Sub laymau_Tick (người gửi Như Object , e Như EventArgs ) Xử lý laymau.Tick
Thử
Nếu CongCOM.IsOpen Sau đó,
onhietdo.Text = nhietdo
nhandongco.Text = tocdo
EndIf
Catch ex Như ngoại lệ
End Try
End Sub
Private Sub goi_Click (người gửi Như Object , e Như EventArgs ) Xử lý goi.Click
CongCOM.Write ( "@" + ogoi.Text + "x" )
End Sub
Private Sub quaythuan_Click (người gửi Như Object , e Như EventArgs ) Xử lý quaythuan.Click
CongCOM.Write ( "@mtx" )
End Sub
Private Sub quaynghich_Click (người gửi Như Object , e Như EventArgs ) Xử lý quaynghich.Click
CongCOM.Write ( "@mnx" )
End Sub
Private Sub SetTocDo_Click (người gửi Như Object , e Như EventArgs ) Xử lý SetTocDo.Click
CongCOM.Write ( "@ td +" + caidattocdo.Text + "x" )
End Sub
Private Sub button_stop_Click (người gửi Như Object , e Như EventArgs ) Xử lý button_stop.Click
CongCOM.Write ( "@msx" )
End Sub
End Lớp
…………………………………………………………………………………………………………………………………………………….
Phần nhận tốc độ
động cơ trên Visual :
ElseIf bodemnhan.Contains("DC") Then //nhận
giá trị tốc độ
v_tocdo = bodemnhan.IndexOf ( "DC" )
tocdo = bodemnhan.Substring (v_tocdo + 2, v_stop - (v_tocdo + 1) - 1) + "Vọng / s"
PHẦN THỰC HIỆN KẾT NỐI ĐÃ ĐƯỢC HƯỚNG DẪN PHẦN TRƯỚC, CÁC BẢN HÃY XEM LẠI PHẦN TRƯỚC NHÉ !!!.
Giờ vào phần chính nào :
Phần LED
:
Nút nhấn
:
Động cơ :
Ta chọn tốc độ cho động cơ:
Like và theo dõi những kiến thức và tài liệu mới nhé. !!!