"Вы читаете о роботах и программировании и думаете: «Было бы здорово сделать что-то подобное самому!» Теми, кем эта идея овладевает чуть больше просто мыслей смотрят кто и как делал своего робота. Читают статьи, смотрят видео. На картинках все понятно. В видеороликах тоже обычно показываются уже готовые продукты, а также сжато показываются технологии их изготовления. И вроде бы то же всё понятно: отпилил, прикрутил, припаял, соединил, запрограммировал вон на той программе вот этим кодом."

суббота, 2 декабря 2017 г.

ЗОНА АРДУИНО: учим робота



    // ИС Дракон. Маршрутный транслятор.

    // 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).