help me!

Тема в разделе "Arduino & Shields", создана пользователем rk4alj, 2 май 2016.

  1. rk4alj

    rk4alj Нуб

    прям от души:)!!!
     
  2. VadimRM

    VadimRM Нуб

    Код (C++):
    int regim=1;
    int flag=0;

    void setup()
    {
        pinMode(10,OUTPUT);
        pinMode(9,OUTPUT);
       pinMode(13,INPUT);//обозначаем 13 пин входом для кнопки
    }

    void loop()

    {
     
         if(digitalRead(13)==HIGH&&flag==0)//считываем с 13 го пина
         {
           regim++;
           flag=1;
           if(regim>4)
           {
              regim=1;
               }
     
         }
     
         if(digitalRead(13)==LOW&&flag==1)//считываем с 13 го пина
         {
         
            flag=0;
             }
       if(regim==1)
       {
          digitalWrite(9,HIGH);
          delayMicroseconds(40);
          digitalWrite(9,LOW);
          delayMicroseconds(500);
          digitalWrite(10,HIGH);
          delayMicroseconds(40);
          digitalWrite(10,LOW);
       }
       if(regim==2)
       {
          digitalWrite(9,HIGH);
          delayMicroseconds(200);
          digitalWrite(9,LOW);
          delayMicroseconds(500);
          digitalWrite(10,HIGH);
          delayMicroseconds(200);
          digitalWrite(10,LOW);
       }
       if(regim==3)
       {
          digitalWrite(9,HIGH);
          delayMicroseconds(40);
          digitalWrite(9,LOW);
          delayMicroseconds(40);
          digitalWrite(9,HIGH);
          delayMicroseconds(40);
          digitalWrite(9,LOW);
          digitalWrite(10,HIGH);
          delayMicroseconds(40);
          digitalWrite(10,LOW);
          delayMicroseconds(40);
          digitalWrite(10,HIGH);
          delayMicroseconds(40);
          digitalWrite(10,LOW);//забыл поставить точку с запятой (бывает)
          delayMicroseconds(40);
       }
       if(regim==4)
       {
          digitalWrite(9,HIGH);
          delayMicroseconds(40);
          digitalWrite(9,LOW);
          delayMicroseconds(40);
          digitalWrite(9,HIGH);
          delayMicroseconds(40);
          digitalWrite(9,LOW);
          delayMicroseconds(500);
          digitalWrite(10,HIGH);
          delayMicroseconds(40);
          digitalWrite(10,LOW);
          delayMicroseconds(40);
          digitalWrite(10,HIGH);
          delayMicroseconds(40);
          digitalWrite(10,LOW)
          delayMicroseconds(40);
       }
    }
    пина 14 нет я переделал код на 13 ый
     
  3. Benny_Ray

    Benny_Ray Нерд

    Но всеравно работать не будет т.к.
    1. ниже тоже пропущена ';'
    2. не уверен что при использовании delay будет реакция на нажатие кнопки после 1 раза, т.к. контроллер засыпает на это время (хотя и не уверен в этом)
     
  4. VadimRM

    VadimRM Нуб

    Насчёт delay попробуй библиотеку TimerOne.h, предварительно скачав
     
  5. Benny_Ray

    Benny_Ray Нерд

    в коде выше просто не видно чтобы какая либо бибилиотека подключалась,а по факту, я использую millis() и никаких проблем.

    P.S.
    Полез даже посмотрел эту библиотеку от нечего делать, но всеравно в ней не нашел замены именно функции delay, т.е. сама эта функция как давала команду на засыпание так и дает ее а в указанной библиотеке вызываются встроенные функции Timer для управления.

    P.S.S.
    И кстати да, а ТС точно нужно моргание в микросекундах а не в миллисекундах, я так подозреваю что 200 микросекунд перерыва даже на глаз нельзя будет заметить т.к. это 0,0002 секунды.
     
    Последнее редактирование: 4 май 2016