الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التحكم في موتور

مغلق
بدأه Linux User في 1 يونيو 2007 · 1 رد · 1,228 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ممكن شرح هذا الكود إلى هذه اللوحة الالكترونية اللي تتحكم في الموتور وسرعة الموتور

2003532015642029303_rs.jpg

Public Class Form1
	Dim curChr As UShort
	Dim MotorON As Boolean
	Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

	End Sub

	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		Control.CheckForIllegalCrossThreadCalls = False  ' allow worker thread to update main text field
		MotorON = False			 ' Initialize
		Outputer.RunWorkerAsync()   ' Start up the serial output thread	


		'==================================================
		Dim pwm As UShort
		Dim val As UShort

		pwm = 126
		Stats.Text = "PWM Val = " + Str(pwm) + " (0x" + Hex(pwm) + ")"
		curChr = pwm	' Modify the global values that outputer will pick up.
		MotorON = True
		'===================================================







	End Sub

	' HScrollBar1_Scroll
	' One of two "meaty" functions in this little program.  This is called
	' whenever the value of the scrollbar is changed.
	' We read the current setting of the scroll bar, compute a PWM value
	' with some number of consecutive zero bits, and turn the motor on or
	' off if the value has changed to or from zero.
	'
	Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll

		Dim pwm As UShort
		Dim val As UShort
		val = HScrollBar1.Value  'Get current value of the scroll bar
		'TextBox1.Text = Str(val)
		ScrollVal.Text = "ScrollVal = " + Str(val)  'report the value to text field
		If val = 0 Then ' Has the motor been turned OFF?
			Stats.Text = "Motor OFF"
			MotorON = False
		Else ' The motor is ON.  Compute a character value with N consecutive 0 bits
			' In theory, we could do up to 8 bits by changing the 127 below to 255,
			' but something goes wrong somewhere (sign issues?) and we don't get
			' distinct speeds.
			pwm = (255 << (val - 1)) And 127
			Stats.Text = "PWM Val = " + Str(pwm) + " (0x" + Hex(pwm) + ")"
			curChr = pwm	' Modify the global values that outputer will pick up.
			MotorON = True
		End If
	End Sub

	Private Sub Stats_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Stats.Click

	End Sub

	' Outputer_DoWork is the other meaty function.  This is a separate thread, all it
	' does is continuously output the current character value to the serial port
	' (assuming the motor is ON.)
	'
	Private Sub Outputer_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles Outputer.DoWork

		SerialPort1.Open() ' open the serial port at the beginning of time.

		While (True)
			If MotorON Then
				If Len(OutString.Text) > 25 Then
					' make sure our informational display doesn't get too big
					OutString.Text = ""
				End If
				OutString.Text = OutString.Text + Chr(curChr) ' update out informational display
				SerialPort1.Write(StrDup(100, Chr(curChr))) ' output to the serial port
			End If
		End While
	End Sub




	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		Dim pwm As UShort
		Dim val As UShort

		' val = HScrollBar1.Value  'Get current value of the scroll bar
		' ScrollVal.Text = "ScrollVal = " + Str(val)  'report the value to text field
		val = 2
		If val = 0 Then ' Has the motor been turned OFF?
			Stats.Text = "Motor OFF"
			MotorON = False
		Else ' The motor is ON.  Compute a character value with N consecutive 0 bits
			' In theory, we could do up to 8 bits by changing the 127 below to 255,
			' but something goes wrong somewhere (sign issues?) and we don't get
			' distinct speeds.
			pwm = 126
			If Button1.Text = "Stop" Then pwm = 126 : Button1.Text = "Start" : GoTo 500
			If Button1.Text = "Start" Then pwm = 0 : Button1.Text = "Stop"
500:		REM
			Stats.Text = "PWM Val = " + Str(pwm) + " (0x" + Hex(pwm) + ")"
			curChr = pwm	' Modify the global values that outputer will pick up.
			MotorON = True
		End If
	End Sub

	Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
		Dim pwm As UShort
		Dim val As UShort

		' val = HScrollBar1.Value  'Get current value of the scroll bar
		' ScrollVal.Text = "ScrollVal = " + Str(val)  'report the value to text field
		val = 2
		If val = 0 Then ' Has the motor been turned OFF?
			Stats.Text = "Motor OFF"
			MotorON = False
		Else ' The motor is ON.  Compute a character value with N consecutive 0 bits
			' In theory, we could do up to 8 bits by changing the 127 below to 255,
			' but something goes wrong somewhere (sign issues?) and we don't get
			' distinct speeds.
			'  pwm = 126
			If Button3.Text = "Clockwise" Then pwm = 0 : Button3.Text = "Unti-Clockwise" : GoTo 500
			If Button3.Text = "Unti-Clockwise" Then
				Stats.Text = "Motor OFF" : MotorON = False : Button3.Text = "Clockwise"
				Exit Sub
			End If
500:		REM
			Stats.Text = "PWM Val = " + Str(pwm) + " (0x" + Hex(pwm) + ")"
			curChr = pwm	' Modify the global values that outputer will pick up.
			MotorON = True
		End If
	End Sub
End Class

تم تعديل هذه المشاركة بواسطة Linux User في 1 يونيو 2007 في 16:43

#2

للرفع ...

هذا الموضوع مغلق.

مواضيع مشابهة