#include <Adafruit_PWMServoDriver.h>
#include <Wire.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define MIN_PULE_WIDTH 650
#define MAX_PULE_WIDTH 2350
#define DEFAULT_PULE_WIDTH 1500
#define FREQUENCY 50
#define GROUND_JOY_PIN A3 //joystick ground pin will connect to Arduino analog pin A3
#define VOUT_JOY_PIN A2 //joystick +5 V pin will connect to Arduino analog pin A2
#define XJOY_PIN A1
#define X2JOY_PIN A0
void setup() {
pwm.begin();
pwm.setPWMFreq(FREQUENCY);
Serial.begin(9600);
pinMode(VOUT_JOY_PIN, OUTPUT) ; //pin A3 shall be used as output
pinMode(GROUND_JOY_PIN, OUTPUT) ; //pin A2 shall be used as output
digitalWrite(VOUT_JOY_PIN, HIGH) ; //set pin A3 to high (+5V)
digitalWrite(GROUND_JOY_PIN,LOW) ; //set pin A3 to low (ground)
}
int pulseWidth (int angle)
{
int pulse_wide, analog_value;
pulse_wide = map( angle, 0, 180, MIN_PULE_WIDTH, MAX_PULE_WIDTH);
analog_value = int(float(pulse_wide)/1000000*FREQUENCY*4096);
return analog_value;
}
void loop() {
delay(200);
int joystickXVal = analogRead(XJOY_PIN) ;
int joystickX2Val = analogRead(X2JOY_PIN);
Serial.print(joystickXVal); //print the value from A1
Serial.println(" = input from joystick"); //print "=input from joystick" next to the value
Serial.print((joystickXVal+520)/10); //print a from A1 calculated, scaled value
Serial.println(" = output to servo"); //print "=output to servo" next to the value
Serial.println() ;
pwm.setPWM(1, 0, pulseWidth((joystickXVal+520)/10));
pwm.setPWM(0, 0, pulseWidth((joystickXVal+520)/10));
pwm.setPWM(4, 0, pulseWidth((joystickX2Val+520)/10));
}
基于Arduino UNO的手臂外骨骼源码.zip
版权申诉
11 浏览量
2023-06-06
22:54:28
上传
评论 1
收藏 3.95MB ZIP 举报
老了敲不动了
- 粉丝: 83
- 资源: 4289