#1 2016-10-19 17:52:34

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Помогите создать скетч для станка

нам нужно следующее
когда включим пресс то начинает моргать лампа LAMP на кнопке R1 и
при нажатии на кнопку R1 платформа, если она стоит слева начала двигаться вправо и наоборот если при включении пресса платформа стоит справа то при нажатии на кнопку R1 она начала двигаться влево.
за это отвечают клапан A(влево) и B(вправо) и должен включится мотор H , после того как платформа дойдет , допустим вправо(если она стояла слева),она остановится по датчику S3 клапан B и контактор H отключаются и  должны сработать клапан Е и мотор Н(это центральная плита), одновременно должен сработать и клапан F и H (это плита справа). Центральная плита должна выключится тогда когда датчик давления S6 достигнет заданного давления(это отдельный прибор с плюсовым выходом), а плита справа должна отключится тогда когда потенциометр Y3 достигнет определенного сопротивления(допустим 1.5 ком). После этого цикла должна заморгать опять лампа на кнопке для следующего цикла
ну и в обратной последовательности напишу дальше если возникнут вопросы.
пока вот так
спасибо.

# define S1_PIN 22 // вход сигнала с плит на запрет аппарели с формами и тэнами
# define S2_PIN 23 // вход сигнала левого положения аппарели
# define S3_PIN 24 // вход сигнала правого положения аппарели
# define S4_PIN 25 // вход сигнала положения верхней плиты (поднято)
# define S5_PIN 26 // вход сигнала положения верхней плиты (опущено)
# define S6_PIN 27 // вход сигнала датчика давления
# define S7_PIN 28 // вход сигнала датчика положения средней платформы
# define A_PIN 30 // клапан платформы влево
# define B_PIN 31 // клапан платформы вправо
# define C_PIN 32 // клапан левого цилиндра 
# define D_PIN 33 // клапан цилиндра верхней плиты
# define E_PIN 34 // клапан цилиндра пресса
# define F_PIN 35 // клапан правого цилиндра
# define G_PIN 36 // клапан сброса давления
# define H_PIN 37 // котактор мотора
# define MOTOR1_PIN 38 // выбор толщины резиновой плитки +-
# define MOTOR2_PIN 39 // выбор толщины резиновой плитки +-
# define AL1_PIN 40 // реле тэна справа 1
# define AL2_PIN 41 // реле тэна справа 2
# define AC1_PIN 42 // реле тэна центр 1
# define AC2_PIN 43 // реле тэна центр 2
# define AR1_PIN 44 // реле тэна слева 1
# define AR2_PIN 45 // реле тэна слева 2
# define LAMP 46 // лампа пусковой кнопки
# define SIRENA_PIN 47 // сирена окончания цикла
# define R_PIN 48 // кнопка аварийной остановки
# define R1_PIN 49 // кнпка пусковая цикла
# define R2_PIN 50 // кнопка вверх плиты
# define R3_PIN 51 // кнопка вниз плиты

