<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
		<id>http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=Joystick_Controls_DC_Motor</id>
		<title>Joystick Controls DC Motor - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=Joystick_Controls_DC_Motor"/>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=Joystick_Controls_DC_Motor&amp;action=history"/>
		<updated>2026-06-06T03:13:19Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=Joystick_Controls_DC_Motor&amp;diff=9780&amp;oldid=prev</id>
		<title>1304410487@qq.com：Created page with &quot;{{Language| Joystick Controls DC Motor}} {| style=&quot;width: 800px;&quot; |- | ==Objective== To control rotation of DC motor by Joystick.  ==Principle== By detecting Joystick analog v...&quot;</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=Joystick_Controls_DC_Motor&amp;diff=9780&amp;oldid=prev"/>
				<updated>2015-09-02T02:59:21Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Language| Joystick Controls DC Motor}} {| style=&amp;quot;width: 800px;&amp;quot; |- | ==Objective== To control rotation of DC motor by Joystick.  ==Principle== By detecting Joystick analog v...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Language| Joystick Controls DC Motor}}&lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==Objective==&lt;br /&gt;
To control rotation of DC motor by Joystick. &lt;br /&gt;
==Principle==&lt;br /&gt;
By detecting Joystick analog values in X- and Y-axes, you can control the rotation and direction of the DC motor. &lt;br /&gt;
==Equipment==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Module||Number||Function &lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-CoreUSB]]||1||Core board &lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-Sensorhub]]||1||Sensor pinboard &lt;br /&gt;
|-&lt;br /&gt;
| [[Microduino-Joystick]]||1||Joystick sensor &lt;br /&gt;
|-&lt;br /&gt;
| [[Microduino-Robot]]||1||Robot control board &lt;br /&gt;
|-&lt;br /&gt;
| [[Microduino-Motor]]||1||DC motor drive board &lt;br /&gt;
|-&lt;br /&gt;
| [[Motor]]||1||&lt;br /&gt;
|}&lt;br /&gt;
 [[File:_Joystick_motor.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
==Hardware Buildup==&lt;br /&gt;
*Setup 1：Stack CoreUSB, Robot, Motor and Sensorhub. &lt;br /&gt;
[[File:CoreUSB_Robot_Sensorhub.jpg|600px|center|thumb]]&lt;br /&gt;
*Setup 2：Connect Joystick to Sensorhub to A0-A1 pin of Sensorhub and motor to OUTA-OUT1B pin of Stepper. &lt;br /&gt;
[[file:Microduino-sensorhub_Joystick.JPG|thumb|800px|center]]&lt;br /&gt;
[[File:Joystick_Motor_sensor.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
==Software Debugging==&lt;br /&gt;
*Define pin of Joystick and motor control. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#define PI 3.1415926&lt;br /&gt;
#define JoystickX_PIN A1   //Joystick X-axis output &lt;br /&gt;
#define JoystickY_PIN A0   //Joystick Y-axis output &lt;br /&gt;
#define PIN_MOTORA 5    //Motor output&lt;br /&gt;
#define PIN_MOTORB 6    // Motor output pin &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Calculate the angle where Joystick lies, according to which you can control rotation speed and decide rotation direction based on positive or negative value of the angle.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
    valueX = (float)(analogRead(JoystickX_PIN)-512);    &lt;br /&gt;
    valueY = (float)(analogRead(JoystickY_PIN)-512);&lt;br /&gt;
    valueL = sqrt(sq(valueX)+sq(valueY));&lt;br /&gt;
    angle = asin(valueX/valueL)*180/PI;    // Calculate the angle of Joystick by inverse trigonometric function &lt;br /&gt;
    motorSpeed = (int)(angle*255/180);    // Calculate rotation speed according to the angle. &lt;br /&gt;
    if(motorSpeed &amp;gt; 0)                    // If the angle is positive, then the motor rotates clockwise. &lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(PIN_MOTORA, LOW);&lt;br /&gt;
      analogWrite(PIN_MOTORB, motorSpeed);&lt;br /&gt;
    }&lt;br /&gt;
    else if(motorSpeed &amp;lt; 0)               //If the angle is negative, then the motor rotates anti-clockwise. &lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(PIN_MOTORB, LOW);&lt;br /&gt;
      analogWrite(PIN_MOTORA, abs(motorSpeed));&lt;br /&gt;
    }&lt;br /&gt;
    else                                  //If the angle is zero, then the motor stops rotation. &lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(PIN_MOTORA, LOW);&lt;br /&gt;
      digitalWrite(PIN_MOTORB, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    delay(500);     &lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
[[https://github.com/Microduino/Microduino_Tutorials/tree/master/MCookie_Tutorial/MicroduinoJoystickMotor MicroduinoJoystickMotor]]&lt;br /&gt;
&lt;br /&gt;
==Result==&lt;br /&gt;
Push Joystick to different angle, you can see the rotation speed and direction will change accordingly.  &lt;br /&gt;
&lt;br /&gt;
==Video==&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>1304410487@qq.com</name></author>	</entry>

	</feed>