ESP-32 Anarog Servo Controller
ESP-32のアナログサーボコントローラーです。
ESP-32モーターシールドを作成しましたが、アナログコントールしたい、ボタンが欲しいという要望にお答えしたものです。
恒例ではありますが、電力は外部入力対応でServoへ5V出力可能です。
今回は大容量コンデンサを搭載可能にした上、SDカードを搭載可能です。(正し、設計ミスで15ピンが使用できなくなります)
可変抵抗の後ろにはジョイスティック用ピンがあり、2個のジョイスティックを使用可能です。
ここも、設計ミスで、ジョイスティックの入力ピンと、ジャンパーの位置が前後逆です。
可変抵抗は3V入力です。
ボタンは、0,4,25,26,27ピンを使用しています。
サーボは、12,13,14,15,16,17,22,21とし
19,18,23,5については、SDカードと兼用です。
以下はMJRoBot.orgのコードを改造したもので可変抵抗に合わせてサーボが動きます。
動作はYoutbeにアップしました。
https://youtu.be/QFtjK33J8-E
/*****************************************************
ESP32 Analog Servo Control
MJRoBot.org 6Sept17
2019-2-25改造
*****************************************************/
//Analog Input
//#define ANALOG_PIN_0 37
//#define ANALOG_PIN_1 36
#define ANALOG_PIN_2 34
#define ANALOG_PIN_3 35
#define ANALOG_PIN_4 32
#define ANALOG_PIN_5 33
//int analog_value_0 = 0;
//int analog_value_1 = 0;
int analog_value_2 = 0;
int analog_value_3 = 0;
int analog_value_4 = 0;
int analog_value_5 = 0;
// PMW SERVO
#define SERVO_PIN_0 15
#define SERVO_PIN_1 14
#define SERVO_PIN_2 13
#define SERVO_PIN_3 12
#define SERVO_PIN_4 17
#define SERVO_PIN_5 21
int freq = 50;
int channel = 0;
int resolution = 8;
//int dutyCycle_0 = 21;
//int dutyCycle_1 = 21;
int dutyCycle_2 = 21;
int dutyCycle_3 = 21;
int dutyCycle_4 = 21;
int dutyCycle_5 = 21;
void setup()
{
Serial.begin(115200);
delay(1000); // give me time to bring up serial monitor
Serial.println("ESP32 Servo Control");
// ledcSetup(0, freq, resolution);
// ledcAttachPin(SERVO_PIN_0, 0);
// ledcWrite(0, dutyCycle_0);
// ledcSetup(1, freq, resolution);
// ledcAttachPin(SERVO_PIN_1, 1);
// ledcWrite(1, dutyCycle_1);
ledcSetup(2, freq, resolution);
ledcAttachPin(SERVO_PIN_2, 2);
ledcWrite(2, dutyCycle_2);
ledcSetup(3, freq, resolution);
ledcAttachPin(SERVO_PIN_3, 3);
ledcWrite(3, dutyCycle_3);
ledcSetup(4, freq, resolution);
ledcAttachPin(SERVO_PIN_4, 4);
ledcWrite(4, dutyCycle_4);
ledcSetup(5, freq, resolution);
ledcAttachPin(SERVO_PIN_5, 5);
ledcWrite(5, dutyCycle_5);
}
void loop()
{
// analog_value_0 = analogRead(ANALOG_PIN_0);
// analog_value_1 = analogRead(ANALOG_PIN_1);
analog_value_2 = analogRead(ANALOG_PIN_2);
analog_value_3 = analogRead(ANALOG_PIN_3);
analog_value_4 = analogRead(ANALOG_PIN_4);
analog_value_5 = analogRead(ANALOG_PIN_5);
// Serial.println("Pin37:");
// Serial.println(analog_value_0);
// Serial.print(" Duty Cycle0 ==> ");
// Serial.println(dutyCycle_0);
// Serial.println("Pin36:");
// Serial.println(analog_value_1);
// Serial.print(" Duty Cycle1 ==> ");
// Serial.println(dutyCycle_1);
Serial.println("Pin34:");
Serial.println(analog_value_2);
Serial.print(" Duty Cycle2 ==> ");
Serial.println(dutyCycle_2);
Serial.println("Pin35:");
Serial.println(analog_value_3);
Serial.print(" Duty Cycle3 ==> ");
Serial.println(dutyCycle_3);
Serial.println("Pin32:");
Serial.println(analog_value_4);
Serial.print(" Duty Cycle4 ==> ");
Serial.println(dutyCycle_4);
Serial.println("Pin33:");
Serial.println(analog_value_5);
Serial.print(" Duty Cycle5 ==> ");
Serial.println(dutyCycle_5);
// dutyCycle_0 = map(analog_value_0, 0, 4095, 10, 33);
// dutyCycle_1 = map(analog_value_1, 0, 4095, 10, 33);
dutyCycle_2 = map(analog_value_2, 0, 4095, 10, 33);
dutyCycle_3 = map(analog_value_3, 0, 4095, 10, 33);
dutyCycle_4 = map(analog_value_4, 0, 4095, 10, 33);
dutyCycle_5 = map(analog_value_5, 0, 4095, 10, 33);
// ledcWrite(0, dutyCycle_0);
// ledcWrite(1, dutyCycle_1);
ledcWrite(2, dutyCycle_2);
ledcWrite(3, dutyCycle_3);
ledcWrite(4, dutyCycle_4);
ledcWrite(5, dutyCycle_5);
delay(50);
}
Author And Source
この問題について(ESP-32 Anarog Servo Controller), 我々は、より多くの情報をここで見つけました https://qiita.com/usashirou/items/2a590046c4e9460636d1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .