Framtiden för automatiska självgående schackbräden

cpp
#include

// Definiera stegmotorer
#define MOTOR_X_STEP 2 // Steg för X-motorn
#define MOTOR_X_DIR 3 // Riktning för X-motorn
#define MOTOR_Y_STEP 4 // Steg för Y-motorn
#define MOTOR_Y_DIR 5 // Riktning för Y-motorn

// Skapa stegmotorinstanser
AccelStepper stepperX(1, MOTOR_X_STEP, MOTOR_X_DIR);
AccelStepper stepperY(1, MOTOR_Y_STEP, MOTOR_Y_DIR);

// Definiera magnetens pin
#define MAGNET_PIN 8

// Mappning av kvadratadress till positioner
int squareGrid[8][8][2] = {
{{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {7, 0}},
{{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}, {7, 1}},
{{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}, {7, 2}},
{{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}, {7, 3}},
{{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}, {7, 4}},
{{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}, {7, 5}},
{{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}, {7, 6}},
{{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}, {7, 7}},
};

// Initialposition
int currentX = 0;
int currentY = 0;

// Setup-funktionen
void setup() {
Serial.begin(9600);
pinMode(MAGNET_PIN, OUTPUT);

// Stegmotorinställning
stepperX.setMaxSpeed(200);
stepperY.setMaxSpeed(200);
}

// Huvudloopen
void loop() {
if (Serial.available() > 0) {
String input = Serial.readStringUntil('n');
moveToSquare(input);
}
}

// Funktion för att flytta pjäsen till en given kvadratadress
void moveToSquare(String square) {
// Översätt adressen till lämplig position
int targetX = square.charAt(0) - 'A'; // Rörelser för kolumn (A-H)
int targetY = square.charAt(1) - '1'; // Rörelser för rad (1-8)

See also  Google Assistant på Raspberry Pi: Så här kommer du igång!

// Beräkna steg för varje motor
int stepsX = (targetX - currentX) * 100; // 100 steg per rutor
int stepsY = (targetY - currentY) * 100; // 100 steg per rutor

// Flytta motorerna till slutpositionen
stepperX.move(stepsX);
stepperY.move(stepsY);

// Om det behövs, justera motorerna i nollställningsläge
stepperX.setCurrentPosition(0);
stepperY.setCurrentPosition(0);

// Slå på magneten
digitalWrite(MAGNET_PIN, HIGH);
stepperX.runToPosition();
stepperY.runToPosition();

// Utan magnet, flytta det till nästa ruta
// Simultan rörelse för att säkerställa korrekt positionering
digitalWrite(MAGNET_PIN, LOW);

// Spara nuvarande position
currentX = targetX;
currentY = targetY;
}

### Förklaring av koden

1. Stegmotorer: Koden använder två *AccelStepper* instanser för att hantera stegmotorerna för X och Y rörelsen. De definierade pin-nummer kopplas till motorer och möjliggör kontroll av rörelser.

2. Nollställning och rörelse: När pjäsen flyttas, ställs motorerna till noll och flyttar sedan till målrutan. Detta säkerställer att pjäserna kan flyttas effektivt utan att collidera.

3. Magnetkontroll: Elektromagneten aktiveras när pjäsen ska flyttas och stängs av när rörelsen är klar, vilket säkerställer att pjäsen kan lyftas och placeras korrekt.

4. Serial kommunikation: Koden läser in en kvadratadress (till exempel "B4") via Serial Monitor och översätter den till steg som trappar motorerna till rätt position.

Denna kod kan vidareutvecklas och justeras för att passa specifika krav, och också inkludera mer komplexa rörelser och strategiska drag i schackspelet.

Tack för att du läste vår artikel, du kan se alla artiklar i våra webbkartor eller i Sitemaps

Tyckte du att den här artikeln var användbar? Framtiden för automatiska självgående schackbräden Du kan se mer här NanoPi.

Niklas Andersson

Niklas Andersson

Hej, jag heter Niklas Andersson och är en passionerad student på civilingenjörsprogrammet i elektronik och en entusiastisk bloggare. Redan som liten har jag varit nyfiken på hur elektroniska apparater fungerar och hur tekniken kan förändra våra liv. Denna nyfikenhet ledde till att jag började studera elektronikkonstruktion, där jag varje dag utforskar nya idéer, konstruktioner och innovativa lösningar.

Tack för att du läser innehållet i Maker Electronics

Se mer relaterat innehåll

Leave a Reply

Your email address will not be published. Required fields are marked *

Your score: Useful

Go up