Devastator Tank med kamera (2 / 4 steg)
Steg 2: Program
#include < Metro.h >
#include "GoBLE.h"
int speedPin_M1 = 5;
int speedPin_M2 = 6;
int directionPin_M1 = 4;
int directionPin_M2 = 7.
Servo bas;
Servo topp;
int basePosition = 90.
int topPosition = 115;
int joystickX, joystickY;
int buttonState [5].
void setup() {
Goble.BEGIN();
Serial.BEGIN(115200);
Top.attach(9);
Base.attach(8);
Top.write(topPosition);
Base.write(basePosition);
}
void loop() {
om (Goble.available()) {
joystickX = Goble.readJoystickX();
joystickY = Goble.readJoystickY();
buttonState [SWITCH_UP] = Goble.readSwitchUp();
buttonState [SWITCH_DOWN] = Goble.readSwitchDown();
buttonState [SWITCH_LEFT] = Goble.readSwitchLeft();
buttonState [SWITCH_RIGHT] = Goble.readSwitchRight();
Serial.Print ("Joystick värde:");
Serial.Print(joystickX);
Serial.Print("");
Serial.println(joystickY);
om (joystickY > 196) {
Serial.println ("sväng höger");
carTurnRight (250, 250);
}
annars om (joystickY < 64) {
Serial.println ("sväng vänster");
carTurnLeft (250, 250);
}
annars om (joystickX > 196) {
Serial.println ("framåt");
carAdvance (500, 500);
}
annars om (joystickX < 64) {
Serial.println ("flytta bakåt");
carBack (500, 500);
}
annat {
carStop();
}
om (buttonState [SWITCH_LEFT] == pressad & &
buttonState [SWITCH_RIGHT] == släppt) {
Serial.println ("servo lämnade");
Serial.println(basePosition);
basePosition += 5.
om (basePosition > = 180) {
basePosition = 180;
}
}
annars om (buttonState [SWITCH_RIGHT] == pressad & &
buttonState [SWITCH_LEFT] == släppt) {
Serial.println ("servo rätt").
Serial.println(basePosition);
basePosition-= 5.
om (basePosition < = 0) {
basePosition = 0;
}
}
annars om (buttonState [SWITCH_UP] == pressad & &
buttonState [SWITCH_DOWN] == släppt) {
Serial.println ("servo fram");
Serial.println(topPosition);
topPosition-= 5.
om (topPosition < = 70) {
topPosition = 75.
}
}
annars om (buttonState [SWITCH_DOWN] == pressad & &
buttonState [SWITCH_UP] == släppt) {
Serial.println ("servo tillbaka");
Serial.println(topPosition);
topPosition += 5.
om (topPosition > = 160) {
topPosition = 155;
}
}
Top.write(topPosition);
Base.write(basePosition);
}
}
void carStop() {/ / Motor stopp
digitalWrite (speedPin_M2, 0);
digitalWrite (directionPin_M1, låg);
digitalWrite (speedPin_M1, 0);
digitalWrite (directionPin_M2, låg);
}
void carTurnLeft (int leftSpeed, int rightSpeed) {//Turn vänster
analogWrite (speedPin_M2, leftSpeed); PWM varvtalsreglering
digitalWrite (directionPin_M1, hög);
analogWrite (speedPin_M1, rightSpeed);
digitalWrite (directionPin_M2, låg);
}
void carTurnRight (int leftSpeed, int rightSpeed) {//Turn rätt
analogWrite (speedPin_M2, leftSpeed);
digitalWrite (directionPin_M1, låg);
analogWrite (speedPin_M1, rightSpeed);
digitalWrite (directionPin_M2, hög);
}
void carBack (int leftSpeed, int rightSpeed) {//Move bakåt
analogWrite (speedPin_M2, leftSpeed);
digitalWrite (directionPin_M1, låg);
analogWrite (speedPin_M1, rightSpeed);
digitalWrite (directionPin_M2, låg);
}
void carAdvance (int leftSpeed, int rightSpeed) {//Move fram
analogWrite (speedPin_M2, leftSpeed);
digitalWrite (directionPin_M1, hög);
analogWrite (speedPin_M1, rightSpeed);
digitalWrite (directionPin_M2, hög);
}