void setup()
{
int sensorY1 = analogRead(A2); // датчик положения платформы слева
int sensorY2 = analogRead(A3); // датчик положения платформы центр
int sensorY3 = analogRead(A4); // датчик положения платформы справа
int sensorY4 = analogRead(A5); // датчик температуры правой плиты
int sensorY5 = analogRead(A6); // датчик температуры центральной плиты
int sensorY6 = analogRead(A7); // датчик температуры левой плиты

pinMode(S1_PIN, INPUT);
pinMode(S2_PIN, INPUT);
pinMode(S3_PIN, INPUT);
pinMode(S4_PIN, INPUT);
pinMode(S5_PIN, INPUT);
pinMode(S6_PIN, INPUT);
pinMode(S7_PIN, INPUT);
pinMode(R_PIN, INPUT);
pinMode(R1_PIN, INPUT);
pinMode(R2_PIN, INPUT);
pinMode(R3_PIN, INPUT);
pinMode(A_PIN, OUTPUT);
pinMode(B_PIN, OUTPUT);
pinMode(C_PIN, OUTPUT);
pinMode(D_PIN, OUTPUT);
pinMode(E_PIN, OUTPUT);
pinMode(F_PIN, OUTPUT);
pinMode(G_PIN, OUTPUT);
pinMode(H_PIN, OUTPUT);
pinMode(AL1_PIN, OUTPUT);
pinMode(AL2_PIN, OUTPUT);
pinMode(AC1_PIN, OUTPUT);
pinMode(AC2_PIN, OUTPUT);
pinMode(AR1_PIN, OUTPUT);
pinMode(AR2_PIN, OUTPUT);
pinMode(MOTOR1_PIN, OUTPUT);
pinMode(MOTOR2_PIN, OUTPUT);
pinMode(LAMP, OUTPUT);
pinMode(SIRENA_PIN, OUTPUT);
 Serial.begin(9600);
}
void loop() { 

digitalWrite(LAMP, HIGH); // лампа включилась
delay(1000); // на 1 секунду
digitalWrite(LAMP, LOW); // лампа выключилась
delay(1000);
if (S2_PIN==0||1 && S3_PIN==0)

if (digitalRead(R1_PIN) == HIGH) // кнопка

if ( S1_PIN==HIGH)

digitalWrite(A_PIN, HIGH);
digitalWrite(H_PIN, HIGH);
if (S3_PIN==HIGH)

digitalWrite(A_PIN, LOW);
digitalWrite(H_PIN, LOW);

if (S1_PIN==LOW)

digitalWrite(C_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
digitalWrite(F_PIN, HIGH);

  if (S1_PIN==HIGH)
   
digitalWrite(C_PIN, LOW);
digitalWrite(G_PIN, LOW);
digitalWrite(F_PIN, LOW);

digitalWrite(LAMP, LOW);

// ЧЕРЕЗ 2 СЕКУНДЫ
digitalWrite(LAMP, HIGH); // лампа включилась
delay(1000); // на 1 секунду
digitalWrite(LAMP, LOW); // лампа выключилась
delay(1000);

if (digitalRead(R1_PIN) == HIGH) // кнопка
digitalWrite(LAMP, LOW);

if (S1_PIN==HIGH)

digitalWrite(B_PIN, HIGH); // платформа пошла вправо
digitalWrite(H_PIN, HIGH);

if(S2_PIN==HIGH)

digitalWrite(E_PIN, HIGH); // левая платформа и центральная пошла вверх
digitalWrite(H_PIN, HIGH);
digitalWrite(C_PIN, HIGH);

if (S6_PIN==HIGH)

digitalWrite(E_PIN, LOW); // платформы остановились
digitalWrite(C_PIN, LOW);
digitalWrite(H_PIN, LOW);


// ТУТ ДОЛЖЕН БЫТЬ ТАЙМЕР УСТАНОВЛЕНИЯ ВРЕМЕНИ
// ДОПУСТИМ
// ТАЙМЕР УСТАНОВЛЕН НА 5 МИНУТ

// ПОСЛЕ 5 ТИ МИНУТ

digitalWrite(SIRENA_PIN, HIGH); // сирена включилась
delay(1000); // на 1 секунду
digitalWrite(SIRENA_PIN, LOW); // сирена выключилась
delay(1000);


digitalWrite(B_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
if (S1_PIN ==HIGH)

digitalWrite(SIRENA_PIN, LOW); // сирена выключилась

digitalWrite(E_PIN, LOW);
digitalWrite(G_PIN, LOW);

digitalWrite(LAMP, HIGH); // лампа включилась
delay(1000); // на 1 секунду
digitalWrite(LAMP, LOW); // лампа выключилась
delay(1000);
 
 if (digitalRead(R1_PIN) == HIGH) 
digitalWrite(LAMP, LOW);

digitalWrite(C_PIN, HIGH);
digitalWrite(G_PIN, HIGH);

if (S1_PIN == HIGH)
// Y1 ==(определенное значение потенциометра выставленное на андроиде)

digitalWrite(C_PIN, LOW);
digitalWrite(G_PIN, LOW);

digitalWrite(LAMP, HIGH); // лампа включилась
delay(1000); // на 1 секунду
digitalWrite(LAMP, LOW); // лампа выключилась
delay(1000);
 
if (digitalRead(R1_PIN) == HIGH) 
digitalWrite(LAMP, LOW);

digitalWrite(C_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
if (S1_PIN == HIGH)
//Y1 ==(определенное значение потенциометра выставленное на андроиде)

digitalWrite(C_PIN, LOW);
digitalWrite(G_PIN, LOW);
if (S1_PIN == HIGH)

digitalWrite(A_PIN, HIGH);
digitalWrite(H_PIN, HIGH);
if (S3_PIN==HIGH)


digitalWrite(A_PIN, LOW);
digitalWrite(E_PIN, HIGH);
digitalWrite(H_PIN, HIGH);
digitalWrite(F_PIN, HIGH);

if (S6_PIN==HIGH)

digitalWrite(E_PIN, LOW);
digitalWrite(F_PIN, LOW);
digitalWrite(H_PIN, LOW);

// ТУТ ДОЛЖЕН БЫТЬ ТАЙМЕР УСТАНОВЛЕНИЯ ВРЕМЕНИ
// ДОПУСТИМ
// ТАЙМЕР УСТАНОВЛЕН НА 5 МИНУТ
// ТО
// ПОСЛЕ 5 ТИ МИНУТ
digitalWrite(E_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
if (S1_PIN == HIGH)


digitalWrite(E_PIN, LOW);
digitalWrite(G_PIN, LOW);


digitalWrite(LAMP, HIGH); // лампа включилась
delay(1000); // на 1 секунду
digitalWrite(LAMP, LOW); // лампа выключилась
delay(1000);

if (digitalRead(R1_PIN) == HIGH) 
digitalWrite(LAMP, LOW);

digitalWrite(F_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
if (S1_PIN == HIGH)

digitalWrite(F_PIN, LOW);
digitalWrite(G_PIN, LOW);


digitalWrite(LAMP, HIGH); // лампа включилась
delay(1000); // на 1 секунду
digitalWrite(LAMP, LOW); // лампа выключилась
delay(1000);

if (digitalRead(R1_PIN) == HIGH) 
digitalWrite(LAMP, LOW);
}

Остання редакція gidrobort (2016-10-19 17:54:03)

Неактивний

#2 2016-10-19 22:57:02

qwone
Учасник
Зареєстрований: 2016-07-25
Повідомлень: 143

Re: Помогите создать скетч для станка

Помимо нормальной работы у станка еще большая куча аварийных состояний. А то что вы так бодренько накатали скетч, то его можно сразу ..

Неактивний

#3 2016-10-20 09:20:33

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: Помогите создать скетч для станка

Надо детально продумать ВСЕ ВОЗМОЖНЫЕ нестандартные ситуации (че-то включилось/не включилось, где-то датчик сработал/не сработал, что-то заело и не сдвинулось/сдвинулось) и в программе добавить действия в случае их возникновения. Это надо сделать ОБЯЗАТЕЛЬНО иначе в один "прекрасный" момент может случиться полная жопа.

Неактивний

#4 2016-10-20 17:20:18

qwone
Учасник
Зареєстрований: 2016-07-25
Повідомлень: 143

Re: Помогите создать скетч для станка

Во-во. А потом отображение этих аварий на экране. Так что надо создавать мини ОС для станка, а потом уже городить. А то при каждом затыке надо будет перешивать программу. А все нюансы работы кода всегда забываются.

Неактивний

#5 2016-10-26 22:30:16

goodspeedmen
Учасник
З https://discord.gg/6hbs98y
Зареєстрований: 2016-10-02
Повідомлень: 81

Re: Помогите создать скетч для станка

Я думаю это все легче реализовать на релейной и аналоговой схеме по узлам. К тому же как я понял вы хотите использовать мегу. Если это ваш станок то не чего страшного нет, но если на нем будут работать люди которые не знают как работает программа, то это может стать большой проблемой...

Остання редакція goodspeedmen (2016-10-26 22:34:46)

Неактивний

#6 2016-10-26 22:37:41

goodspeedmen
Учасник
З https://discord.gg/6hbs98y
Зареєстрований: 2016-10-02
Повідомлень: 81

Re: Помогите создать скетч для станка

Нужна кинематическая схема и электрическая.

Неактивний

#7 2016-11-19 19:49:05

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Re: Помогите создать скетч для станка

Вот сам написал, почему-то захотели помочь за деньги потом отказались. Этот скетч только для рабочего цикла может кому пригодиться как основа.





// Программа написана для станка по производству резиной плитки в 2016 году


unsigned char button_state;
unsigned char button_mem;

# define S1_PIN 22 // вход сигнала левого положения аппарели
# define S2_PIN 23 // вход сигнала датчика давления
# define S3_PIN 24 // вход сигнала левого положения лифта
# define S4_PIN 25 // вход сигнала положения всех лифтов внижнем положении
# define S5_PIN 26 // вход сигнала правого положения аппарели
# define S6_PIN 27 // ДАТЧИК ПОЛОЖЕНИЯ ВВЕРХУ СПРАВА
# define S7_PIN 28 // вход сигнала датчика положения КРЫШКИ ВВЕРХУ
# define S8_PIN 29 // вход сигнала датчика положения КРЫШКИ ВНИЗУ
int A_PIN = 30; // клапан платформы влево
int B_PIN = 31; // клапан платформы вправо
int C_PIN = 32; // клапан левого цилиндра
int D_PIN = 33; // клапан цилиндра верхней плиты
int E_PIN = 34; // клапан цилиндра пресса
int F_PIN = 35; // клапан правого цилиндра
int G_PIN = 36; // клапан сброса давления
int H_PIN = 37; // котактор мотора


# define MOTOR1_PIN 38 // выбор толщины резиновой плитки +-
# define MOTOR2_PIN 39 // выбор толщины резиновой плитки +-
# define AL1_PIN 40 // реле тэна справа 1
# define AL2_PIN 41 // реле тэна справа 2
# define AC1_PIN 42 // реле тэна центр 1
# define AC2_PIN 43 // реле тэна центр 2
# define AR1_PIN 44 // реле тэна слева 1
# define AR2_PIN 45 // реле тэна слева 2
# define LAMP 46 // лампа пусковой кнопки
# define SIRENA_PIN 47 // сирена окончания цикла
# define R_PIN 48 // кнопка аварийной остановки
# define R1_PIN 49 // кнпка пусковая цикла
# define R2_PIN 50 // кнопка вверх плиты
# define R3_PIN 51 // кнопка вниз плиты

void setup()
{
Serial.begin(9600);

int sensorY2 = analogRead(A3); // датчик положения платформы центр
int sensorY3 = analogRead(A4); // датчик положения платформы справа
int sensorY4 = analogRead(A5); // датчик температуры правой плиты
int sensorY5 = analogRead(A6); // датчик температуры центральной плиты
int sensorY6 = analogRead(A7); // датчик температуры левой плиты


pinMode(S1_PIN, INPUT);
pinMode(S2_PIN, INPUT);
pinMode(S3_PIN, INPUT);
pinMode(S4_PIN, INPUT);
pinMode(S5_PIN, INPUT);
pinMode(S6_PIN, INPUT);
pinMode(S7_PIN, INPUT);
pinMode(S8_PIN, INPUT);
pinMode(R_PIN, INPUT);
pinMode(R1_PIN, INPUT);
pinMode(R2_PIN, INPUT);
pinMode(R3_PIN, INPUT);
pinMode(A_PIN, OUTPUT);
pinMode(B_PIN, OUTPUT);
pinMode(C_PIN, OUTPUT);
pinMode(D_PIN, OUTPUT);
pinMode(E_PIN, OUTPUT);
pinMode(F_PIN, OUTPUT);
pinMode(G_PIN, OUTPUT);
pinMode(H_PIN, OUTPUT);
pinMode(AL1_PIN, OUTPUT);
pinMode(AL2_PIN, OUTPUT);
pinMode(AC1_PIN, OUTPUT);
pinMode(AC2_PIN, OUTPUT);
pinMode(AR1_PIN, OUTPUT);
pinMode(AR2_PIN, OUTPUT);
pinMode(MOTOR1_PIN, OUTPUT);
pinMode(MOTOR2_PIN, OUTPUT);
pinMode(LAMP, OUTPUT);
pinMode(SIRENA_PIN, OUTPUT);

digitalWrite(A_PIN, HIGH);
digitalWrite(B_PIN, HIGH);
digitalWrite(C_PIN, HIGH);
digitalWrite(D_PIN, HIGH);
digitalWrite(E_PIN, HIGH);
digitalWrite(F_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
digitalWrite(H_PIN, HIGH);

digitalWrite(S2_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(R1_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S6_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S1_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S3_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S4_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S5_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S6_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S7_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S8_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(R2_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(R3_PIN, HIGH); //подключить внутренний подтягивающий резистор
}
void loop()
{
int sensorY1 = analogRead(A2); // РЕЗИСТОР положения лифта слева
int sensorY3 = analogRead(A4); // РЕЗИСТОР положения лифта СПРАВА


// ЗДЕСЬ УПРАВЛЕНИЕ ЦЕНТРАЛЬНОЙ КРЫШКОЙ

button_state = digitalRead(R2_PIN);
if (digitalRead(R2_PIN) == LOW )
{
digitalWrite(D_PIN, LOW); // КРЫШКА ВВЕРХ
digitalWrite(H_PIN, LOW);
while (digitalRead(R2_PIN) == LOW) {
}

} else
{
button_state = digitalRead(S7_PIN);


if (digitalRead(S7_PIN) == LOW )
{
digitalWrite(G_PIN, HIGH);
digitalWrite(D_PIN, HIGH);

button_state = digitalRead(R3_PIN);
if (digitalRead(R3_PIN) == LOW )
{
digitalWrite(G_PIN, LOW); // КРЫШКА ВНИЗ
digitalWrite(H_PIN, LOW);
}

} else
{
button_state = digitalRead(S8_PIN);


if (digitalRead(S8_PIN) == LOW )
{
digitalWrite(H_PIN, HIGH);
digitalWrite(D_PIN, HIGH);
while (digitalRead(R3_PIN) == LOW) {
//*********************************************************************************************************************************//
// ТУТ НАЧАЛО РАБОТЫ

button_state = digitalRead(R1_PIN); //КНОПКА ПУСК
if (digitalRead(R1_PIN) == LOW && button_state == LOW && button_mem == 0 && digitalRead(S4_PIN) == LOW && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW) // условие выполняется если датчик нижного положения всех лифтов активирован
{


digitalWrite(A_PIN, LOW); // ПЛАТФОРМА ПОШЛА НАЛЕВО
digitalWrite(H_PIN, LOW);
button_mem = 1; //запомнить состояние реле
while (digitalRead(R1_PIN) == LOW) {

}

} else
{
button_state = digitalRead(S1_PIN); //когда платформа подошла к датчику положения платформы слева


if (digitalRead(S1_PIN) == LOW && button_state == LOW && button_mem == 1 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW ) // и при таких условиях памяти
{
digitalWrite(A_PIN, HIGH); // ПЛАТФОРМА ОТКЛЮЧИЛАСЬ И ВКЛЮЧИЛСЯ ЦЕНТРАЛЬНЫЙ ЛИФТ , мотор гидростанции продолжает работать.
digitalWrite(E_PIN, LOW); // активация клапана центральной плиты

button_mem = 2; //запомнить состояние датчик положения платформы слева
while (digitalRead(S1_PIN) == LOW) {

}

} else
{
button_state = digitalRead(S2_PIN); //ДАТЧИК ДАВЛЕНИЯ


if (digitalRead(S2_PIN) == LOW && button_state == LOW && button_mem == 2) // сработал датчик давления центральной платформы
{
digitalWrite(C_PIN, LOW); // ЦЕНТРАЛЬНЫЙ ЛИФТ ОТКЛЮЧИЛСЯ ПО ДАТЧИКУ ДАВЛЕНИЯ И ЛЕВЫЙ ПОДЪЕМНЫЙ ЛИФТ ПОШЕЛ НА ВЕРХ
digitalWrite(E_PIN, HIGH);
button_mem = 3; //запомнить состояние реле
while (digitalRead(S2_PIN) == LOW) {

/**********************************ЗДЕСЬ НУЖНО УСТАНОВИТЬ ТАЙМЕР КОТОРЫЙ ОПУСТИТ ВНИЗ ЦЕНТРАЛЬНУЮ ПЛИТУ***********************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*И КАК ТОЛЬКО ТАЙМЕР ОТСЧИТАЕТ , НАПРИМЕ 5 МИНУТ,
ЦЕНТРАЛЬНАЯ ПЛАТФОРМА ДОЛЖНА ПОЙТИ ВНИЗ
digitalWrite(E_PIN, LOW);
digitalWrite(G_PIN, LOW);

АКТИВИРУЕТСЯ ДАТЧИК digitalRead(S4_PIN) == LOW И ПОСЛЕ АКТИВАЦИИ
digitalWrite(E_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
*/

/**************************************************************************************************************/

}

} else
{
button_state = digitalRead(S3_PIN); //ДАТЧИК ПОЛОЖЕНИЯ ВВЕРХУ СЛЕВА


if (digitalRead(S3_PIN) == LOW && button_state == LOW && button_mem == 3 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(C_PIN, HIGH); // ЗДЕСЬ СРАБОТАЛ ДАТЧИК ВЕРХНЕГО ПОЛОЖЕНИЯ ЛИФТА СЛЕВА
digitalWrite(H_PIN, HIGH);
button_mem = 4; //запомнить состояние реле
while (digitalRead(S3_PIN) == LOW) {


// ТУТ ЖДЕМ НАЖАТИЯ КНОПКИ ПОКА НЕ ВЫГРУЗЯТ ПЛИТКУ
}


} else
{
button_state = digitalRead(R1_PIN); //НАЖИМАЕМ КНОПКА ПУСК


if (digitalRead(R1_PIN) == LOW && button_state == LOW && button_mem == 4 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW )
{
digitalWrite(C_PIN, LOW); // ЛИФТ СЛЕВА ПОШЕЛ ВНИЗ ДО СРАБАТЫВАНИЯ РЕОСТАТА
digitalWrite(G_PIN, LOW);

button_mem = 5; //запомнить состояние датчик положения платформы слева
while (digitalRead(R1_PIN) == LOW) {


}

} else
{
button_state = analogRead(A2); //прочитать состояние РЕОСТАТ СЛЕВА


sensorY1 = analogRead(A2);//прочитать состояние

if (analogRead(A2) < 50 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW) // СРАБОТАЛ РЕОСТАТ ЗНАЧЕНИЕ "50" УСЛОВНОЕ ОНО ДОЛЖНО ПРОГРАММИРОВАТЬСЯ ВМЕСТЕ С УСТАНОВКОЙ РАЗМЕРА ПЛИТКИ
{
// В ДАЛЬНЕЙШЕМ ВМЕСТО 50 ДОЛЖНА СТОЯТЬ ПЕРЕМЕННАЯ КОТОРАЯ БУДЕТ ВВОДИТСЯ И КОРРЕКТИРОВАТЬСЯ С ПРИЛОЖЕНИЯ

digitalWrite(C_PIN, HIGH);

digitalWrite(G_PIN, HIGH);


{

}


} else
{
// ПОСЛЕ ЗАГРУЗКИ КРОШКИ НАЖИМАЕМ ОПЯТЬ КНОПКУ ПУСК
button_state = digitalRead(R1_PIN); //КНОПКА ПУСК

if (digitalRead(R1_PIN) == LOW && button_state == LOW && button_mem == 5 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(C_PIN, LOW);
digitalWrite(G_PIN, LOW);

button_mem = 6; //запомнить состояние датчик положения платформы слева
while (digitalRead(R1_PIN) == LOW) {

}


} else
{
button_state = digitalRead(S4_PIN ); //ДАТЧИК НИЖНЕГО ПЛОЖЕНИЯ ВСЕХ ЛИФТОВ

if (digitalRead(S4_PIN) == LOW && button_state == LOW && button_mem == 6 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
// ТУТ НАДО ПОСТАВИТЬ ЕЩЕ УСЛОВИЕ ЭТО ТАЙМЕР ПОКА ОН НЕ ОТСЧИТАЕТ НАПРИМЕР 5 МИНУТ И ЦЕНТРАЛЬНАЯ ПЛАТФОРМА НЕ ОПУСТИТСЯ ВНИЗ ПЛАТФОРМА НЕ ДОЛЖНА ПОЕХАТЬ ВПРАВО
{
digitalWrite(C_PIN, HIGH);
digitalWrite(G_PIN, HIGH);


digitalWrite(H_PIN, LOW);
digitalWrite(B_PIN, LOW);
button_mem = 7; //запомнить состояние
while (digitalRead(S4_PIN) == LOW) {

}


} else
{
button_state = digitalRead(S5_PIN); //ДАТЧИК ПОЛОЖЕНИЯ ПЛАТФОРМЫ СПРАВА

delay(10); // пауза для проверки дребезга
if (digitalRead(S5_PIN) == LOW && button_state == LOW && button_mem == 7 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW )
{
digitalWrite(B_PIN, HIGH);
digitalWrite(E_PIN, LOW);
button_mem = 8; //запомнить состояние датчик положения платформы слева
while (digitalRead(S5_PIN) == LOW) {

// Весь цикл только в обратном порядке

}

} else
{
button_state = digitalRead(S2_PIN); //ДАТЧИК ДАВЛЕНИЯ


if (digitalRead(S2_PIN) == LOW && button_state == LOW && button_mem == 8 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(F_PIN, LOW);
digitalWrite(E_PIN, HIGH);
button_mem = 9; //запомнить состояние реле
while (digitalRead(S2_PIN) == LOW) {

}

} else
{
button_state = digitalRead(S6_PIN); //ДАТЧИК ПОЛОЖЕНИЯ ВВЕРХУ СПРАВА

if (digitalRead(S6_PIN) == LOW && button_state == LOW && button_mem == 9 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(F_PIN, HIGH);
digitalWrite(H_PIN, HIGH);
button_mem = 10; //запомнить состояние реле
while (digitalRead(S6_PIN) == LOW) {

}


} else
{
button_state = digitalRead(R1_PIN); //КНОПКА ПУСК

if (digitalRead(R1_PIN) == LOW && button_state == LOW && button_mem == 10 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(F_PIN, LOW);
digitalWrite(G_PIN, LOW);

button_mem = 11; //запомнить состояние датчик положения платформы слева
while (digitalRead(R1_PIN) == LOW) {


}

} else
{
button_state = analogRead(A4); //прочитать состояние РЕОСТАТ СЛЕВА


sensorY1 = analogRead(A4);//прочитать состояние

if (analogRead(A4) < 50 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW) // В ДАЛЬНЕЙШЕМ ВМЕСТО 50 ДОЛЖНА СТОЯТЬ ПЕРЕМЕННАЯ КОТОРАЯ БУДЕТ ВВОДИТСЯ И КОРРЕКТИРОВАТЬСЯ С ПРИЛОЖЕНИЯ
{


digitalWrite(F_PIN, HIGH);

digitalWrite(G_PIN, HIGH);


{


}


} else
{
button_state = digitalRead(R1_PIN); //КНОПКА ПУСК


if (digitalRead(R1_PIN) == LOW && button_state == LOW && button_mem == 11 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(F_PIN, LOW);
digitalWrite(G_PIN, LOW);

button_mem = 12; //запомнить состояние датчик положения платформы слева
while (digitalRead(R1_PIN) == LOW) {


}


} else
{
button_state = digitalRead(S4_PIN); //ДАТЧИК НИЖНЕГО ПЛОЖЕНИЯ ВСЕХ ЛИФТОВ

if (digitalRead(S4_PIN) == LOW && button_state == LOW && button_mem == 12 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(F_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
digitalWrite(H_PIN, LOW);
digitalWrite(A_PIN, LOW);
button_mem = 13; //запомнить состояние
while (digitalRead(S4_PIN) == LOW) {


}

} else
{
button_state = digitalRead(S1_PIN); //датчик положения платформы слева


if (digitalRead(S1_PIN) == LOW && button_state == LOW && button_mem == 13 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(A_PIN, HIGH);
digitalWrite(E_PIN, LOW);

button_mem = 2; //запомнить состояние датчик положения платформы слева
while (digitalRead(S1_PIN) == LOW) {
// И ОТСЮДА ЦИКЛ, СОГЛАСНО ПАМЯТИ 2, ПОШЕЛ НА ПОВТОР

}}}}}}}}}}}}}}}}}}}}}}


//******************************************************************************************************************

Неактивний

#8 2016-11-19 19:51:25

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Re: Помогите создать скетч для станка

Теперь уважаемые форумчане, может все-таки поможете в дальнейшей разработке скетча, нужно для arduino due РАБОЧИЙ скетч соединения по wi-fi
и вывод на приложение андроид все то что делается в скетче

Неактивний

#9 2016-11-19 20:01:03

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Re: Помогите создать скетч для станка

goodspeedmen пише:

Нужна кинематическая схема и электрическая.

теперь надо только помочь в подключении к андроид приложению по wifi,
в инете по arduino due инфы мало есть скетчи и все не рабочие.
приложения еще тоже нету но наброски есть

Неактивний

#10 2016-11-19 20:03:41

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Re: Помогите создать скетч для станка

goodspeedmen пише:

Я думаю это все легче реализовать на релейной и аналоговой схеме по узлам. К тому же как я понял вы хотите использовать мегу. Если это ваш станок то не чего страшного нет, но если на нем будут работать люди которые не знают как работает программа, то это может стать большой проблемой...

на такой схеме уже все работает но в дальнейшем производстве хочется выйти на новый уровень

Неактивний

#11 2016-11-20 01:35:01

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Помогите создать скетч для станка

gidrobort,
честно, код плохо читаем (  это хорошо что работает, но его править слабое  удовольствие

ради интересу - о каких деньгах идет речь что отказались )  и какие были поставлены сроки?

Неактивний

#12 2016-11-20 15:29:33

qwone
Учасник
Зареєстрований: 2016-07-25
Повідомлень: 143

Re: Помогите создать скетч для станка

Вот немного подправил код. Но поймал где-то ошибку. Надо такой код комментировать в каждой стройке. Но автор забил на это видно

/* Программа написана для станка по производству резиной плитки в 2016 году
ДАТЧИКИ:
датчик положения платформы слева               -> A2 (sensorY1_pin)
датчик положения платформы центр               -> A3 (sensorY2_pin)
датчик положения платформы справа              -> A4 (sensorY3_pin)
датчик температуры правой плиты                -> A5 (sensorY4_pin)
датчик температуры центральной плиты           -> A6 (sensorY5_pin)
датчик температуры левой плиты                 -> A7 (sensorY6_pin)
датчик левого левого положения аппарели        -> 22 (S1_pin)  0 сработал / 1 нет
датчик давления                                -> 23 (S2_pin)  0 сработал / 1 нет
датчик левого положения лифта                  -> 24 (S3_pin)  0 сработал / 1 нет
датчик положения всех лифтов внижнем положении -> 25 (S4_pin)  0 сработал / 1 нет
датчик правого положения аппарели              -> 26 (S5_pin)  0 сработал / 1 нет
датчик положения ВВЕРХУ СПРАВА                 -> 27 (S6_pin)  0 сработал / 1 нет
датчик положения КРЫШКИ ВВЕРХУ                 -> 28 (S7_pin)  0 сработал / 1 нет
датчик положения КРЫШКИ ВНИЗУ                  -> 29 (S8_pin)  0 сработал / 1 нет

КЛАПАНЫ МОТОРЫ ТЕНЫ:
клапан платформы влево                         ->30 (A_pin)
клапан платформы вправо                        ->31 (B_pin)
клапан левого цилиндра                         ->32 (C_pin)
клапан цилиндра верхней плиты                  ->33 (D_pin)
клапан цилиндра пресса                         ->34 (E_pin)
клапан правого цилиндра                        ->35 (F_pin)
клапан сброса давления                         ->36 (G_pin)
контактор мотора                               ->37 (H_pin)
выбор толщины резиновой плитки +              ->38 (MOTOR1_pin) в проектировании
выбор толщины резиновой плитки -              ->39 (MOTOR2_pin) в проектировании
реле тэна справа 1                            ->40 (AL1_pin)    в проектировании
реле тэна справа 2                            ->41 (AL2_pin)    в проектировании
реле тэна центр 1                             ->42 (AC1_pin)    в проектировании
реле тэна центр 2                             ->43 (AC2_pin)    в проектировании
реле тэна слева 1                             ->44 (AR1_pin)    в проектировании
реле тэна слева 2                             ->45 (AR2_pin)    в проектировании

КНОПКИ УПРАВЛЕНИЯ ЛАМПЫ СИГНАЛИЗАЦИЯ:
лампа пусковой кнопки                         ->46 (LAMP_pin)   в проектировании
сирена окончания цикла                        ->47 (SIRENA_pin) в проектировании
кнопка АВАРИЙН СТОП                           ->48 (R_pin)      в проектировании
кнопка ПУСК                                   ->49 (R1_pin)
кнопка ПЛИТА ВВЕРХ                            ->50 (R2_pin)
кнопка ПЛИТА ВНИЗ                             ->51 (R3_pin)
*/
// ДАТЧИКИ:
const int sensorY1_pin = A2; // датчик положения лифта слева
int sensorY1; // 0 - 1023 потенциометр
const int sensorY2_pin = A3; // датчик положения платформы центр
int sensorY2; // 0 - 1023 потенциометр
const int sensorY3_pin = A4; // датчик положения платформы справа
int sensorY3;  // 0 - 1023 потенциометр
const int sensorY4_pin = A5; // датчик температуры правой плиты
int sensorY4;  // 0 - 1023
const int sensorY5_pin = A6; // датчик температуры центральной плиты
int sensorY5;  // 0 - 1023
const int sensorY6_pin = A7; // датчик температуры левой плиты
int sensorY6;  // 0 - 1023
const int S1_pin = 22; // вход сигнала левого положения аппарели
const int S2_pin = 23; // вход сигнала датчика давления
const int S3_pin = 24; // вход сигнала левого положения лифта
const int S4_pin = 25; // вход сигнала положения всех лифтов внижнем положении
const int S5_pin = 26; // вход сигнала правого положения аппарели
const int S6_pin = 27; // датчик положения ВВЕРХУ СПРАВА
const int S7_pin = 28; // вход сигнала датчика положения КРЫШКИ ВВЕРХУ
const int S8_pin = 29; // вход сигнала датчика положения КРЫШКИ ВНИЗУ

// КЛАПАНЫ МОТОРЫ ТЕНЫ:
const int A_pin = 30; // клапан платформы влево         0 вкл / 1 нет
const int B_pin = 31; // клапан платформы вправо        0 вкл / 1 нет
const int C_pin = 32; // клапан левого цилиндра         0 вкл / 1 нет
const int D_pin = 33; // клапан цилиндра верхней плиты  0 вкл / 1 нет
const int E_pin = 34; // клапан цилиндра пресса         0 вкл / 1 нет
const int F_pin = 35; // клапан правого цилиндра        0 вкл / 1 нет
const int G_pin = 36; // клапан сброса давления         0 вкл / 1 нет
const int H_pin = 37; // контактор мотора               0 вкл / 1 нет
const int MOTOR1_pin = 38; // выбор толщины резиновой плитки +
const int MOTOR2_pin = 39; // выбор толщины резиновой плитки -
const int AL1_pin = 40; // реле тэна справа 1
const int AL2_pin = 41; // реле тэна справа 2
const int AC1_pin = 42; // реле тэна центр 1
const int AC2_pin = 43; // реле тэна центр 2
const int AR1_pin = 44; // реле тэна слева 1
const int AR2_pin = 45; // реле тэна слева 2
//КНОПКИ УПРАВЛЕНИЯ ЛАМПЫ СИГНАЛИЗАЦИЯ:
const int LAMP_pin = 46; // лампа пусковой кнопки
const int SIRENA_pin = 47; // сирена окончания цикла
const int R_pin = 48; // кнопка АВАРИЙН СТОП          0 нажата / 1 нет
const int R1_pin = 49; // кнопка ПУСК                 0 нажата / 1 нет
const int R2_pin = 50; // кнопка ПЛИТА ВВЕРХ          0 нажата / 1 нет
const int R3_pin = 51; // кнопка ПЛИТА ВНИЗ           0 нажата / 1 нет

unsigned char button_state; // просто вспомогательная переменная
unsigned char button_mem; // этапы программы

void setup()  {   // -----------------------------------------------------
  Serial.begin(9600);
  // ДАТЧИКИ:
  pinMode(S1_pin, INPUT_PULLUP); // вход сигнала левого положения аппарели
  pinMode(S2_pin, INPUT_PULLUP); // вход сигнала датчика давления
  pinMode(S3_pin, INPUT_PULLUP); // вход сигнала левого положения лифта
  pinMode(S4_pin, INPUT_PULLUP); // вход сигнала положения всех лифтов внижнем положении
  pinMode(S5_pin, INPUT_PULLUP); // вход сигнала правого положения аппарели
  pinMode(S6_pin, INPUT_PULLUP); // датчик положения ВВЕРХУ СПРАВА
  pinMode(S7_pin, INPUT_PULLUP); // вход сигнала датчика положения КРЫШКИ ВВЕРХУ
  pinMode(S8_pin, INPUT_PULLUP); // вход сигнала датчика положения КРЫШКИ ВНИЗУ

  //КНОПКИ УПРАВЛЕНИЯ ЛАМПЫ СИГНАЛИЗАЦИЯ:
  pinMode(LAMP_pin, OUTPUT);
  pinMode(SIRENA_pin, OUTPUT);
  pinMode(R_pin, INPUT_PULLUP); // подключить кнопку АВАРИЙН СТОП с подтянутым резистором
  pinMode(R1_pin, INPUT_PULLUP);// подключить кнопку ПУСК        с подтянутым резистором
  pinMode(R2_pin, INPUT_PULLUP);// подключить кнопку ПЛИТА ВВЕРХ с подтянутым резистором
  pinMode(R3_pin, INPUT_PULLUP);// подключить кнопку ПЛИТА ВНИЗ  с подтянутым резистором

  // КЛАПАНЫ МОТОРЫ ТЕНЫ:
  pinMode(A_pin, OUTPUT);// клапан платформы влево
  digitalWrite(A_pin, 1);// откл клапан платформы влево
  pinMode(B_pin, OUTPUT);// клапан платформы враво
  digitalWrite(B_pin, 1);// откл клапана платформы враво
  pinMode(C_pin, OUTPUT);// клапан левого цилиндра
  digitalWrite(C_pin, 1);// откл клапана левого цилиндра
  pinMode(D_pin, OUTPUT);// клапан цилиндра верхней плиты
  digitalWrite(D_pin, 1);// откл клапана цилиндра верхней плиты
  pinMode(E_pin, OUTPUT);// клапан цилиндра пресса
  digitalWrite(E_pin, 1);// откл цилиндра пресса
  pinMode(F_pin, OUTPUT);// клапан правого цилиндра
  digitalWrite(F_pin, 1);// откл клапана правого цилиндра
  pinMode(G_pin, OUTPUT);// клапан сброса давления
  digitalWrite(G_pin, 1);// откл клапана сброса давления
  pinMode(H_pin, OUTPUT);// контактор мотора
  digitalWrite(H_pin, 1);// откл контактор мотора

  pinMode(AL1_pin, OUTPUT);// реле тэна справа 1
  pinMode(AL2_pin, OUTPUT);// реле тэна справа 2
  pinMode(AC1_pin, OUTPUT);// реле тэна центр 1
  pinMode(AC2_pin, OUTPUT);// реле тэна центр 2
  pinMode(AR1_pin, OUTPUT);// реле тэна слева 1
  pinMode(AR2_pin, OUTPUT);// реле тэна слева 2
  pinMode(MOTOR1_pin, OUTPUT);// выбор толщины резиновой плитки +
  pinMode(MOTOR2_pin, OUTPUT);// выбор толщины резиновой плитки -
}
void loop()   {   // -----------------------------------------------------
  sensorY1 = analogRead(sensorY1_pin); // РЕЗИСТОР положения лифта слева
  sensorY2 = analogRead(sensorY2_pin); // датчик положения платформы центр
  sensorY3 = analogRead(sensorY3_pin); // датчик положения платформы справа
  sensorY4 = analogRead(sensorY4_pin); // датчик температуры правой плиты
  sensorY5 = analogRead(sensorY5_pin); // датчик температуры центральной плиты
  sensorY6 = analogRead(sensorY6_pin); // датчик температуры левой плиты

  // ЗДЕСЬ УПРАВЛЕНИЕ ЦЕНТРАЛЬНОЙ КРЫШКОЙ
  button_state = digitalRead(R2_pin);
  if (! digitalRead(R2_pin)) {  // если кнопка ПЛИТА ВВЕРХ нажата
    digitalWrite(D_pin, 0); // вкл цилиндра верхней плиты
    digitalWrite(H_pin, 0); // вкл контактор мотора
    while (!digitalRead(R2_pin)) {}// ждать пока кнопка ПЛИТА ВВЕРХ нажата
  }
  button_state = digitalRead(S7_pin);
  if (! digitalRead(S7_pin) )   {
    digitalWrite(G_pin, 1);// откл клапана сброса давления
    digitalWrite(D_pin, 1);// откл цилиндра верхней плиты
    button_state = digitalRead(R3_pin);
    if (! digitalRead(R3_pin) )      { // если кнопку ПЛИТА ВНИЗ нажата
      digitalWrite(G_pin, 0); // вкл клапана сброса давления
      digitalWrite(H_pin, 0);// вкл контактор мотора
    }
  }
  button_state = digitalRead(S8_pin);
  if (! digitalRead(S8_pin) )     { // если сработал датчик положения КРЫШКИ ВНИЗУ
    digitalWrite(H_pin, 1);// откл контактор мотора
    digitalWrite(D_pin, 1);// откл цилиндра верхней плиты
    while (! digitalRead(R3_pin)) { // ждать пока кнопка ПЛИТА ВНИЗ нажата
      //*********************************************************************************************************************************//
      // ТУТ НАЧАЛО РАБОТЫ
      button_state = digitalRead(R1_pin);  // если кнопка ПУСК нажата
      if ((button_mem == 0) && !digitalRead(R1_pin) && !button_state && !digitalRead(S4_pin) && digitalRead(S7_pin) && !digitalRead(S8_pin)) { // условие выполняется если датчик нижного положения всех лифтов активирован
        digitalWrite(A_pin, 0); // вкл клапан платформы влево
        digitalWrite(H_pin, 0); // вкл контактор мотора
        button_mem = 1; //запомнить состояние реле
        while (!digitalRead(R1_pin) ) { } // ждать пока кнопка ПУСК нажата
      }
      else {
        button_state = digitalRead(S1_pin); //когда платформа подошла к датчику положения платформы слева
        if ((button_mem == 1) && !digitalRead(S1_pin) && !button_state  &&  digitalRead(S7_pin) && ! digitalRead(S8_pin) ) { // и при таких условиях памяти
          digitalWrite(A_pin, 1); // отк клапан платформы влево
          digitalWrite(E_pin, 0); // вкл цилиндра пресса
          button_mem = 2; //запомнить состояние датчик положения платформы слева
          while (! digitalRead(S1_pin)) {}
        }
        else {
          button_state = digitalRead(S2_pin); //ДАТЧИК ДАВЛЕНИЯ
          if ((button_mem == 2) && !digitalRead(S2_pin) && button_state ) { // сработал датчик давления центральной платформы
            digitalWrite(C_pin, 0);// вкл левого цилиндра
            digitalWrite(E_pin, 1);// откл цилиндра пресса
            button_mem = 3; //запомнить состояние реле
            while (! digitalRead(S2_pin)) {
              /**********************************ЗДЕСЬ НУЖНО УСТАНОВИТЬ ТАЙМЕР КОТОРЫЙ ОПУСТИТ ВНИЗ ЦЕНТРАЛЬНУЮ ПЛИТУ***********************************************/
              //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
              //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
              /*И КАК ТОЛЬКО ТАЙМЕР ОТСЧИТАЕТ , НАПРИМЕ 5 МИНУТ,
              ЦЕНТРАЛЬНАЯ ПЛАТФОРМА ДОЛЖНА ПОЙТИ ВНИЗ
              digitalWrite(E_pin, 0);// вкл цилиндра пресса
              digitalWrite(G_pin, 0);// вкл клапана сброса давления
              АКТИВИРУЕТСЯ ДАТЧИК digitalRead(S4_pin) == 0 И ПОСЛЕ АКТИВАЦИИ
              digitalWrite(E_pin, 1);// откл цилиндра пресса
              digitalWrite(G_pin, 1);// откл клапана сброса давления
              */
              /**************************************************************************************************************/
            }
          }
          else {
            button_state = digitalRead(S3_pin); //ДАТЧИК ПОЛОЖЕНИЯ ВВЕРХУ СЛЕВА
            if (button_mem == 3 && !digitalRead(S3_pin) && !button_state  &&  digitalRead(S7_pin)  && ! digitalRead(S8_pin))  {
              digitalWrite(C_pin, 1);// откл левого цилиндра
              digitalWrite(H_pin, 1);// откл контактор мотора
              button_mem = 4; //запомнить состояние реле
              while (! digitalRead(S3_pin)) {} // ТУТ ЖДЕМ НАЖАТИЯ КНОПКИ ПОКА НЕ ВЫГРУЗЯТ ПЛИТКУ
            }
          }
          else {
            button_state = digitalRead(R1_pin);// если кнопка ПУСК нажата
            if ((button_mem == 4) && !digitalRead(R1_pin) && !button_state &&  digitalRead(S7_pin) && ! digitalRead(S8_pin)) {
              digitalWrite(C_pin, 0); // вкл левого цилиндра
              digitalWrite(G_pin, 0);// вкл клапана сброса давления
              button_mem = 5; //запомнить состояние датчик положения платформы слева
              while (! digitalRead(R1_pin)) {} // ждать пока кнопка ПУСК нажата
            }
            else               {
              button_state = analogRead(sensorY1_pin); //прочитать состояние РЕОСТАТ СЛЕВА
              sensorY1 = analogRead(sensorY1_pin);//прочитать состояние
              if (analogRead(sensorY1_pin) < 50 && digitalRead(S7_pin) && ! digitalRead(S8_pin)) { // СРАБОТАЛ РЕОСТАТ ЗНАЧЕНИЕ "50" УСЛОВНОЕ ОНО ДОЛЖНО ПРОГРАММИРОВАТЬСЯ ВМЕСТЕ С УСТАНОВКОЙ РАЗМЕРА ПЛИТКИ
                // В ДАЛЬНЕЙШЕМ ВМЕСТО 50 ДОЛЖНА СТОЯТЬ ПЕРЕМЕННАЯ КОТОРАЯ БУДЕТ ВВОДИТСЯ И КОРРЕКТИРОВАТЬСЯ С ПРИЛОЖЕНИЯ
                digitalWrite(C_pin, 1);// откл левого цилиндра
                digitalWrite(G_pin, 1);// откл клапана сброса давления
              }
              else                 {
                // ПОСЛЕ ЗАГРУЗКИ КРОШКИ НАЖИМАЕМ ОПЯТЬ КНОПКУ ПУСК
                button_state = digitalRead(R1_pin); // если кнопка ПУСК нажата
                if (button_mem == 5 && !digitalRead(R1_pin) && !button_state &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                  digitalWrite(C_pin, 0);// вкл левого цилиндра
                  digitalWrite(G_pin, 0);// вкл клапана сброса давления
                  button_mem = 6; //запомнить состояние датчик положения платформы слева
                  while (! digitalRead(R1_pin)) {} // ждать пока кнопка ПУСК нажата
                }
                else {
                  button_state = digitalRead(S4_pin ); //ДАТЧИК НИЖНЕГО ПЛОЖЕНИЯ ВСЕХ ЛИФТОВ
                  if (button_mem == 6 && !digitalRead(S4_pin) && ! button_state &&  digitalRead(S7_pin) && ! digitalRead(S8_pin)) {
                    // ТУТ НАДО ПОСТАВИТЬ ЕЩЕ УСЛОВИЕ ЭТО ТАЙМЕР ПОКА ОН НЕ ОТСЧИТАЕТ НАПРИМЕР 5 МИНУТ И ЦЕНТРАЛЬНАЯ ПЛАТФОРМА НЕ ОПУСТИТСЯ ВНИЗ ПЛАТФОРМА НЕ ДОЛЖНА ПОЕХАТЬ ВПРАВО
                    digitalWrite(C_pin, 1);// откл левого цилиндра
                    digitalWrite(G_pin, 1);// откл клапана сброса давления

                    digitalWrite(H_pin, 0);// вкл контактор мотора
                    digitalWrite(B_pin, 0);// вкл платформы враво
                    button_mem = 7; //запомнить состояние
                    while (! digitalRead(S4_pin)) {} // пока датчик не покажет все лифты в нижнем положении
                  }
                  else {
                    button_state = digitalRead(S5_pin); //ДАТЧИК ПОЛОЖЕНИЯ ПЛАТФОРМЫ СПРАВА
                    delay(10); // пауза для проверки дребезга
                    if ((button_mem == 7) && !digitalRead(S5_pin) && !button_state &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                      digitalWrite(B_pin, 1);// откл клапана платформы враво
                      digitalWrite(E_pin, 0);// вкл клапана цилиндра пресса
                      button_mem = 8; //запомнить состояние датчик положения платформы слева
                      while (! digitalRead(S5_pin)) {}  // Весь цикл только в обратном порядке
                    }
                    else {
                      button_state = digitalRead(S2_pin); //ДАТЧИК ДАВЛЕНИЯ
                      if ((button_mem == 8) && !digitalRead(S2_pin) && !button_state  &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                        digitalWrite(F_pin, 0);// вкл клапана правого цилиндра
                        digitalWrite(E_pin, 1);// откл клапана цилиндра пресса
                        button_mem = 9; //запомнить состояние реле
                        while (! digitalRead(S2_pin)) {}// пока датчик ДАВЛЕНИЯ не сработает
                      }
                      else {
                        button_state = digitalRead(S6_pin); //ДАТЧИК ПОЛОЖЕНИЯ ВВЕРХУ СПРАВА
                        if ((button_mem == 9) && !digitalRead(S6_pin) && !button_state &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                          digitalWrite(F_pin, 1);// откл правого цилиндра
                          digitalWrite(H_pin, 1);// откл контактор мотора
                          button_mem = 10; //запомнить состояние реле
                          while (! digitalRead(S6_pin)) {} // пока датчик ВВЕРХ СПРАВА не сработает
                          else {
                            button_state = digitalRead(R1_pin);//  если кнопка ПУСК нажата
                            if ((button_mem == 10) && !digitalRead(R1_pin) && !button_state  &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                              digitalWrite(F_pin, 0);// вкл правого цилиндра
                              digitalWrite(G_pin, 0);// вкл клапана сброса давления
                              button_mem = 11; //запомнить состояние датчик положения платформы слева
                              while (! digitalRead(R1_pin)) {}// ждать пока кнопка ПУСК нажата
                            }
                          }
                          else {
                            button_state = analogRead(sensorY3_pin); //прочитать состояние РЕОСТАТ СЛЕВА
                            sensorY1 = analogRead(sensorY3_pin);//прочитать состояние
                            if (analogRead(sensorY3_pin) < 50 && digitalRead(S7_pin) && !digitalRead(S8_pin)) { // В ДАЛЬНЕЙШЕМ ВМЕСТО 50 ДОЛЖНА СТОЯТЬ ПЕРЕМЕННАЯ КОТОРАЯ БУДЕТ ВВОДИТСЯ И КОРРЕКТИРОВАТЬСЯ С ПРИЛОЖЕНИЯ
                              digitalWrite(F_pin, 1);// откл правого цилиндра
                              digitalWrite(G_pin, 1);// откл клапана сброса давления
                            }
                            button_state = digitalRead(R1_pin);// если кнопка ПУСК нажата
                            if ((button_mem == 11) && !digitalRead(R1_pin) && !button_state  &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                              digitalWrite(F_pin, 0);// вкл правого цилиндра
                              digitalWrite(G_pin, 0);// вкл клапана сброса давления
                              button_mem = 12; //запомнить состояние датчик положения платформы слева
                              while (! digitalRead(R1_pin)) {} // ждать пока кнопка ПУСК нажата
                            }
                            button_state = digitalRead(S4_pin); //ДАТЧИК НИЖНЕГО ПЛОЖЕНИЯ ВСЕХ ЛИФТОВ
                            if ((button_mem == 12) && !digitalRead(S4_pin) && !button_state  &&  digitalRead(S7_pin)  && !digitalRead(S8_pin)) {
                              digitalWrite(F_pin, 1);// откл правого цилиндра
                              digitalWrite(G_pin, 1);// откл клапана сброса давления
                              digitalWrite(H_pin, 0);// вкл контактор мотора
                              digitalWrite(A_pin, 0);// вкл клапан платформы влево
                              button_mem = 13; //запомнить состояние
                              while (!digitalRead(S4_pin)) {} // пока датчик не покажет все лифты в нижнем положении
                            }
                            button_state = digitalRead(S1_pin); //датчик положения платформы слева
                            if ((button_mem == 13) && ! digitalRead(S1_pin) && ! button_state &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                              digitalWrite(A_pin, 1);// откл клапан платформы влево
                              digitalWrite(E_pin, 0);// вкл цилиндра пресса
                              button_mem = 2; //запомнить состояние датчик положения платформы слева
                              while (! digitalRead(S1_pin)) {} // пока датчик не покажет аппарель слева
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Неактивний

#13 2016-11-22 10:19:30

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Помогите создать скетч для станка

qwone ) браво, шикарно  отформатировали

Неактивний

#14 2016-11-22 20:30:05

qwone
Учасник
Зареєстрований: 2016-07-25
Повідомлень: 143

Re: Помогите создать скетч для станка

NoName. Ну да произвел обратный инженеринг. Но когда я это сделал, то понял, что тут надо переделывать всю программу, включая и управление станком.

Неактивний

#15 2016-12-04 11:14:03

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Re: Помогите создать скетч для станка

Спасибо за интерес, автор(я не забил) сижу разбираю дальнейшие циклы и управление через андроид особо времени нету
вот продолжение уже работает управление через приложение с андроида.


// Программа написана для станка по производству резиной плитки в 2016 году


unsigned char button_state;
unsigned char button_mem;
# define L1_PIN 10 // вход сигнала левого положения аппарели
# define S1_PIN 22 // вход сигнала левого положения аппарели
# define S2_PIN 23 // вход сигнала датчика давления
# define S3_PIN 24 // вход сигнала левого положения лифта
# define S4_PIN 25 // вход сигнала положения всех лифтов внижнем положении
# define S5_PIN 26 // вход сигнала правого положения аппарели
# define S6_PIN 27 // ДАТЧИК ПОЛОЖЕНИЯ ВВЕРХУ СПРАВА
# define S7_PIN 28 // вход сигнала датчика положения КРЫШКИ ВВЕРХУ
# define S8_PIN 29 // вход сигнала датчика положения КРЫШКИ ВНИЗУ
int A_PIN = 30; // клапан платформы влево
int B_PIN = 31; // клапан платформы вправо
int C_PIN = 32; // клапан левого цилиндра
int D_PIN = 33; // клапан цилиндра верхней плиты
int E_PIN = 34; // клапан цилиндра пресса
int F_PIN = 35; // клапан правого цилиндра
int G_PIN = 36; // клапан сброса давления
int H_PIN = 37; // котактор мотора


# define MOTOR1_PIN 38 // выбор толщины резиновой плитки +-
# define MOTOR2_PIN 39 // выбор толщины резиновой плитки +-
# define AL1_PIN 40 // реле тэна справа 1
# define AL2_PIN 41 // реле тэна справа 2
# define AC1_PIN 42 // реле тэна центр 1
# define AC2_PIN 43 // реле тэна центр 2
# define AR1_PIN 44 // реле тэна слева 1
# define AR2_PIN 45 // реле тэна слева 2
# define LAMP 46 // лампа пусковой кнопки
# define SIRENA_PIN 47 // сирена окончания цикла
# define R_PIN 48 // кнопка аварийной остановки
# define R1_PIN 49 // кнпка пусковая цикла
# define R2_PIN 50 // кнопка вверх плиты
# define R3_PIN 51 // кнопка вниз плиты

unsigned long next_time; // время очередного переключения первого светодиода

const int ledPin_1 = 10;
const int ledPin_2 = 11;



int now_time;

int  v;
int  V=70;
int  taimer=50000;
int  taim;
int  W=90;

unsigned long next_time_1; // время очередного переключения первого светодиода
unsigned long next_time_2; // ... второго светодиода
int timeout_1 = 500; // половина периода мигания первого светодиода
int timeout_2 = 800; // ... второго светодиода
int led_state_1 = 0; // начальное состояние первого светодиода - выключен
int led_state_2 = 0; // ... второго светодиода

void setup()
{
Serial3.begin(9600);

  next_time = millis() + taimer; // вычисляем время следующего переключения первого светодиода
  pinMode(ledPin_1, OUTPUT);
    pinMode(ledPin_2, OUTPUT);

    digitalWrite(ledPin_1, led_state_1); // гасим первый светодиод
    digitalWrite(ledPin_2, led_state_2); // гасим второй светодиод

    next_time_1 = millis() + timeout_1; // вычисляем время следующего переключения первого светодиода
    next_time_2 = millis() + timeout_2; // ... второго светодиода
pinMode(L1_PIN, INPUT);
pinMode(S1_PIN, INPUT);
pinMode(S2_PIN, INPUT);
pinMode(S3_PIN, INPUT);
pinMode(S4_PIN, INPUT);
pinMode(S5_PIN, INPUT);
pinMode(S6_PIN, INPUT);
pinMode(S7_PIN, INPUT);
pinMode(S8_PIN, INPUT);
pinMode(R_PIN, INPUT);
pinMode(R1_PIN, INPUT);
pinMode(R2_PIN, INPUT);
pinMode(R3_PIN, INPUT);
pinMode(A_PIN, OUTPUT);
pinMode(B_PIN, OUTPUT);
pinMode(C_PIN, OUTPUT);
pinMode(D_PIN, OUTPUT);
pinMode(E_PIN, OUTPUT);
pinMode(F_PIN, OUTPUT);
pinMode(G_PIN, OUTPUT);
pinMode(H_PIN, OUTPUT);
pinMode(AL1_PIN, OUTPUT);
pinMode(AL2_PIN, OUTPUT);
pinMode(AC1_PIN, OUTPUT);
pinMode(AC2_PIN, OUTPUT);
pinMode(AR1_PIN, OUTPUT);
pinMode(AR2_PIN, OUTPUT);
pinMode(MOTOR1_PIN, OUTPUT);
pinMode(MOTOR2_PIN, OUTPUT);
pinMode(LAMP, OUTPUT);
pinMode(SIRENA_PIN, OUTPUT);

digitalWrite(A_PIN, HIGH);
digitalWrite(B_PIN, HIGH);
digitalWrite(C_PIN, HIGH);
digitalWrite(D_PIN, HIGH);
digitalWrite(E_PIN, HIGH);
digitalWrite(F_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
digitalWrite(H_PIN, HIGH);
digitalWrite(MOTOR1_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(MOTOR2_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(AL1_PIN, HIGH);
digitalWrite(AL2_PIN, HIGH);
digitalWrite(AC1_PIN, HIGH);
digitalWrite(AC2_PIN, HIGH);
digitalWrite(AR1_PIN, HIGH);
digitalWrite(AR2_PIN, HIGH);

digitalWrite(L1_PIN, HIGH);// Датчик центрального лифта внизу


digitalWrite(S2_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(R1_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S6_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S1_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S3_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S4_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S5_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S6_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S7_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(S8_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(R2_PIN, HIGH); //подключить внутренний подтягивающий резистор
digitalWrite(R3_PIN, HIGH); //подключить внутренний подтягивающий резистор

}
void loop()
{




//ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ
// Мигание ламп
    int now_time = millis(); // текущее время
    if( now_time >= next_time_1 ){ // если текущее время превысило намеченное время, то
        next_time_1 = now_time + timeout_1; // вычисляем время следующего переключения
        led_state_1 = !led_state_1; // меняем состояние на противоположное
        digitalWrite(ledPin_1, led_state_1); // зажигаем или гасим светодиод
    }

    now_time = millis();
    if( now_time >= next_time_2 ){
        next_time_2 = now_time + timeout_2;
        led_state_2 = !led_state_2;
        digitalWrite(ledPin_2, led_state_2);
    }



//ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ


















int sensorY0 = analogRead(A1); // датчик выбора размера плитки
int sensorY1 = analogRead(A2); // датчик положения платформы слева
int sensorY2 = analogRead(A3); // датчик положения платформы центр
int sensorY3 = analogRead(A4); // датчик положения платформы справа
int sensorY4 = analogRead(A5); // датчик температуры правой плиты
int sensorY5 = analogRead(A6); // датчик температуры центральной плиты
int sensorY6 = analogRead(A7); // датчик температуры левой плиты
//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
{

  if(Serial3.available() > 0){ // есть ли что-то в буфере
   
 
    v = Serial3.read(); // чтение символа
   
   
/*Выбор размера плитки************************************************************************************/

if(v == '1')
      {
  V=70;
W=90;
   Serial3.println("1");
}
if(v == '2')
   {
      V=200;

W=280;
Serial3.println("2");
}
if(v == '3')
      {
      V=500;

W=580;
Serial3.println("3");
}

if(v == '4')
     {
      V=700;

W=780;
Serial3.println("4");
}

if(v == '5')
     {
      V=800;

W=1020;
Serial3.println("5");
}

if(taimer == 'a1')
      {
taim=50000;

}
if(taimer== 'a2')
   {
     taim=60000;


}
if(taimer == 'a3')
      {
     taim=70000;


}

if(taimer == 'a4')
     {
  taim=80000;

}

if(taimer == 'a5')
     {
taim=90000;

}

}









button_state = analogRead(A1); //прочитать состояние РЕОСТАТ СЛЕВА


sensorY1 = analogRead(A1);//прочитать состояние

if (analogRead(A1) > V) // ТУТ 800 ЭТО ПЕРЕМЕННАЯ КОТОРАЯ ДОЛЖНА ВЫСТАВЛЯТСЯ ПАРАМЕТРАМИ С ПРИЛОЖЕНИЯ

{

digitalWrite(MOTOR1_PIN, HIGH);

}

else

{
digitalWrite(MOTOR1_PIN, LOW);
}
if (analogRead(A1) < W ) // ТУТ 850 ЭТО ПЕРЕМЕННАЯ КОТОРАЯ ДОЛЖНА ВЫСТАВЛЯТСЯ ПАРАМЕТРАМИ С ПРИЛОЖЕНИЯ

{
digitalWrite(MOTOR2_PIN, HIGH);

}

else

{

digitalWrite(MOTOR2_PIN, LOW);


}

//Ручное управление!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       switch (v)
       { 
         case 'A':
         digitalWrite(D_PIN, LOW); // КРЫШКА ВВЕРХ
         digitalWrite(H_PIN, LOW);
       
         break;

         case 'a':
         digitalWrite(D_PIN,HIGH); // КРЫШКА ВВЕРХ СТОП
         digitalWrite(H_PIN,HIGH);
       
         break;


         case 'B':
         digitalWrite(D_PIN,LOW); // КРЫШКА ВНИЗ
         digitalWrite(G_PIN,LOW);
       
         break;

         case 'b':
         digitalWrite(D_PIN,HIGH); // КРЫШКА ВНИЗ СТОП
         digitalWrite(G_PIN,HIGH);
       
         break;


         case 'C':
         digitalWrite(A_PIN, LOW); // ПЛАТФОРМА ПОШЛА НАЛЕВО
         digitalWrite(H_PIN, LOW);
       
         break;

         case 'c':
         digitalWrite(A_PIN,HIGH); // ПЛАТФОРМА НАЛЕВО СТОП
         digitalWrite(H_PIN,HIGH);
       
         break;


         case 'D':
         digitalWrite(B_PIN, LOW); // ПЛАТФОРМА ПОШЛА НАПРАВО
         digitalWrite(H_PIN, LOW);
       
         break;

         case 'd':
         digitalWrite(B_PIN, HIGH); // ПЛАТФОРМА НАПРАВО СТОП
         digitalWrite(H_PIN, HIGH);
       
         break;


         case 'E':
         digitalWrite(E_PIN, LOW); // ЦЕНТРАЛЬНЫЙ ЛИФТ ВВЕРХ АКТИВИРОВАН
         digitalWrite(H_PIN, LOW);
       
         break;

         case 'e':
         digitalWrite(E_PIN, HIGH); // ЦЕНТРАЛЬНЫЙ ЛИФТ ВВЕРХ СТОП
         digitalWrite(H_PIN, HIGH);
         
         break;
         
         case 'F':
         digitalWrite(E_PIN, LOW); // ЦЕНТРАЛЬНЫЙ ЛИФТ ВНИЗ АКТИВИРОВАН
         digitalWrite(G_PIN, LOW);
         
         break;
         
         case 'f':
         digitalWrite(E_PIN, HIGH); // ЦЕНТРАЛЬНЫЙ ЛИФТ ВНИЗ СТОП
         digitalWrite(G_PIN, HIGH);
       
         break;

                  case 'K':
         digitalWrite(D_PIN, LOW); // ЛЕВЫЙ ЛИФТ ВВЕРХ
         digitalWrite(H_PIN, LOW);
       
         break;

                  case 'k':
         digitalWrite(D_PIN, HIGH); // ЛЕВЫЙ ЛИФТ ВВЕРХ СТОП
         digitalWrite(H_PIN, HIGH);
       
         break;

                  case 'G':
         digitalWrite(D_PIN, LOW); // ЛЕВЫЙ ЛИФТ ВНИЗ
         
         break;

                  case 'g':
         digitalWrite(D_PIN, HIGH); // ЛЕВЫЙ ЛИФТ ВНИЗ СТОП
         digitalWrite(G_PIN, HIGH);
       
         break;
         
                  case 'H':
         digitalWrite(F_PIN, LOW); // ПРАВЫЙ ЛИФТ ВВЕРХ
         digitalWrite(H_PIN, LOW);
       
         break;

                  case 'h':
         digitalWrite(F_PIN, HIGH); // ПРАВЫЙ ЛИФТ ВВЕРХ СТОП
         digitalWrite(H_PIN, HIGH);
       
         break;

                  case 'J':
         digitalWrite(F_PIN, LOW); // ПРАВЫЙ ЛИФТ ВНИЗ
         digitalWrite(G_PIN, LOW);
       
         break;

                  case 'j':
         digitalWrite(F_PIN, HIGH); // ПРАВЫЙ ЛИФТ ВНИЗ СТОП
         digitalWrite(G_PIN, HIGH);
     
         

       

break;

default:
 
   
 
     




/********************************************************************************************************************/
// ЗДЕСЬ УПРАВЛЕНИЕ ЦЕНТРАЛЬНОЙ КРЫШКОЙ

button_state = digitalRead(R2_PIN);
if (digitalRead(R2_PIN) == LOW )
{
digitalWrite(D_PIN, LOW); // КРЫШКА ВВЕРХ
digitalWrite(H_PIN, LOW);
while (digitalRead(R2_PIN) == LOW) {
}

} else
{
button_state = digitalRead(S7_PIN);


if (digitalRead(S7_PIN) == LOW )
{
digitalWrite(G_PIN, HIGH);
digitalWrite(D_PIN, HIGH);

button_state = digitalRead(R3_PIN);
if (digitalRead(R3_PIN) == LOW )
{
digitalWrite(G_PIN, LOW); // КРЫШКА ВНИЗ
digitalWrite(H_PIN, LOW);
}

} else
{
button_state = digitalRead(S8_PIN);


if (digitalRead(S8_PIN) == LOW )
{
digitalWrite(H_PIN, HIGH);
digitalWrite(D_PIN, HIGH);
while (digitalRead(R3_PIN) == LOW) {
//*********************************************************************************************************************************//
// ТУТ НАЧАЛО РАБОТЫ

button_state = digitalRead(R1_PIN); //КНОПКА ПУСК
if (digitalRead(R1_PIN) == LOW && button_state == LOW && button_mem == 0 && digitalRead(S4_PIN) == LOW && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW) // условие выполняется если датчик нижного положения всех лифтов активирован
{


digitalWrite(A_PIN, LOW); // ПЛАТФОРМА ПОШЛА НАЛЕВО
digitalWrite(H_PIN, LOW);
button_mem = 51; //запомнить состояние реле
while (digitalRead(R1_PIN) == LOW) {

}

} else
{
button_state = digitalRead(S1_PIN);


if (digitalRead(S1_PIN) == LOW && button_state == LOW && button_mem == 51 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW ) // и при таких условиях памяти
{
digitalWrite(A_PIN, HIGH); // ПЛАТФОРМА ОТКЛЮЧИЛАСЬ И ВКЛЮЧИЛСЯ ЦЕНТРАЛЬНЫЙ ЛИФТ , мотор гидростанции продолжает работать.
digitalWrite(E_PIN, LOW); // активация клапана центральной плиты

button_mem = 52;
while (digitalRead(S1_PIN) == LOW) {

}

} else
{
button_state = digitalRead(S2_PIN); //ДАТЧИК ДАВЛЕНИЯ




if (digitalRead(S2_PIN) == LOW && button_state == LOW && button_mem == 52) // сработал датчик давления центральной платформы
{


digitalWrite(C_PIN, LOW); // ЦЕНТРАЛЬНЫЙ ЛИФТ ОТКЛЮЧИЛСЯ ПО ДАТЧИКУ ДАВЛЕНИЯ И ЛЕВЫЙ ПОДЪЕМНЫЙ ЛИФТ ПОШЕЛ НА ВЕРХ
digitalWrite(E_PIN, HIGH);
/**********************************ЗДЕСЬ НУЖНО УСТАНОВИТЬ ТАЙМЕР КОТОРЫЙ ОПУСТИТ ВНИЗ ЦЕНТРАЛЬНУЮ ПЛИТУ***********************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*И КАК ТОЛЬКО ТАЙМЕР ОТСЧИТАЕТ , НАПРИМЕ 5 МИНУТ,
ЦЕНТРАЛЬНАЯ ПЛАТФОРМА ДОЛЖНА ПОЙТИ ВНИЗ
digitalWrite(E_PIN, LOW);
digitalWrite(G_PIN, LOW);

АКТИВИРУЕТСЯ ДАТЧИК digitalRead(S4_PIN) == LOW И ПОСЛЕ АКТИВАЦИИ
digitalWrite(E_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
*/

/**************************************************************************************************************/
now_time = millis(); // текущее время
    if( now_time >= taimer ){ // если текущее время превысило намеченное время, то

digitalWrite(G_PIN, LOW);
digitalWrite(E_PIN, LOW);
if( digitalRead(L1_PIN) == LOW){ // если текущее время превысило намеченное время, то

digitalWrite(G_PIN, HIGH); // ПЛАТФОРМА ОТКЛЮЧИЛАСЬ И ВКЛЮЧИЛСЯ ЦЕНТРАЛЬНЫЙ ЛИФТ , мотор гидростанции продолжает работать.
digitalWrite(E_PIN, HIGH);

button_mem = 53; //запомнить состояние реле
while (digitalRead(S2_PIN) == LOW) {



}

} else
{
button_state = digitalRead(S3_PIN); //ДАТЧИК ПОЛОЖЕНИЯ ВВЕРХУ СЛЕВА


if (digitalRead(S3_PIN) == LOW && button_state == LOW && button_mem == 53 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(C_PIN, HIGH); // ЗДЕСЬ СРАБОТАЛ ДАТЧИК ВЕРХНЕГО ПОЛОЖЕНИЯ ЛИФТА СЛЕВА
digitalWrite(H_PIN, HIGH);
button_mem = 54; //запомнить состояние реле
while (digitalRead(S3_PIN) == LOW) {


// ТУТ ЖДЕМ НАЖАТИЯ КНОПКИ ПОКА НЕ ВЫГРУЗЯТ ПЛИТКУ
}


} else
{
button_state = digitalRead(R1_PIN); //НАЖИМАЕМ КНОПКА ПУСК


if (digitalRead(R1_PIN) == LOW && button_state == LOW && button_mem == 54 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW )
{
digitalWrite(C_PIN, LOW); // ЛИФТ СЛЕВА ПОШЕЛ ВНИЗ ДО СРАБАТЫВАНИЯ РЕОСТАТА
digitalWrite(G_PIN, LOW);

button_mem = 55; //запомнить состояние датчик положения платформы слева
while (digitalRead(R1_PIN) == LOW) {


}

} else
{
button_state = analogRead(A2); //прочитать состояние РЕОСТАТ СЛЕВА


sensorY1 = analogRead(A2);//прочитать состояние

if (analogRead(A2) < 50 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW) // СРАБОТАЛ РЕОСТАТ ЗНАЧЕНИЕ "50" УСЛОВНОЕ ОНО ДОЛЖНО ПРОГРАММИРОВАТЬСЯ ВМЕСТЕ С УСТАНОВКОЙ РАЗМЕРА ПЛИТКИ
{
// В ДАЛЬНЕЙШЕМ ВМЕСТО 50 ДОЛЖНА СТОЯТЬ ПЕРЕМЕННАЯ КОТОРАЯ БУДЕТ ВВОДИТСЯ И КОРРЕКТИРОВАТЬСЯ С ПРИЛОЖЕНИЯ

digitalWrite(C_PIN, HIGH);

digitalWrite(G_PIN, HIGH);


{

}


} else
{
// ПОСЛЕ ЗАГРУЗКИ КРОШКИ НАЖИМАЕМ ОПЯТЬ КНОПКУ ПУСК
button_state = digitalRead(R1_PIN); //КНОПКА ПУСК

if (digitalRead(R1_PIN) == LOW && button_state == LOW && button_mem == 55 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(C_PIN, LOW);
digitalWrite(G_PIN, LOW);

button_mem = 56; //запомнить состояние датчик положения платформы слева
while (digitalRead(R1_PIN) == LOW) {

}


} else
{
button_state = digitalRead(S4_PIN ); //ДАТЧИК НИЖНЕГО ПЛОЖЕНИЯ ВСЕХ ЛИФТОВ

if (digitalRead(S4_PIN) == LOW && button_state == LOW && button_mem == 56 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
// ТУТ НАДО ПОСТАВИТЬ ЕЩЕ УСЛОВИЕ ЭТО ТАЙМЕР ПОКА ОН НЕ ОТСЧИТАЕТ НАПРИМЕР 5 МИНУТ И ЦЕНТРАЛЬНАЯ ПЛАТФОРМА НЕ ОПУСТИТСЯ ВНИЗ ПЛАТФОРМА НЕ ДОЛЖНА ПОЕХАТЬ ВПРАВО
{
digitalWrite(C_PIN, HIGH);
digitalWrite(G_PIN, HIGH);


digitalWrite(H_PIN, LOW);
digitalWrite(B_PIN, LOW);
button_mem = 57; //запомнить состояние
while (digitalRead(S4_PIN) == LOW) {

}


} else
{
button_state = digitalRead(S5_PIN); //ДАТЧИК ПОЛОЖЕНИЯ ПЛАТФОРМЫ СПРАВА

delay(10); // пауза для проверки дребезга
if (digitalRead(S5_PIN) == LOW && button_state == LOW && button_mem ==57 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW )
{
digitalWrite(B_PIN, HIGH);
digitalWrite(E_PIN, LOW);



button_mem = 58; //запомнить состояние датчик положения платформы слева
while (digitalRead(S5_PIN) == LOW) {

// Весь цикл только в обратном порядке

}

} else
{
button_state = digitalRead(S2_PIN); //ДАТЧИК ДАВЛЕНИЯ


if (digitalRead(S2_PIN) == LOW && button_state == LOW && button_mem == 58 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(F_PIN, LOW);
digitalWrite(E_PIN, HIGH);
/**********************************ЗДЕСЬ НУЖНО УСТАНОВИТЬ ТАЙМЕР КОТОРЫЙ ОПУСТИТ ВНИЗ ЦЕНТРАЛЬНУЮ ПЛИТУ***********************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*И КАК ТОЛЬКО ТАЙМЕР ОТСЧИТАЕТ , НАПРИМЕ 5 МИНУТ,
ЦЕНТРАЛЬНАЯ ПЛАТФОРМА ДОЛЖНА ПОЙТИ ВНИЗ
digitalWrite(E_PIN, LOW);
digitalWrite(G_PIN, LOW);

АКТИВИРУЕТСЯ ДАТЧИК digitalRead(S4_PIN) == LOW И ПОСЛЕ АКТИВАЦИИ
digitalWrite(E_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
*/

/**************************************************************************************************************/
now_time = millis(); // текущее время
    if( now_time >= taimer ){ // если текущее время превысило намеченное время, то

digitalWrite(G_PIN, LOW);
digitalWrite(E_PIN, LOW);
if( digitalRead(L1_PIN) == LOW){ // если текущее время превысило намеченное время, то

digitalWrite(G_PIN, HIGH); // ПЛАТФОРМА ОТКЛЮЧИЛАСЬ И ВКЛЮЧИЛСЯ ЦЕНТРАЛЬНЫЙ ЛИФТ , мотор гидростанции продолжает работать.
digitalWrite(E_PIN, HIGH);
button_mem = 59; //запомнить состояние реле
while (digitalRead(S2_PIN) == LOW) {

}

} else
{
button_state = digitalRead(S6_PIN); //ДАТЧИК ПОЛОЖЕНИЯ ВВЕРХУ СПРАВА

if (digitalRead(S6_PIN) == LOW && button_state == LOW && button_mem == 59 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(F_PIN, HIGH);
digitalWrite(H_PIN, HIGH);
button_mem = 60; //запомнить состояние реле
while (digitalRead(S6_PIN) == LOW) {

}


} else
{
button_state = digitalRead(R1_PIN); //КНОПКА ПУСК

if (digitalRead(R1_PIN) == LOW && button_state == LOW && button_mem == 61 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(F_PIN, LOW);
digitalWrite(G_PIN, LOW);

button_mem = 62; //запомнить состояние датчик положения платформы слева
while (digitalRead(R1_PIN) == LOW) {


}

} else
{
button_state = analogRead(A4); //прочитать состояние РЕОСТАТ СЛЕВА


sensorY1 = analogRead(A4);//прочитать состояние

if (analogRead(A4) < 50 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW) // В ДАЛЬНЕЙШЕМ ВМЕСТО 50 ДОЛЖНА СТОЯТЬ ПЕРЕМЕННАЯ КОТОРАЯ БУДЕТ ВВОДИТСЯ И КОРРЕКТИРОВАТЬСЯ С ПРИЛОЖЕНИЯ
{


digitalWrite(F_PIN, HIGH);

digitalWrite(G_PIN, HIGH);


{


}


} else
{
button_state = digitalRead(R1_PIN); //КНОПКА ПУСК


if (digitalRead(R1_PIN) == LOW && button_state == LOW && button_mem == 62 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(F_PIN, LOW);
digitalWrite(G_PIN, LOW);

button_mem = 63; //запомнить состояние датчик положения платформы слева
while (digitalRead(R1_PIN) == LOW) {


}


} else
{
button_state = digitalRead(S4_PIN); //ДАТЧИК НИЖНЕГО ПЛОЖЕНИЯ ВСЕХ ЛИФТОВ

if (digitalRead(S4_PIN) == LOW && button_state == LOW && button_mem == 63 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(F_PIN, HIGH);
digitalWrite(G_PIN, HIGH);
digitalWrite(H_PIN, LOW);
digitalWrite(A_PIN, LOW);
button_mem = 64; //запомнить состояние
while (digitalRead(S4_PIN) == LOW) {


}

} else
{
button_state = digitalRead(S1_PIN); //датчик положения платформы слева


if (digitalRead(S1_PIN) == LOW && button_state == LOW && button_mem == 64 && digitalRead(S7_PIN) == HIGH && digitalRead(S8_PIN) == LOW)
{
digitalWrite(A_PIN, HIGH);
digitalWrite(E_PIN, LOW);

button_mem = 52; //запомнить состояние датчик положения платформы слева
while (digitalRead(S1_PIN) == LOW) {
// И ОТСЮДА ЦИКЛ, СОГЛАСНО ПАМЯТИ 52, ПОШЕЛ НА ПОВТОР

}}}}}}}}}}}}}}}}}}}}}}}}}}}}

//*************************************************************************************************************************************************************

Неактивний

#16 2016-12-04 11:18:59

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Re: Помогите создать скетч для станка

Сейчас работаю по приложению, не могу ни как понять как передавать разные данные на разные окна , например три показания температур на три скрина в одном окне приложения, а так же работаю над таймером. А за корректировку кода спасибо, подправлю в ближайшее время.
По поводу цены сначала назначили около 5 т.р. а сказал делайте, потом когда узнали что еще и приложение надо писать то и вовсе отказались.
Я в отличии от некоторых своей работой поделюсь когда полностью допишу(поделюсь бесплатно!)

Неактивний

#17 2016-12-04 11:52:34

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Re: Помогите создать скетч для станка

qwone  Спасибо что уделил время и внимание, вот исправленный скетч, ошибок нет, только осталось проверит на работоспособность по датчикам, проверю отпишусь.



/* Программа написана для станка по производству резиной плитки в 2016 году
ДАТЧИКИ:
датчик положения платформы слева               -> A2 (sensorY1_pin)
датчик положения платформы центр               -> A3 (sensorY2_pin)
датчик положения платформы справа              -> A4 (sensorY3_pin)
датчик температуры правой плиты                -> A5 (sensorY4_pin)
датчик температуры центральной плиты           -> A6 (sensorY5_pin)
датчик температуры левой плиты                 -> A7 (sensorY6_pin)
датчик левого левого положения аппарели        -> 22 (S1_pin)  0 сработал / 1 нет
датчик давления                                -> 23 (S2_pin)  0 сработал / 1 нет
датчик левого положения лифта                  -> 24 (S3_pin)  0 сработал / 1 нет
датчик положения всех лифтов внижнем положении -> 25 (S4_pin)  0 сработал / 1 нет
датчик правого положения аппарели              -> 26 (S5_pin)  0 сработал / 1 нет
датчик положения ВВЕРХУ СПРАВА                 -> 27 (S6_pin)  0 сработал / 1 нет
датчик положения КРЫШКИ ВВЕРХУ                 -> 28 (S7_pin)  0 сработал / 1 нет
датчик положения КРЫШКИ ВНИЗУ                  -> 29 (S8_pin)  0 сработал / 1 нет

КЛАПАНЫ МОТОРЫ ТЕНЫ:
клапан платформы влево                         ->30 (A_pin)
клапан платформы вправо                        ->31 (B_pin)
клапан левого цилиндра                         ->32 (C_pin)
клапан цилиндра верхней плиты                  ->33 (D_pin)
клапан цилиндра пресса                         ->34 (E_pin)
клапан правого цилиндра                        ->35 (F_pin)
клапан сброса давления                         ->36 (G_pin)
контактор мотора                               ->37 (H_pin)
выбор толщины резиновой плитки +              ->38 (MOTOR1_pin) в проектировании
выбор толщины резиновой плитки -              ->39 (MOTOR2_pin) в проектировании
реле тэна справа 1                            ->40 (AL1_pin)    в проектировании
реле тэна справа 2                            ->41 (AL2_pin)    в проектировании
реле тэна центр 1                             ->42 (AC1_pin)    в проектировании
реле тэна центр 2                             ->43 (AC2_pin)    в проектировании
реле тэна слева 1                             ->44 (AR1_pin)    в проектировании
реле тэна слева 2                             ->45 (AR2_pin)    в проектировании

КНОПКИ УПРАВЛЕНИЯ ЛАМПЫ СИГНАЛИЗАЦИЯ:
лампа пусковой кнопки                         ->46 (LAMP_pin)   в проектировании
сирена окончания цикла                        ->47 (SIRENA_pin) в проектировании
кнопка АВАРИЙН СТОП                           ->48 (R_pin)      в проектировании
кнопка ПУСК                                   ->49 (R1_pin)
кнопка ПЛИТА ВВЕРХ                            ->50 (R2_pin)
кнопка ПЛИТА ВНИЗ                             ->51 (R3_pin)
*/
// ДАТЧИКИ:
const int sensorY1_pin = A2; // датчик положения лифта слева
int sensorY1; // 0 - 1023 потенциометр
const int sensorY2_pin = A3; // датчик положения платформы центр
int sensorY2; // 0 - 1023 потенциометр
const int sensorY3_pin = A4; // датчик положения платформы справа
int sensorY3;  // 0 - 1023 потенциометр
const int sensorY4_pin = A5; // датчик температуры правой плиты
int sensorY4;  // 0 - 1023
const int sensorY5_pin = A6; // датчик температуры центральной плиты
int sensorY5;  // 0 - 1023
const int sensorY6_pin = A7; // датчик температуры левой плиты
int sensorY6;  // 0 - 1023
const int S1_pin = 22; // вход сигнала левого положения аппарели
const int S2_pin = 23; // вход сигнала датчика давления
const int S3_pin = 24; // вход сигнала левого положения лифта
const int S4_pin = 25; // вход сигнала положения всех лифтов внижнем положении
const int S5_pin = 26; // вход сигнала правого положения аппарели
const int S6_pin = 27; // датчик положения ВВЕРХУ СПРАВА
const int S7_pin = 28; // вход сигнала датчика положения КРЫШКИ ВВЕРХУ
const int S8_pin = 29; // вход сигнала датчика положения КРЫШКИ ВНИЗУ

// КЛАПАНЫ МОТОРЫ ТЕНЫ:
const int A_pin = 30; // клапан платформы влево         0 вкл / 1 нет
const int B_pin = 31; // клапан платформы вправо        0 вкл / 1 нет
const int C_pin = 32; // клапан левого цилиндра         0 вкл / 1 нет
const int D_pin = 33; // клапан цилиндра верхней плиты  0 вкл / 1 нет
const int E_pin = 34; // клапан цилиндра пресса         0 вкл / 1 нет
const int F_pin = 35; // клапан правого цилиндра        0 вкл / 1 нет
const int G_pin = 36; // клапан сброса давления         0 вкл / 1 нет
const int H_pin = 37; // контактор мотора               0 вкл / 1 нет
const int MOTOR1_pin = 38; // выбор толщины резиновой плитки +
const int MOTOR2_pin = 39; // выбор толщины резиновой плитки -
const int AL1_pin = 40; // реле тэна справа 1
const int AL2_pin = 41; // реле тэна справа 2
const int AC1_pin = 42; // реле тэна центр 1
const int AC2_pin = 43; // реле тэна центр 2
const int AR1_pin = 44; // реле тэна слева 1
const int AR2_pin = 45; // реле тэна слева 2
//КНОПКИ УПРАВЛЕНИЯ ЛАМПЫ СИГНАЛИЗАЦИЯ:
const int LAMP_pin = 46; // лампа пусковой кнопки
const int SIRENA_pin = 47; // сирена окончания цикла
const int R_pin = 48; // кнопка АВАРИЙН СТОП          0 нажата / 1 нет
const int R1_pin = 49; // кнопка ПУСК                 0 нажата / 1 нет
const int R2_pin = 50; // кнопка ПЛИТА ВВЕРХ          0 нажата / 1 нет
const int R3_pin = 51; // кнопка ПЛИТА ВНИЗ           0 нажата / 1 нет

unsigned char button_state; // просто вспомогательная переменная
unsigned char button_mem; // этапы программы

void setup()  {   // -----------------------------------------------------
  Serial.begin(9600);
  // ДАТЧИКИ:
  pinMode(S1_pin, INPUT_PULLUP); // вход сигнала левого положения аппарели
  pinMode(S2_pin, INPUT_PULLUP); // вход сигнала датчика давления
  pinMode(S3_pin, INPUT_PULLUP); // вход сигнала левого положения лифта
  pinMode(S4_pin, INPUT_PULLUP); // вход сигнала положения всех лифтов внижнем положении
  pinMode(S5_pin, INPUT_PULLUP); // вход сигнала правого положения аппарели
  pinMode(S6_pin, INPUT_PULLUP); // датчик положения ВВЕРХУ СПРАВА
  pinMode(S7_pin, INPUT_PULLUP); // вход сигнала датчика положения КРЫШКИ ВВЕРХУ
  pinMode(S8_pin, INPUT_PULLUP); // вход сигнала датчика положения КРЫШКИ ВНИЗУ

  //КНОПКИ УПРАВЛЕНИЯ ЛАМПЫ СИГНАЛИЗАЦИЯ:
  pinMode(LAMP_pin, OUTPUT);
  pinMode(SIRENA_pin, OUTPUT);
  pinMode(R_pin, INPUT_PULLUP); // подключить кнопку АВАРИЙН СТОП с подтянутым резистором
  pinMode(R1_pin, INPUT_PULLUP);// подключить кнопку ПУСК        с подтянутым резистором
  pinMode(R2_pin, INPUT_PULLUP);// подключить кнопку ПЛИТА ВВЕРХ с подтянутым резистором
  pinMode(R3_pin, INPUT_PULLUP);// подключить кнопку ПЛИТА ВНИЗ  с подтянутым резистором

  // КЛАПАНЫ МОТОРЫ ТЕНЫ:
  pinMode(A_pin, OUTPUT);// клапан платформы влево
  digitalWrite(A_pin, 1);// откл клапан платформы влево
  pinMode(B_pin, OUTPUT);// клапан платформы враво
  digitalWrite(B_pin, 1);// откл клапана платформы враво
  pinMode(C_pin, OUTPUT);// клапан левого цилиндра
  digitalWrite(C_pin, 1);// откл клапана левого цилиндра
  pinMode(D_pin, OUTPUT);// клапан цилиндра верхней плиты
  digitalWrite(D_pin, 1);// откл клапана цилиндра верхней плиты
  pinMode(E_pin, OUTPUT);// клапан цилиндра пресса
  digitalWrite(E_pin, 1);// откл цилиндра пресса
  pinMode(F_pin, OUTPUT);// клапан правого цилиндра
  digitalWrite(F_pin, 1);// откл клапана правого цилиндра
  pinMode(G_pin, OUTPUT);// клапан сброса давления
  digitalWrite(G_pin, 1);// откл клапана сброса давления
  pinMode(H_pin, OUTPUT);// контактор мотора
  digitalWrite(H_pin, 1);// откл контактор мотора

  pinMode(AL1_pin, OUTPUT);// реле тэна справа 1
  pinMode(AL2_pin, OUTPUT);// реле тэна справа 2
  pinMode(AC1_pin, OUTPUT);// реле тэна центр 1
  pinMode(AC2_pin, OUTPUT);// реле тэна центр 2
  pinMode(AR1_pin, OUTPUT);// реле тэна слева 1
  pinMode(AR2_pin, OUTPUT);// реле тэна слева 2
  pinMode(MOTOR1_pin, OUTPUT);// выбор толщины резиновой плитки +
  pinMode(MOTOR2_pin, OUTPUT);// выбор толщины резиновой плитки -
}
void loop()   {   // -----------------------------------------------------
  sensorY1 = analogRead(sensorY1_pin); // РЕЗИСТОР положения лифта слева
  sensorY2 = analogRead(sensorY2_pin); // датчик положения платформы центр
  sensorY3 = analogRead(sensorY3_pin); // датчик положения платформы справа
  sensorY4 = analogRead(sensorY4_pin); // датчик температуры правой плиты
  sensorY5 = analogRead(sensorY5_pin); // датчик температуры центральной плиты
  sensorY6 = analogRead(sensorY6_pin); // датчик температуры левой плиты

  // ЗДЕСЬ УПРАВЛЕНИЕ ЦЕНТРАЛЬНОЙ КРЫШКОЙ
  button_state = digitalRead(R2_pin);
  if (! digitalRead(R2_pin)) {  // если кнопка ПЛИТА ВВЕРХ нажата
    digitalWrite(D_pin, 0); // вкл цилиндра верхней плиты
    digitalWrite(H_pin, 0); // вкл контактор мотора
    while (!digitalRead(R2_pin)) {}// ждать пока кнопка ПЛИТА ВВЕРХ нажата
  }
  button_state = digitalRead(S7_pin);
  if (! digitalRead(S7_pin) )   {
    digitalWrite(G_pin, 1);// откл клапана сброса давления
    digitalWrite(D_pin, 1);// откл цилиндра верхней плиты
    button_state = digitalRead(R3_pin);
    if (! digitalRead(R3_pin) )      { // если кнопку ПЛИТА ВНИЗ нажата
      digitalWrite(G_pin, 0); // вкл клапана сброса давления
      digitalWrite(H_pin, 0);// вкл контактор мотора
    }
  }
  button_state = digitalRead(S8_pin);
  if (! digitalRead(S8_pin) )     { // если сработал датчик положения КРЫШКИ ВНИЗУ
    digitalWrite(H_pin, 1);// откл контактор мотора
    digitalWrite(D_pin, 1);// откл цилиндра верхней плиты
    while (! digitalRead(R3_pin)) { // ждать пока кнопка ПЛИТА ВНИЗ нажата
      //*********************************************************************************************************************************//
      // ТУТ НАЧАЛО РАБОТЫ
      button_state = digitalRead(R1_pin);  // если кнопка ПУСК нажата
      if ((button_mem == 0) && !digitalRead(R1_pin) && !button_state && !digitalRead(S4_pin) && digitalRead(S7_pin) && !digitalRead(S8_pin)) { // условие выполняется если датчик нижного положения всех лифтов активирован
        digitalWrite(A_pin, 0); // вкл клапан платформы влево
        digitalWrite(H_pin, 0); // вкл контактор мотора
        button_mem = 1; //запомнить состояние реле
        while (!digitalRead(R1_pin) ) { } // ждать пока кнопка ПУСК нажата
      }
      else {
        button_state = digitalRead(S1_pin); //когда платформа подошла к датчику положения платформы слева
        if ((button_mem == 1) && !digitalRead(S1_pin) && !button_state  &&  digitalRead(S7_pin) && ! digitalRead(S8_pin) ) { // и при таких условиях памяти
          digitalWrite(A_pin, 1); // отк клапан платформы влево
          digitalWrite(E_pin, 0); // вкл цилиндра пресса
          button_mem = 2; //запомнить состояние датчик положения платформы слева
          while (! digitalRead(S1_pin)) {}
        }
        else {
          button_state = digitalRead(S2_pin); //ДАТЧИК ДАВЛЕНИЯ
          if ((button_mem == 2) && !digitalRead(S2_pin) && button_state ) { // сработал датчик давления центральной платформы
            digitalWrite(C_pin, 0);// вкл левого цилиндра
            digitalWrite(E_pin, 1);// откл цилиндра пресса
            button_mem = 3; //запомнить состояние реле
            while (! digitalRead(S2_pin)) {
              /**********************************ЗДЕСЬ НУЖНО УСТАНОВИТЬ ТАЙМЕР КОТОРЫЙ ОПУСТИТ ВНИЗ ЦЕНТРАЛЬНУЮ ПЛИТУ***********************************************/
              //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
              //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
              /*И КАК ТОЛЬКО ТАЙМЕР ОТСЧИТАЕТ , НАПРИМЕ 5 МИНУТ,
              ЦЕНТРАЛЬНАЯ ПЛАТФОРМА ДОЛЖНА ПОЙТИ ВНИЗ
              digitalWrite(E_pin, 0);// вкл цилиндра пресса
              digitalWrite(G_pin, 0);// вкл клапана сброса давления
              АКТИВИРУЕТСЯ ДАТЧИК digitalRead(S4_pin) == 0 И ПОСЛЕ АКТИВАЦИИ
              digitalWrite(E_pin, 1);// откл цилиндра пресса
              digitalWrite(G_pin, 1);// откл клапана сброса давления
              */
              /**************************************************************************************************************/
            }
          }
          else {
            button_state = digitalRead(S3_pin); //ДАТЧИК ПОЛОЖЕНИЯ ВВЕРХУ СЛЕВА
            if (button_mem == 3 && !digitalRead(S3_pin) && !button_state  &&  digitalRead(S7_pin)  && ! digitalRead(S8_pin))  {
              digitalWrite(C_pin, 1);// откл левого цилиндра
              digitalWrite(H_pin, 1);// откл контактор мотора
              button_mem = 4; //запомнить состояние реле
              while (! digitalRead(S3_pin)) {} // ТУТ ЖДЕМ НАЖАТИЯ КНОПКИ ПОКА НЕ ВЫГРУЗЯТ ПЛИТКУ
            }
         
          else {
            button_state = digitalRead(R1_pin);// если кнопка ПУСК нажата
            if ((button_mem == 4) && !digitalRead(R1_pin) && !button_state &&  digitalRead(S7_pin) && ! digitalRead(S8_pin)) {
              digitalWrite(C_pin, 0); // вкл левого цилиндра
              digitalWrite(G_pin, 0);// вкл клапана сброса давления
              button_mem = 5; //запомнить состояние датчик положения платформы слева
              while (! digitalRead(R1_pin)) {} // ждать пока кнопка ПУСК нажата
            }
            else               {
              button_state = analogRead(sensorY1_pin); //прочитать состояние РЕОСТАТ СЛЕВА
              sensorY1 = analogRead(sensorY1_pin);//прочитать состояние
              if (analogRead(sensorY1_pin) < 50 && digitalRead(S7_pin) && ! digitalRead(S8_pin)) { // СРАБОТАЛ РЕОСТАТ ЗНАЧЕНИЕ "50" УСЛОВНОЕ ОНО ДОЛЖНО ПРОГРАММИРОВАТЬСЯ ВМЕСТЕ С УСТАНОВКОЙ РАЗМЕРА ПЛИТКИ
                // В ДАЛЬНЕЙШЕМ ВМЕСТО 50 ДОЛЖНА СТОЯТЬ ПЕРЕМЕННАЯ КОТОРАЯ БУДЕТ ВВОДИТСЯ И КОРРЕКТИРОВАТЬСЯ С ПРИЛОЖЕНИЯ
                digitalWrite(C_pin, 1);// откл левого цилиндра
                digitalWrite(G_pin, 1);// откл клапана сброса давления
              }
              else                 {
                // ПОСЛЕ ЗАГРУЗКИ КРОШКИ НАЖИМАЕМ ОПЯТЬ КНОПКУ ПУСК
                button_state = digitalRead(R1_pin); // если кнопка ПУСК нажата
                if (button_mem == 5 && !digitalRead(R1_pin) && !button_state &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                  digitalWrite(C_pin, 0);// вкл левого цилиндра
                  digitalWrite(G_pin, 0);// вкл клапана сброса давления
                  button_mem = 6; //запомнить состояние датчик положения платформы слева
                  while (! digitalRead(R1_pin)) {} // ждать пока кнопка ПУСК нажата
                }
                else {
                  button_state = digitalRead(S4_pin ); //ДАТЧИК НИЖНЕГО ПЛОЖЕНИЯ ВСЕХ ЛИФТОВ
                  if (button_mem == 6 && !digitalRead(S4_pin) && ! button_state &&  digitalRead(S7_pin) && ! digitalRead(S8_pin)) {
                    // ТУТ НАДО ПОСТАВИТЬ ЕЩЕ УСЛОВИЕ ЭТО ТАЙМЕР ПОКА ОН НЕ ОТСЧИТАЕТ НАПРИМЕР 5 МИНУТ И ЦЕНТРАЛЬНАЯ ПЛАТФОРМА НЕ ОПУСТИТСЯ ВНИЗ ПЛАТФОРМА НЕ ДОЛЖНА ПОЕХАТЬ ВПРАВО
                    digitalWrite(C_pin, 1);// откл левого цилиндра
                    digitalWrite(G_pin, 1);// откл клапана сброса давления

                    digitalWrite(H_pin, 0);// вкл контактор мотора
                    digitalWrite(B_pin, 0);// вкл платформы враво
                    button_mem = 7; //запомнить состояние
                    while (! digitalRead(S4_pin)) {} // пока датчик не покажет все лифты в нижнем положении
                  }
                  else {
                    button_state = digitalRead(S5_pin); //ДАТЧИК ПОЛОЖЕНИЯ ПЛАТФОРМЫ СПРАВА
                    delay(10); // пауза для проверки дребезга
                    if ((button_mem == 7) && !digitalRead(S5_pin) && !button_state &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                      digitalWrite(B_pin, 1);// откл клапана платформы враво
                      digitalWrite(E_pin, 0);// вкл клапана цилиндра пресса
                      button_mem = 8; //запомнить состояние датчик положения платформы слева
                      while (! digitalRead(S5_pin)) {}  // Весь цикл только в обратном порядке
                    }
                    else {
                      button_state = digitalRead(S2_pin); //ДАТЧИК ДАВЛЕНИЯ
                      if ((button_mem == 8) && !digitalRead(S2_pin) && !button_state  &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                        digitalWrite(F_pin, 0);// вкл клапана правого цилиндра
                        digitalWrite(E_pin, 1);// откл клапана цилиндра пресса
                        button_mem = 9; //запомнить состояние реле
                        while (! digitalRead(S2_pin)) {}// пока датчик ДАВЛЕНИЯ не сработает
                      }
                      else {
                        button_state = digitalRead(S6_pin); //ДАТЧИК ПОЛОЖЕНИЯ ВВЕРХУ СПРАВА
                        if ((button_mem == 9) && !digitalRead(S6_pin) && !button_state &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                          digitalWrite(F_pin, 1);// откл правого цилиндра
                          digitalWrite(H_pin, 1);// откл контактор мотора
                          button_mem = 10; //запомнить состояние реле
                          while (! digitalRead(S6_pin)) {} // пока датчик ВВЕРХ СПРАВА не сработает
                         }
                          else {
                            button_state = digitalRead(R1_pin);//  если кнопка ПУСК нажата
                            if ((button_mem == 10) && !digitalRead(R1_pin) && !button_state  &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                              digitalWrite(F_pin, 0);// вкл правого цилиндра
                              digitalWrite(G_pin, 0);// вкл клапана сброса давления
                              button_mem = 11; //запомнить состояние датчик положения платформы слева
                              while (! digitalRead(R1_pin)) {}// ждать пока кнопка ПУСК нажата
                            }
                         
                          else {
                            button_state = analogRead(sensorY3_pin); //прочитать состояние РЕОСТАТ СЛЕВА
                            sensorY1 = analogRead(sensorY3_pin);//прочитать состояние
                            if (analogRead(sensorY3_pin) < 50 && digitalRead(S7_pin) && !digitalRead(S8_pin)) { // В ДАЛЬНЕЙШЕМ ВМЕСТО 50 ДОЛЖНА СТОЯТЬ ПЕРЕМЕННАЯ КОТОРАЯ БУДЕТ ВВОДИТСЯ И КОРРЕКТИРОВАТЬСЯ С ПРИЛОЖЕНИЯ
                              digitalWrite(F_pin, 1);// откл правого цилиндра
                              digitalWrite(G_pin, 1);// откл клапана сброса давления
                            }
                            button_state = digitalRead(R1_pin);// если кнопка ПУСК нажата
                            if ((button_mem == 11) && !digitalRead(R1_pin) && !button_state  &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                              digitalWrite(F_pin, 0);// вкл правого цилиндра
                              digitalWrite(G_pin, 0);// вкл клапана сброса давления
                              button_mem = 12; //запомнить состояние датчик положения платформы слева
                              while (! digitalRead(R1_pin)) {} // ждать пока кнопка ПУСК нажата
                            }
                            button_state = digitalRead(S4_pin); //ДАТЧИК НИЖНЕГО ПЛОЖЕНИЯ ВСЕХ ЛИФТОВ
                            if ((button_mem == 12) && !digitalRead(S4_pin) && !button_state  &&  digitalRead(S7_pin)  && !digitalRead(S8_pin)) {
                              digitalWrite(F_pin, 1);// откл правого цилиндра
                              digitalWrite(G_pin, 1);// откл клапана сброса давления
                              digitalWrite(H_pin, 0);// вкл контактор мотора
                              digitalWrite(A_pin, 0);// вкл клапан платформы влево
                              button_mem = 13; //запомнить состояние
                              while (!digitalRead(S4_pin)) {} // пока датчик не покажет все лифты в нижнем положении
                            }
                            button_state = digitalRead(S1_pin); //датчик положения платформы слева
                            if ((button_mem == 13) && ! digitalRead(S1_pin) && ! button_state &&  digitalRead(S7_pin) && !digitalRead(S8_pin)) {
                              digitalWrite(A_pin, 1);// откл клапан платформы влево
                              digitalWrite(E_pin, 0);// вкл цилиндра пресса
                              button_mem = 2; //запомнить состояние датчик положения платформы слева
                              while (! digitalRead(S1_pin)) {} // пока датчик не покажет аппарель слева
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}}

Неактивний

#18 2016-12-04 12:02:33

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Re: Помогите создать скетч для станка

qwone
помоги сделать таймер обратного отсчета,
должен работать не зависимо от цикла, т. е. пока идут другие циклы, таймер работает (допустим 5 минут) и включает 2 реле одно реле клапана G_PIN сброса а другое реле клапана E_PIN центральной плиты. Таймер должен сработать по датчику S2_PIN давления, отключение реле по нижнему датчику центральной плиты L1_PIN, выбор показаний таймера по приходу сигнала с приложения. В СКЕТЧЕ указаны данные вот его кусок
}
if(taimer== 'a2')
   {
     taim=60000;


}
if(taimer == 'a3')
      {
     taim=70000;


}

if(taimer == 'a4')
     {
  taim=80000;

Неактивний

#19 2016-12-12 14:51:49

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Re: Помогите создать скетч для станка

Доброго времени суток уважаемые форумчане, кто может помочь, нужен скетч и приложение андроид. Задача такая:
показания с трех реостатов нужно отобразить на андроид приложении на одном экране но в отдельных окошках,связь по bluetooth.
Заранее спасибо за уделенное время и информацию.

Неактивний

#20 2016-12-17 18:20:09

gidrobort
Учасник
Зареєстрований: 2016-10-19
Повідомлень: 15

Re: Помогите создать скетч для станка

я так понимаю что ни кто не хочет поделится знаниями, или тут нету спецов? А жаль, я думал что здесь иногда появляются профессионалы.

Неактивний

#21 2017-02-14 19:42:29

vovka
Гість

Re: Помогите создать скетч для станка

А не легче это зделать в программе FLProg - визуальное программирование Arduino для не программистов

#22 2017-04-14 16:25:08

apeplov
Учасник
Зареєстрований: 2017-04-14
Повідомлень: 8

Re: Помогите создать скетч для станка

gidrobort пише:

Доброго времени суток уважаемые форумчане, кто может помочь, нужен скетч и приложение андроид. Задача такая:
показания с трех реостатов нужно отобразить на андроид приложении на одном экране но в отдельных окошках,связь по bluetooth.
Заранее спасибо за уделенное время и информацию.

Задача простая у вас, но конкретики вы мало написали. Если реостаты у вас будут подключены только  контроллеру, то берете arduino+HM-05. Реостаты подключаете к аналоговым входам контроллера. Далее в цикле опрашиваете аналоговые входа и выдаете через Bluetooth на мобилу. Примеров - куча.
Но скорей всего у вас реостаты уже к чему то подключены и понадобится схема сопряжения.

Неактивний

#23 2017-05-01 22:42:15

cheap_viagra
Гість

Re: Помогите создать скетч для станка

Hi, Neat post. There's a problem with your website in internet explorer, would test this IE still is the market leader and a good portion of people will miss your great writing due to this problem.

#24 2017-05-13 23:13:09

James
Гість

Re: Помогите создать скетч для станка

As soon as I found  this  internet site  I went on reddit to share some of the love with them.

#25 2017-05-23 02:45:33

loans
Гість

Re: Помогите создать скетч для станка

griseofulvin isoelectric point

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму