ЖД шлагбаум на Arduino своими руками, управление с пульта
Питание 12В, логика на Arduino, привод шлагбаума - моторчик из cd-привода с резиновым пассиком из велошины, корпус - канализационные трубы 50мм, лампы галогенные по 10W, крепление - подставка для живой елки, звонок - катушка, втягивающая сердечник, который отпружинивая ударяет звонок.
#include IRremote.h
//#include IRremoteInt.h
IRrecv irrecv(11); //пин ИК приемника
decode_results results; //переменная где будет хр. результат
int motor1=3; //пин мотора 1
int motor2=4; //пин мотора 2
int pwm=5; //пин ШИМ
int buzz=6; //пин звонка
int white=7; //пин белой лампы
int red1=8; //пин красной лампы 1
int red2=9; //пин красной лампы 2
int switch1=10; //пин концевика на открытие
int switch2=12; //пин концевика на закрытие
int redlamp=red1; //пин активной красной лампы
void setup()
{
(); // Запускаем прием
pinMode(motor1,OUTPUT);
pinMode(motor2,OUTPUT);
pinMode(pwm,OUTPUT);
pinMode(buzz,OUTPUT);
pinMode(white,OUTPUT);
pinMode(red1,OUTPUT);
pinMode(red2,OUTPUT);
pinMode(switch1, INPUT_PULLUP); //HIGH-разомкнут, LOW-замкнут
pinMode(switch2, INPUT_PULLUP); //HIGH-разомкнут, LOW-замкнут
digitalWrite(motor1,LOW);
digitalWrite(motor2,LOW);
digitalWrite(pwm,LOW);
digitalWrite(buzz,LOW);
digitalWrite(white,LOW);
digitalWrite(red1,LOW);
digitalWrite(red2,LOW);
}
void buzz_and_redlight()
{
digitalWrite(redlamp,HIGH);
digitalWrite(buzz,HIGH);
delay(50);
digitalWrite(buzz,LOW);
delay(200);
digitalWrite(buzz,HIGH);
delay(50);
digitalWrite(buzz,LOW);
delay(200);
digitalWrite(redlamp,LOW);
if (redlamp==red1) {redlamp=red2} else {redlamp=red1} //смена активной красной лампы
}
void loop()
{
//открытие шлагбаума
digitalWrite(motor1,HIGH); //поднимаем шлагбаум
digitalWrite(motor2,LOW);
while (digitalRead(switch1) == HIGH) //пока не сработает концевик мигаем красными и звеним
{
buzz_and_redlight();
if ((&results)) {goto closing;} //прерывание с пульта
}
digitalWrite(motor1,LOW); //останавливаем двигатель
digitalWrite(white,HIGH); //зажигаем белый
while (!(&results)){} //ждем команды с пульта
digitalWrite(white,LOW); //гасим белый
//закрытие шлагбаума
closing:
();
digitalWrite(motor1,LOW);
digitalWrite(motor2,HIGH); //опускаем шлагбаум
while (!(&results)) //пока не будет команды с пульта мигаем красными и звеним
{
buzz_and_redlight();
if (digitalRead(switch2) == LOW) {digitalWrite(motor2,LOW);} //если сработал концевик останавливаем двигатель
}
();
}
3 views
6
1
2 months ago 00:07:44 1
ТОП-5 ОБЗОРНЫХ ПЛОЩАДОК ХАБАРОВСКА
2 months ago 00:09:01 1
Сколько стоит мечта детства? Собрать модель железной дороги PIKO
3 months ago 00:02:27 70
Мотоциклист хотел успеть проскочить перед поездом, но не успел
5 months ago 00:01:00 1
Продается в 7,6 км от МКАД, Слуцкое направление, аг. Прилуки, Минской области, Минского района
5 months ago 00:13:37 1
Жд переезд с маневровой колонкой. Для фанатов СЦБ. Черёха – Псковкирпич
6 months ago 00:26:45 15
Любятово – Черняковицы. Капитальный ремонт жд путей. Движение поездов, зима в апреле
7 months ago 00:14:08 4
Грузовые поезда на жд переезде со шлагбаумом / Карьерный самосвал на поезде
7 months ago 00:00:24 210
Легковушка на скорости влетела в шлагбаум железнодорожного переезда