Фоторезистор и 2 сервопривода

Тема в разделе "Arduino & Shields", создана пользователем igor021, 15 фев 2020.

  1. igor021

    igor021 Нуб

    я пока сомневаюсь по поводу вывода информации с фоторезистора в ком порт, если я напишу пару строчек в исходный код
    Код (C++):
    #include <Servo.h>
    Servo servo1;
    Servo servo2;


    void setup (){
      Serial.begin(9600); // Инициализируем общение c компьютером на скорости 9600
      servo1.attach(9);
      servo2.attach(10);
    }

    void loop()
    {
      // Считываем значение с аналогового порта
    int fotorez = analogRead(A0);
     
      servo1.write(180);
      delay(1000);
      servo1.write(0);
      delay(9700);
       servo1.write(180);
      delay(1000);
      servo1.write(0);
      delay(9800);
       servo1.write(180);
      delay(1000);
      servo1.write(0);
      delay(9900);
       servo1.write(180);
      delay(1000);
      servo1.write(0);
      delay(28900);
       servo2.write(180);
      delay(1500);
      servo2.write(0);
      delay(2000);
    }
    данный отправятся в ком порт или еще нужно что то дописать ?
     
  2. a1000

    a1000 Гик

    В очередной раз говорю - загрузите AnalogReadSerial. Это стандартный пример в Arduino IDE. Находится, если что, тут
    [​IMG][​IMG]
    Прицепите модуль фоторезистора на пин А0. Не отключая ардуину от компьютера откройте монитор порта. Он тут
    [​IMG][​IMG]
    В открывшемся окне должны побежать циферки. В зависимости от освещения они должны меняться. Мне надо знать значение для светлого экрана и для тёмного. Надеюсь понятно объяснил?
     
    Daniil нравится это.
  3. igor021

    igor021 Нуб

    Извиняюсь , не сразу вас понял, не понял сразу что можно так загрузить, да теперь все работает, я тогда сейчас буду пробовать объединять все (исходный код и этот ), я тогда вам скину на проверку ? правильно я все сделал или нет
     
  4. a1000

    a1000 Гик

    Скучно было на работе. Наваял вам скетч
    Код (C++):
    #include <Servo.h>
    Servo servo1;
    Servo servo2;


    void setup ()
    {
      servo1.attach(9);
      servo2.attach(10);
    }

    void loop()
    {
      for (int i=0; i <= 4; i++)
         {
          //тут 4 раза тыркаем первой сервой (таймауты оставил ваши)
          servo1.write(180);
          delay(1000);
          servo1.write(0);
          delay(9600);
         }
      while(analogRead(A0) < 200)
         {
            // крутимся тут пока экран не потемнеет
            ///уровень освещённости от фонаря, надо подбирать
         }

      while(analogRead(A0) > 250)  
         {
            //тыркаем второй сервой пока экран не посветлеет
            // с уровнем та-же фигня - от фонаря
            servo2.write(180);
            delay(1000);
            servo2.write(0);
            delay(1500);
         }
    }
    Так-как я так и не добился от вас какими циферками реагирует модуль фоторезистора на тёмный и светлый экран, эти уровни поставил от фонаря. Они у меня вообще не правильные.
    Логику работы серв (углы поворота, таймауты) оставил ваши. Как я понял их работа вас устраивала.
     
    igor021 нравится это.
  5. b707

    b707 Гуру

    a1000 - зря вы это... ох зря.
    ТС не знает, как самому пример в Ардуино ИДЕ открыть... вы ему готовый код. Он теперь так и запомнит, что самому думать не надо, надо в форум идти
     
  6. a1000

    a1000 Гик

    Это был одноразовый приступ невиданной доброты.
    Больше не буду.:)
     
  7. igor021

    igor021 Нуб

    я и так думаю 4 день, этот код что сделал а1000 гипер сложный ля меня, я бы к такому только через полгода пришел
     
  8. b707

    b707 Гуру

    4 день - это ничто.. Вы хотели научиться программировать за 4 дня?
    учиться писать такие коды полгода - это совершенно нормально...
     
  9. igor021

    igor021 Нуб

    Спасибо вам огромное, это просто фантастика, для меня это и есть мануал для обучения, теперь буду все детально все разбирать, и обещаю за готовым решением не полезу на форум, сижу читаю и тестирую сам, просто боюсь иногда сделать лишнее движение, поскольку уже у двух ардуин слетела прошивка из за чего сам пока не понимаю, поэтому я пытаюсь уточнить про каждый шаг правильно я делаю или нет
     
  10. igor021

    igor021 Нуб

    Можно я сразу по горячем следам уточно один момент, если для delay нужен рандом (рандомная пауза в определенных приделах), нашел код, randNumber = random(9600, 10800); , то правильно вставил его в void loop() перед самой работой серво привода ?

    Код (C++):
    #include <Servo.h>
    Servo servo1;
    Servo servo2;


    void setup ()
    {
      servo1.attach(9);
      servo2.attach(10);
    }

    void loop()
    {
      for (int i=0; i <= 4; i++)
         {
          //тут 4 раза тыркаем первой сервой (таймауты оставил ваши)
    randNumber = random(9600, 10800);
          servo1.write(180);
          delay(1000);
          servo1.write(0);
          delay(randNumber);
         }
      while(analogRead(A0) < 200)
         {
            // крутимся тут пока экран не потемнеет
            ///уровень освещённости от фонаря, надо подбирать
         }

      while(analogRead(A0) > 250)
         {
            //тыркаем второй сервой пока экран не посветлеет
            // с уровнем та-же фигня - от фонаря
            servo2.write(180);
            delay(1000);
            servo2.write(0);
            delay(1500);
         }
    }
     
  11. a1000

    a1000 Гик

    Ну так вы ничему не сможете научится.
    Это в смысле загрузчик? Даже не представляю что можно сделать, что-бы он слетел. Ну можно что-то не так подключить и спалить порт, подать завышенное напряжение и убить микроконтроллер. Но это всё на уровне железа. Программно, из среды ардуино, как-то навредить микроконтроллеру..... Не знаю, это надо суметь. Есть у меня китайская UNO. После 2-3 лет издевательств периодически стал слетать загрузчик. Но всё это правится.
    По поводу random. Послушайте хорошего совета - выучите для начала хоть немного теории. Мы разговариваем на разных языках. Вы совершенно не ориентируетесь в принципах построения программ. Посмотрите видео уроки Джереми Блум вот ссылка


    Я тоже с них начинал.
    Только без обид. :)
     
  12. igor021

    igor021 Нуб

    хорошо, спасибо
     
  13. sanik

    sanik Гик

    Если действительно хотите понять что вы хотите сделать. Советую вам пройтись по списку испробовать вот этот список примеров
    AnalogReadSerial Этот пример показывает как считать аналоговый вход и вывести значения в порт когда его загрузите и осветите резистор
    разными уровнями вы поймете какие цифры ставить в вашем коде при которых будет происходить что либо
    Blink without Delay Этот пример показывает как обойтись без делай и нучит работать с таймером чтоб ваш код не тормозил и позволил добавить еще какие либо действия
    Calibration этот пример показывает как откалибровать минимальные значения резистора и максимальные
    Servo knob это пример как раз то что вы хотите сделать. Его конечно нужно изменить под свои нужды
    Все это находиться в меню Файл - Примеры
     
    Daniil нравится это.