Истина где-то рядом…


Пришла ардуинка (duemilanove) за номером 185-спасибо за посылку. Играюсь с паяльником уже второй день 🙂
Но тут встал вопрос какую нагрузку ардуина может выдержать по току? наверное правильнее считать пределом-УСБ порт, точнее источник питания(тогда сколько УСБ держит)?
Второй вопрос, надумал крутить куллер от компа, но дуинка дает только 5V, надо усилить до 12V-какой транзистор ставить?
И третий вопрос: хочу сделать прогу с интерфейсом-двигаешь ползунок-больше напруга или меньше…Пишем прогу которая на КОМ порт кидает переменные, а в зависимости от них ардуинка пляшет. Только так?


0 комментариев на «“Истина где-то рядом…”»

  1. какую нагрузку ардуина может выдержать по току?

    обратите внимание, что ток через один пин не должен превышать 40 mA.
    Т.е. можно подключить светодиод (через токоограничительный резистор), а что-то помощнее нужно подключать через промежуточный «драйвер» — транзистор, оптопару и т.д.
    Так, например, управление моторчиком возможно через L293

    Пишем прогу которая на КОМ порт кидает переменные, а в зависимости от них ардуинка пляшет. Только так?

    Да. Проще всего это реализуется через уже готовый протокол Firmata.

  2. Ага! Задумка воплотилась в жизнь, радуя обладателя дуинки двумя ожогами и наконец-то абсолютно холодным транзистором(первый раз неправильно запаял-догадался тыкнуть пальцем).
    Но новый затык с библиотекой SerialGate:
    в самой программе код выглядит так:
    if(m_13)
    {
    sg.Send(«255»,3);
    }
    else
    {
    sg.Send(«000»,3);
    }

    А на дуине такой код:
    void loop ()
    {
    val = Serial.read(); // read the port
    pinMode(11,OUTPUT);
    analogWrite(11, val);
    }

    Диод почему-то всегда горит, притом переключая его в ноль по ШИМу -он горит, но в полсилы. Не могу сообразить, что не так?

    • 🙂 выше я уже советовал использовать готовый протокол Firmata 😉
      Разумеется всегда хочется изобрести что-то своё, но тогда посмотрите на эту простейшую реализацию. Там как раз используется SerialGate. Если внимательно прочитаете, то сразу же поймёте свой недочёт:
      вы пишете в порт просто строчку символов («000» или «255»), которую ардуина считывает побайтово (‘0′,’0′,’0’ или ‘2’,’5′,’5′).
      Т.о. значение, которое вы устанавливаете на 11 порту вовсе не 0 или 255, а ‘0’ или ‘2’.

    • мне показалось что значение то она правильно принимает, но оно обнуляется-так как сигнал в адуинку то я один раз шлю. хотя у вас опыта больше)
      по этому скетчу как раз и делал-мне просто необходимо ШИМ значение передавать.
      А с фирматой что-то туго. Что в Ардуинку то написать чтобы запустить скетч? А то ArduinoFirmataVB ругается что порт невозможно открыть(не КОМ, а дуиновский)

      п.с. заранее спасибо. Ардуинка радует своей реалистичностью-написал код и сразу видишь что-то материальное… Но опыта программирования микроконтроллеров нету-поэтому шишки, но с улыбкой)

    • обычно заливают в Arduino стандатный Firmat-овский скетч:
      Examples -> Firmata -> StandardFirmata
      , который позволяет полностью управлять портами ардуины с компа.

    • Видимо незаметил или недокачал. Завтра после работы опробую, спасибо за совет

    • что-то никак. помогайте, в ардуине такой код:

      int ledPin = 9;

      void setup()
      {
      // begin the serial communication
      Serial.begin(1200);
      pinMode(ledPin, OUTPUT);
      }

      void loop()
      {
      byte val;
      int k;
      // check if data has been sent from the computer
      if (Serial.available()) {
      // read the most recent byte (which will be from 0 to 255)
      val = Serial.read();
      k=val;
      if( val == ‘ ‘ || val == ‘ ‘ )
      {
      analogWrite(ledPin, 255);
      delay(30);
      analogWrite(ledPin, 0);
      delay(30);
      analogWrite(ledPin, 255);
      }
      else
      {
      analogWrite(ledPin, k);
      // set the brightness of the LED
      //analogWrite(ledPin, val);
      }
      }
      }

      Шлю на ком порт символы(чтобы передавать значения от 0 до 255), мардуинка должна переводить символ в число и зажигать диод ШИМом…

      программный код такой:
      procedure TForm1.Button1Click(Sender: TObject);
      var
      Str: String;
      begin
      Str := inttostr(TrackBar1.Position);
      if NewLine_CB.Checked then
      Str := Str + #13#10;
      if not ComPort.Connected then ComPort.Open;
      if ComPort.Connected then
      ComPort.WriteStr(Str);
      end;

      Все работает-но не так как задуманно. При любом сигнале ардуина зажигает диод(на одинаковый уровень ШИМ).
      притом имеется весьма интересный баг-если изменить скорость порта на 9600 диод горит еле заметно, при 1200 горит на полную.

    • чтобы развеять сомнения, кои у меня были:
      включаем прогу шлем 100, диод горит, шлем 255-диод горит также… может быть переменная не обновляется? закрываем прогу, открываем снова-шлем 255, диод горит также как и при 100.

    • вставьте в скетч отладочные сообщения, которые будут писать в порт переданное значение. После этого воспользуйтесь стандартным монитором COM-порта, который есть в Arduino IDE.
      Ещё раз перечитайте мой предыдущий комментарий.

    • УРА!!! Заработало, но как-то через файрвол, так сказать. Без вот этого не работает: «вставьте в скетч отладочные сообщения, которые будут писать в порт переданное значение», поэтому в мониторе КОМ порта куча лишнего муссора. Раздражает, но пока так, может попозже напишу статейки по Ардуине+Делфи, если на работе разгребу завалы

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение