From ceac876aa304ef0562b6aeddc0bf292642fea5dd Mon Sep 17 00:00:00 2001 From: Mohsen Heidari Date: Wed, 5 Aug 2026 14:17:50 +0330 Subject: [PATCH] Servo metro --- platformio.ini | 5 ++- src/main.cpp | 108 +++++-------------------------------------------- 2 files changed, 14 insertions(+), 99 deletions(-) diff --git a/platformio.ini b/platformio.ini index 5e6f272..94058c2 100755 --- a/platformio.ini +++ b/platformio.ini @@ -10,7 +10,8 @@ [env:uno] platform = atmelavr -# board = uno board = sparkfun_promicro16 framework = arduino -lib_deps = https://github.com/DFRobot/DFRobotDFPlayerMini +lib_deps = + https://github.com/DFRobot/DFRobotDFPlayerMini + arduino-libraries/Servo@^1.3.0 diff --git a/src/main.cpp b/src/main.cpp index 8abac1e..4793abd 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,108 +1,22 @@ #include +#include -// Buttons -#define LEFT_PIN20 20 -#define RIGHT_PIN19 19 -#define SPEED_PIN18 18 +#define SERVO_PIN6 6 +#define READ_ANALOG8 8 -// Steper motor -const int STEP_PIN5 = 5; -const int DIR_PIN7 = 7; -int SPEED_INDEX = 2; // by defult is 2 - -// LEDs -const short int LA = 2; -const short int LB = 3; -const short int LC = 10; -const short int LD = 14; -const short int LE = 15; -const short int LF = 4; -const short int LG = 8; -const short int LDOT = 16; +Servo MYSERVO; +int ANGLE = 0; // Setup Section void setup() { - // Stepper motor setup - pinMode(STEP_PIN5, OUTPUT); - pinMode(DIR_PIN7, OUTPUT); - - // Seven sgement setup - pinMode(LA, OUTPUT); - pinMode(LB, OUTPUT); - pinMode(LC, OUTPUT); - pinMode(LD, OUTPUT); - pinMode(LE, OUTPUT); - pinMode(LF, OUTPUT); - pinMode(LG, OUTPUT); - pinMode(LDOT, OUTPUT); - - // Buttons setup - pinMode(LEFT_PIN20, INPUT); - pinMode(RIGHT_PIN19, INPUT); - pinMode(SPEED_PIN18, INPUT); + MYSERVO.attach(SERVO_PIN6); + // pinMode(READ_ANALOG8, INPUT); } // Loop Section void loop() { - long int micro_seconds[3] = {600, 1000, 5000}; - - // Speed section - if (digitalRead(SPEED_PIN18) == LOW) { - SPEED_INDEX--; - if (SPEED_INDEX < 0) - SPEED_INDEX = 2; - delay(1000); - } - - // Display - switch (SPEED_INDEX) { - case 0: - digitalWrite(LA, LOW); - digitalWrite(LB, HIGH); - digitalWrite(LC, HIGH); - digitalWrite(LD, LOW); - digitalWrite(LE, LOW); - digitalWrite(LF, LOW); - digitalWrite(LG, LOW); - digitalWrite(LDOT, LOW); - break; - case 1: - digitalWrite(LA, HIGH); - digitalWrite(LB, HIGH); - digitalWrite(LC, LOW); - digitalWrite(LD, HIGH); - digitalWrite(LE, HIGH); - digitalWrite(LF, LOW); - digitalWrite(LG, HIGH); - digitalWrite(LDOT, LOW); - break; - case 2: - digitalWrite(LA, HIGH); - digitalWrite(LB, HIGH); - digitalWrite(LC, HIGH); - digitalWrite(LD, HIGH); - digitalWrite(LE, LOW); - digitalWrite(LF, LOW); - digitalWrite(LG, HIGH); - digitalWrite(LDOT, LOW); - break; - } - - if (digitalRead(LEFT_PIN20) == LOW) { - digitalWrite(DIR_PIN7, HIGH); - - digitalWrite(STEP_PIN5,HIGH); - delayMicroseconds(micro_seconds[SPEED_INDEX]); - digitalWrite(STEP_PIN5,LOW); - delayMicroseconds(micro_seconds[SPEED_INDEX]); - } - - if (digitalRead(RIGHT_PIN19) == LOW) { - digitalWrite(DIR_PIN7, LOW); - - digitalWrite(STEP_PIN5,HIGH); - delayMicroseconds(micro_seconds[SPEED_INDEX]); - digitalWrite(STEP_PIN5,LOW); - delayMicroseconds(micro_seconds[SPEED_INDEX]); - } + ANGLE = analogRead(READ_ANALOG8); + ANGLE = map(ANGLE, 0, 1023, 0, 180); + MYSERVO.write(ANGLE); + delay(10); }