#include <Encoder.h> // Βιβλιοθήκη για την ανάγνωση δεδομένων από τον κωδικοποιητή (encoder)
const byte INA = 10; // Pin για τον έλεγχο της κίνησης του μοτέρ προς τα εμπρός
const byte INB = 9; // Pin για τον έλεγχο της κίνησης του μοτέρ προς τα πίσω
const byte PotPin = A0; // Pin για τη σύνδεση του ποτενσιόμετρου (αναλογική είσοδος)
Encoder encoder(2, 4); // Δημιουργία αντικειμένου Encoder για τη σύνδεση των pins 2 και 4
void setup() {
Serial.begin(115200); // Ενεργοποίηση σειριακής επικοινωνίας με ταχύτητα 115200 baud
// Ορίζουμε τα pins του μοτέρ ως εξόδους
pinMode(INA, OUTPUT);
pinMode(INB, OUTPUT);
// Εμφάνιση μηνύματος για να δείξουμε ότι το πρόγραμμα ξεκίνησε
Serial.println("Η αρχικοποίηση ολοκληρώθηκε. Χρησιμοποίησε το ποτενσιόμετρο για να ελέγξεις την ταχύτητα του μοτέρ.");
}
void loop() {
// Διαβάζουμε την τιμή από το ποτενσιόμετρο (εύρος 0 έως 1023)
int pot = analogRead(PotPin);
// Αν η τιμή από το ποτενσιόμετρο είναι πάνω από το κέντρο (512), το μοτέρ περιστρέφεται προς τα εμπρός
if (pot > 512) {
// Υπολογίζουμε την ταχύτητα (0 έως 255) με βάση την τιμή του ποτενσιόμετρου
analogWrite(INA, map(pot, 512, 1023, 0, 255)); // Ενεργοποίηση προς τα εμπρός
analogWrite(INB, 0); // Απενεργοποίηση της αντίθετης κατεύθυνσης
} else {
// Αν η τιμή είναι κάτω από το κέντρο (512), το μοτέρ περιστρέφεται προς τα πίσω
analogWrite(INA, 0); // Απενεργοποίηση προς τα εμπρός
analogWrite(INB, map(pot, 511, 0, 0, 255)); // Ενεργοποίηση προς τα πίσω
}
// Εμφάνιση της τιμής του ποτενσιόμετρου στη σειριακή οθόνη για παρακολούθηση
Serial.print("Τιμή ποτενσιόμετρου: ");
Serial.println(pot);
// Μικρή καθυστέρηση για να γίνεται ευανάγνωστη η έξοδος
delay(500);
}