Пример кода для Arduino IDE на C++
Этот код управляет двумя сервоприводами, используя два потенциометра. Первым потенциометром вы управляете первым сервоприводом, а вторым — вторым. Угол поворота сервоприводов отображается на дисплее SSD1306.
Подключение
Компоненты:
1. Arduino Nano
2. 2 серводвигателя
3. 2 потенциометра (10 кОм)
4. Дисплей SSD1306
5. Соединительные провода
6. Бредборд (по желанию)
Схема подключения:
- **Потенциометры**:
- VCC (потенциометр) -> 5V (Arduino)
- GND (потенциометр) -> GND (Arduino)
- Сигнальный выход (потенциометр) -> A0 (потенциометр 1) и A1 (потенциометр 2)
- **Сервоприводы**:
- Провод данных (сервопривод 1) -> Pin 9 (Arduino)
- Провод данных (сервопривод 2) -> Pin 10 (Arduino)
- GND (сервопривод) -> GND (Arduino)
- VCC (сервопривод) -> 5V (Arduino)
- **Дисплей SSD1306**:
- SCL (дисплей) -> A5 (Arduino)
- SDA (дисплей) -> A4 (Arduino)
- VCC (дисплей) -> 5V (Arduino)
- GND (дисплей) -> GND (Arduino)
Код:
```cpp
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Servo.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Пины для потенциометров и сервоприводов
const int potPin1 = A0;
const int potPin2 = A1;
const int servoPin1 = 9;
const int servoPin2 = 10;
// Создание объекта сервопривода
Servo servo1;
Servo servo2;
void setup() {
// Инициализация серво
servo1.attach(servoPin1);
servo2.attach(servoPin2);
// Инициализация дисплея
display.begin(SSD1306_I2C_ADDRESS, OLED_RESET);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
}
void loop() {
// Читаем значения с потенциометров
int potValue1 = analogRead(potPin1);
int potValue2 = analogRead(potPin2);
// Преобразуем значения в углы (0-180)
int angle1 = map(potValue1, 0, 1023, 0, 180);
int angle2 = map(potValue2, 0, 1023, 0, 180);
// Устанавливаем углы сервоприводов
servo1.write(angle1);
servo2.write(angle2);
// Обновляем дисплей
display.clearDisplay();
display.setCursor(0, 0);
display.print("Servo 1 angle: ");
display.println(angle1);
display.print("Servo 2 angle: ");
display.println(angle2);
display.display();
// Небольшая задержка
delay(200);
}
Описание:
- Библиотеки Wire.h, Adafruit_GFX.h, и Adafruit_SSD1306.h используются для управления дисплеем.
- Два сервопривода подключены к пинам 9 и 10.
- Два потенциометра предназначены для управления углами сервоприводов.
- Углы считываются из аналоговых входов и отображаются на OLED-дисплее.
Подключите все компоненты согласно схемам, загрузите этот код в вашу плату Arduino Nano, и у вас получится управление двумя сервоприводами с помощью потенциометров!