////////////////////////////////////////////////////////
//Arduino Stepper Motor skecth listening to COM Port
//for use with the EasyDriver 3.1
////////////////////////////////////////////////////////
...
// Added : Pushbutton to start a single circle or to stop it while it is running
// Added : Endswitch to get zero-value of motion
// Added : LED enlighted while motor moves forward
// Added : Potentiometer to controll motor speed by hand
// Added : second EasyDriver to controll a turntable
// For all the Easydriver v.3 product details http://schmalzhaus.com/EasyDriver/
...
// Executes a reference motion towards endswitch at character "i"
// Runs scanning circle when you send "g" to the serial port,
// Stops scanning circle when you send "s" to the serial port,
// Switches on light when you send "l" to the serial port,
// Switches off light when you send "d" to the serial port,
// Turns a turntable at 45 "дебило-символы" if you send "t" to the serial port (standard 1.8 "дебило-символы"/step), //тут этот дебил символ градуса из ASCII таблицы вытащил
//Use this code at your own risk and have fun
// Pins
int val = 0; // stores the state of the BUTTON pin //дебил физическу ногу микросхемы перепутал с логической временной переменной
int LED = 11; // names pin 9 as LED (placeholder for the laser)
int BUTTON = 7; // names pin 7 as BUTTON
int END = 8; // names pin 8 as the endswitch
int LIGHT = 2; // names pin 2 as the lightswitch
int potpin = 2; // names pin 2 as "potpin" //java не прощает болшие ии маленькие буквы если конечно это не мастдайка
int dirpin = 3; // names pin 3 as "dirpin" -Stepperdirection laser
int steppin = 4; // names pin 12 as "steppin" -Steppersteps laser
int ttdir = 5; // names pin 4 as "dirpin" -Stepperdirection turntable
int ttstep = 6; // names pin 5 as "dirpin" -Steppersteps turntable
//variables //не переменный дебил а постоянные это откуда он variables высмотрел?
int temp = 0; // Stores the speed value. The smaller the faster
long range = 16000; // Stores how many steps will be made in total -Stepper laser
int ttrange = 200; // Stores how many steps will be made in total -Stepper Turntable //в шаговый моторах логика сильно завсит от шагов мотора а у него тут шаг step1 rotation превратилось в некий TurnСтолДиапазон - дебил
int incomingByte = 0; // for incoming serial data
int old_val = 0;
int state = 0;
void setup() {
Serial.begin(9600); // opens serial communication
pinMode(dirpin, OUTPUT); // Sets pins to in or out modes
pinMode(steppin, OUTPUT); //
pinMode(LED, OUTPUT); //
pinMode(BUTTON, INPUT); //
pinMode(LIGHT, OUTPUT); //
pinMode(END, INPUT); //
pinMode(ttdir, OUTPUT); //
pinMode(ttstep, OUTPUT); //
}
void loop() {
val=digitalRead(BUTTON); // read Button input value and store it
if ((val == HIGH) && (old_val == LOW)) {
state = 1 - state;
delay(10);
}
old_val = val;
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: "); //команды управления односимвольные A B C D E F G H в обе стороны
//(зачем велосипед изобретать ведь когда идет обмен по USB порту толком не подсмотришь )
// кому этот дебил пишет я принимаю, а перенос строки еще отдельной строкой накудесил
Serial.println(incomingByte);
}
delay(100);
//насписано все нормальным языком
//если пришедшийБайт эквиалентен коду символа 108 тогда выполним
//цифруЗапишу СВЕТ ВЫСОКО
//пришедшийБайт обнуляем
//конец условия
if (incomingByte == 10 { // switches on light when "l" is sent by DAVID //а эту дурь я постигал полчаса
digitalWrite(LIGHT, HIGH);
incomingByte = 0;
}
if(incomingByte == 100) { //switches off light when "d" is sent by DAVID //велико и могуча английский языко
digitalWrite(LIGHT, LOW);
incomingByte = 0;
}
if (incomingByte == 116) { // when "t" was sent by DAVID>> turntable travel
digitalWrite(ttdir, LOW); // Changes direction
int i;
delay(100);
Serial.println("in motion"); // sends "in motion" to PC
for (i = 0; i<ttrange+1; i++) { // pulse
digitalWrite(ttstep, HIGH); // :
delayMicroseconds(1300); // :
digitalWrite(ttstep, LOW); // :
delayMicroseconds(1300); // pulse
if (i == ttrange) { //stop
break;
}
incomingByte = 0;
}
}
if (incomingByte == 105) { // when "i" was sent by DAVID>> initial travel
digitalWrite(dirpin, LOW); // Changes direction
int i;
delay(100);
Serial.println("INITIAL"); // sends "INITIAL" to PC
for (i = 0; i<range; i++) { // pulse
digitalWrite(steppin, HIGH); // :
delayMicroseconds(100); // :
digitalWrite(steppin, LOW); // :
delayMicroseconds(100); // pulse
int end = digitalRead (END);
if (end == HIGH) { // endswitch
break;
}
}
}
if ( state == 1 || incomingByte == 103) { // If button is pressed
int i; // sets counter of pulses
temp = 50+analogRead(potpin)*8; // reads the poti-value and sets speed
digitalWrite(dirpin, HIGH); // should be clockwise motormovement
delay(50);
Serial.println("SCANNING"); // sends "SCANNING" to PC // то унего подтверждения большими буквами то маленькими дебил
for (i = 0; i<range; i++) { // pulse
digitalWrite(steppin, HIGH); // :
delayMicroseconds(temp); // :
digitalWrite(steppin, LOW); // :
delayMicroseconds(temp); // pulse
if (i > 100) { // Waits 100 pulses till LED switches on
digitalWrite(LED, HIGH);
}
temp = 50+analogRead(potpin)*8; // reads again the poti-value and sets speed
incomingByte = Serial.read();
val = digitalRead (BUTTON);
if (incomingByte == 115 || i == range-1 || val == HIGH) { // when "s" was sent by DAVID or max range>> stop and backtravel
digitalWrite(dirpin, LOW); // Changes direction
digitalWrite(LED, LOW); // switch off LED
delay(100);
Serial.println("BACK"); // sends "BACK" to PC
for (i = 0; i<range; i++) { // pulse
digitalWrite(steppin, HIGH); // :
delayMicroseconds(100); // :
digitalWrite(steppin, LOW); // :
delayMicroseconds(100); // pulse
int end = digitalRead (END); // reads the endswitch
if (end == HIGH) { // stop if endswitch reached
digitalWrite(LED, LOW); // switch off LED
i = range;
incomingByte = 0;
break;
}
}
}
}
delay(100);
}
val = LOW;
incomingByte = 0;
state = 0;
}