// ИС Дракон. Маршрутный транслятор.
// Y:\home\deniska\Документы\др длкр\arduino2.drt
// 13. Схема - Гном, Изменение 03.12.2017 6:34:54
// 17. Модуль, Начало
//varitable
#define Trig 17
#define Echo 18
unsigned int impulseTime=0;
unsigned int distance_sm=0;
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 7;
int inA = 5;
int inB = 6;
// Y:\home\deniska\Документы\др длкр\arduino2.drt
// 9. Схема - процедура, Изменение 02.12.2017 22:31:29, Начало
void setup()
{
pinMode(Trig, OUTPUT); //инициируем как выход
pinMode(Echo, INPUT); //инициируем как вход
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(inA, OUTPUT);
pinMode(inB, OUTPUT);
pinMode(inA, INPUT);
pinMode(inB, INPUT);
// ==================== Шампур
// 10. Заголовок / setap
// 12. Комментарий / настройка портов
// 11. Конец / Конец
// 9. Схема, Конец
//
}
// Y:\home\deniska\Документы\др длкр\arduino2.drt
// 1. Схема - процедура, Изменение 03.12.2017 7:00:18, Начало
void loop()
{
// ==================== Шампур
// 2. Заголовок / void loop
// 4. Цикл Ветка / lupo()
L30: ;
// 30. Действие / замер дистанции
digitalWrite(Trig, HIGH);
/* Подаем импульс на вход trig дальномера */
delayMicroseconds(10); // равный 10 микросекундам
digitalWrite(Trig, LOW); // Отключаем
impulseTime=pulseIn(Echo, HIGH); // Замеряем длину импульса
distance_sm=impulseTime/58; // Пересчитываем в сантиметры
// 18. Вопрос / distance_sm<30 == Да
if (distance_sm<30) goto L22;
// 20. Вопрос / digitalRead(in1) < 3 == Да
if (digitalRead(in1) < 3) goto L29;
// 5. Цикл Адрес -> 4. Ветка / lupo()
goto L30;
// ==================== Шампур
L29: ;
// 29. Вывод / на управление моторами / digitalWrite(in1, HIGH); digitalWrite(in3, HIGH);
digitalWrite(in1, HIGH);
digitalWrite(in3, HIGH);
goto L30;
// ==================== Шампур
L22: ;
// 22. Вопрос / digitalRead(in1) < 3 == Нет
if (!(digitalRead(in1) < 3)) goto L27;
goto L30;
// ==================== Шампур
L27: ;
// 27. Вывод / на управление моторами / digitalWrite(in1, LOW); digitalWrite(in3, LOW);
// -31. Правый комментарий / digitalWrite() - отправляет на цифровой вывод значение HIGH или LOW. Если функцией pinMode() вывод сконфигурирован как выход (OUTPUT), то при выполнении функции digitalWrite() его напряжение будет изменено на соответствующее значение: 5 В (либо 3.3 В для плат, работающих от 3.3В) при отправке HIGH, 0 В (земля) - при LOW.
digitalWrite(in1, LOW);
digitalWrite(in3, LOW);
goto L30;
// 1. Схема, Конец
//
}
// 17. Модуль, Конец
//
Словарик
digitalRead - Считывает уровень сигнала HIGH или LOW с указанного цифрового вывода.
digitalWrite - Отправляет на цифровой вывод значение HIGH или LOW.
pulseIn - Считывает длительность импульса (любого - HIGH или LOW) на выводе.
delayMicroseconds - Приостанавливает выполнение программы на указанный промежуток времени (в микросекундах). Для создания задержек длительностью больше, чем несколько тысяч микросекунд, используйте функцию delay().
goto - оператор безусловного перехода
int - Тип данных знаковое целое число занимает в памяти 2 байта.
unsigned int - Тип данных unsigned int - беззнаковое целое число, также как и тип int (знаковое) занимает в памяти 2 байта. Но в отличие от int, тип unsigned int может хранить только положительные целые числа в диапазоне от 0 до 65535 (2^16)-1).