#define updown1 6
#define updown2 9
#define forwardbackward 10
#define leftright 11
#define in1updown1 4
#define in2updown1 2
#define in1updown2 A0
#define in2updown2 A1
#define in1forwardbackward A2
#define in2forwardbackward A3
#define in1leftright A4
#define in2leftright A5
#define pwmlight 3
#define gripper 5
#define fronttorch 12
#define griptorch 13
#include <Servo.h>
Servo servogripper;
//-------------------------------------------------------------------------------------
char controller; // wasd, c=up, v=down, i=slowmode, o=normalmode, p=fastmode, f=fullstop, h=frontlight, j=fronttorch, l=griptorch, r=opengripper, t=closegripper
int goforwardbackward = 0; // 1=running, 0=stop
int goleftright = 0; // 1=running, 0=stop
int goupdown = 0; // 1=running, 0=stop
int onfrontlight = 0; // 0=off, 1=on
int grippermoving = 0; // 0=stop, 1=opening/closing
int onfronttorch = 0; // 0=off, 1=on
int ongriptorch = 0; // 0=off, 1=on
int dir_updown = 1; // 1=up, -1=down
int dir_forwardbackward = 1; // 1=forward, -1=backward
int dir_leftright = 1; // 1=left, -1=right
int mode = 0; // 0=normal, -1=slow, 1=fast+
const long interval = 100; // time interval [ms] between motor starting and desired speed
int slow = 50; // slow mode speed
int sadnormal = 100; // "sad" normal mode speed
int happynormal = 120; // "happy" normal mode speed
int fast = 140; // fast mode speed
int light = 255; // lights dutycycle (light/255)
//----------------------------
//---------------------------------------------------------
void setup() {
Serial.begin(9600);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
servogripper.attach(gripper);
}
//-------------------------------------------------------------------------------------
void loop() {
if (Serial.available() > 0) { // receive input
controller = Serial.read();
Serial.println(controller);
}
if (controller == 'w') {
if (goforwardbackward == 0) {
forward();
}
else {
stopforwardbackward();
}
}
if (controller == 's') {
if (goforwardbackward == 0) {
backward();
}
else {
stopforwardbackward();
}
}
if (controller == 'a') {
if (goleftright == 0) {
left();
}
else {
stopleftright();
}
}
if (controller == 'd') {
if (goleftright == 0) {
right();
}
else {
stopleftright();
}
}
if (controller == 'c') {
if (goupdown == 0) {
up();
}
else {
stopupdown();
}
}
if (controller == 'v') {
if (goupdown == 0) {
down();
}
else {
stopupdown();
}
}
if (controller == 'f') {
fullstop();
}
if (controller == 'i') {
mode = -1;
Serial.println("mode = slow");
controller = "";
}
if (controller == 'o') {
mode = 0;
Serial.println("mode = normal");
controller = "";
}
if (controller == 'p') {
mode = 1;
Serial.println("mode = fast");
controller = "";
}
if (controller == 'h') {
if (onfrontlight == 0) {
analogWrite(pwmlight, light);
Serial.println("luci dispersive di fronte = ON");
onfrontlight = 1;
}
else {
analogWrite(pwmlight, 0);
onfrontlight = 0;
Serial.println("luci dispersive di fronte = OFF");
}
controller = "";
}
if (controller == 'r') {
if (grippermoving == 0) {
servogripper.write(100);
Serial.println("gripper opening");
grippermoving == 1;
}
else {
servogripper.write(90);
Serial.println("gripper stopped");
grippermoving == 0;
}
controller = "";
}
if (controller == 't') {
if (grippermoving == 0) {
servogripper.write(80);
Serial.println("gripper closing");
grippermoving == 1;
}
else {
servogripper.write(90);
Serial.println("gripper stopped");
grippermoving == 0;
}
controller = "";
}
if (controller == 'j') {
if (onfronttorch == 0) {
digitalWrite(fronttorch, HIGH);
Serial.println("luce profondità di fronte = ON");
onfronttorch = 1;
}
else {
digitalWrite(fronttorch, LOW);
onfronttorch = 0;
Serial.println("luce profondità di fronte = OFF");
}
controller = "";
}
if (controller == 'l') {
if (ongriptorch == 0) {
digitalWrite(griptorch, HIGH);
Serial.println("luce profondità gripper = ON");
ongriptorch = 1;
}
else {
digitalWrite(griptorch, LOW);
Serial.println("luce profondità gripper = OFF");
ongriptorch = 0;
}
controller = "";
}
}
//-------------------------------------------------------------------------------------
void forward() {
if (dir_forwardbackward == -1) {
digitalWrite(in1forwardbackward, LOW);
digitalWrite(in2forwardbackward, HIGH);
dir_forwardbackward = 1;
}
analogWrite(forwardbackward, 255);
Serial.println("forward");
goforwardbackward = 1;
if (mode == 1) { // fast mode
delay(interval);
analogWrite(forwardbackward, fast);
}
if (mode == 0) { // normal mode
delay(interval);
analogWrite(forwardbackward, happynormal);
}
if (mode == -1) { // slow mode
delay(interval);
analogWrite(forwardbackward, slow);
}
controller = "";
}
void backward() {
if (dir_forwardbackward == 1) {
digitalWrite(in1forwardbackward, HIGH);
digitalWrite(in2forwardbackward, LOW);
dir_forwardbackward = -1;
}
analogWrite(forwardbackward, 255);
Serial.println("backward");
goforwardbackward = 1;
if (mode == 1) { // fast mode
delay(interval);
analogWrite(forwardbackward, fast);
}
if (mode == 0) { // normal mode
delay(interval);
analogWrite(forwardbackward, happynormal);
}
if (mode == -1) { // slow mode
delay(interval);
analogWrite(forwardbackward, slow);
}
controller = "";
}
void left() {
if (dir_leftright == -1) {
digitalWrite(in1leftright, LOW);
digitalWrite(in2leftright, HIGH);
dir_leftright = 1;
}
analogWrite(leftright, 255);
Serial.println("left");
goleftright = 1;
if (mode == 1) { // fast mode
delay(interval);
analogWrite(leftright, fast);
}
if (mode == 0) { // normal mode
delay(interval);
analogWrite(leftright, sadnormal);
}
if (mode == -1) { // slow mode
delay(interval);
analogWrite(leftright, slow);
}
controller = "";
}
void right() {
if (dir_leftright == 1) {
digitalWrite(in1leftright, HIGH);
digitalWrite(in2leftright, LOW);
dir_leftright = -1;
}
analogWrite(leftright, 255);
Serial.println("right");
goleftright = 1;
if (mode == 1) { // fast mode
delay(interval);
analogWrite(leftright, fast);
}
if (mode == 0) { // normal mode
delay(interval);
analogWrite(leftright, sadnormal);
}
if (mode == -1) { // slow mode
delay(interval);
analogWrite(leftright, slow);
}
controller = "";
}
void up() {
if (dir_updown == -1) {
digitalWrite(in1updown1, LOW);
digitalWrite(in2updown1, HIGH);
digitalWrite(in1updown2, LOW);
digitalWrite(in2updown2, HIGH);
dir_updown = 1;
}
analogWrite(updown1, 255);
analogWrite(updown2, 255);
Serial.println("up");
goupdown = 1;
if (mode == 1) { // fast mode
delay(interval);
analogWrite(updown1, fast);
analogWrite(updown2, fast);
}
if (mode == 0) { // normal mode
delay(interval);
analogWrite(updown1, happynormal);
analogWrite(updown2, happynormal);
}
if (mode == -1) { // slow mode
delay(interval);
analogWrite(updown1, slow);
analogWrite(updown2, slow);
}
controller = "";
}
void down() {
if (dir_updown == 1) {
digitalWrite(in1updown1, HIGH);
digitalWrite(in2updown1, LOW);
digitalWrite(in1updown2, HIGH);
digitalWrite(in2updown2, LOW);
dir_updown = -1;
}
analogWrite(updown1, 255);
analogWrite(updown2, 255);
Serial.println("down");
goupdown = 1;
if (mode == 1) { // fast mode
delay(interval);
analogWrite(updown1, fast);
analogWrite(updown2, fast);
}
if (mode == 0) { // normal mode
delay(interval);
analogWrite(updown1, happynormal);
analogWrite(updown2, happynormal);
}
if (mode == -1) { // slow mode
delay(interval);
analogWrite(updown1, slow);
analogWrite(updown2, slow);
}
controller = "";
}
void fullstop() {
analogWrite(updown1, 0);
analogWrite(updown2, 0);
analogWrite(forwardbackward, 0);
analogWrite(leftright, 0);
Serial.println("fullstop");
goupdown = 0;
goforwardbackward = 0;
goleftright = 0;
controller = "";
}
void stopforwardbackward() {
analogWrite(forwardbackward, 0);
Serial.println("stop forward/backward");
goforwardbackward = 0;
controller = "";
}
void stopleftright() {
analogWrite(leftright, 0);
Serial.println("stop left/right");
goleftright = 0;
controller = "";
}
void stopupdown() {
analogWrite(updown1, 0);
analogWrite(updown2, 0);
Serial.println("stop up/down");
goupdown = 0;
controller = "";
}
This Is the sketch, what do I need to add or modify? Im Sorry but I dont know what half-duplex means...
Furthermore, I dont know what DTR is either.. what PIN is It and on which component is It? How should I connect It?