цифровая электроника
вычислительная техника
встраиваемые системы

 

Управляем линиями ввода/вывода Arduino с компьютера

Автор: Mike(admin) от 4-10-2017, 20:35

Линии ввода/вывода Arduino предоставляют большие возможности для управления различными внешними устройствами. К тому же их достаточно легко программировать через среду разработки Arduino IDE.


Управляем линиями ввода/вывода Arduino с компьютера

Но бывают случаи, когда внешними устройствами нужно управлять с компьютера, и тогда Arduino становится отличным вариантом в качестве промежуточного звена между внешним устройством и ПК.


Поскольку Arduino может довольно просто подключаться к компьютеру с помощью кабеля USB и обмениваться данными с помощью последовательного порта, то достаточно просто написать программу для ПК, которая отсылала команды на управление той или иной линией ввода/вывода, и скетч для Arduino, который бы принимал эти команды и включал или выключал соответствующую линию. Программу для ПК, написанную на Visual Basic 6, можно скачать здесь (для VB6 может потребоваться файл ActiveX).


Приложение VB подключается к Arduino через COM-порт, который эмулирует USB. Когда приложение VB работает, вы не можете запрограммировать Arduino. Вам необходимо ввести в приложение VB номер порта, как это делается в Arduino IDE. Приложение отображает 4 аналоговых входа A0-A3, 6 цифровых входов D2-D7 и 6 цифровых выходов D8-D13.


Код (скетч) для Arduino приведен ниже.



unsigned char inByte=0, outByte=0; 

// функция настройки
void setup() {
    // инициализация последовательного порта
  Serial.begin(9600);
    // инициализация выходов 8-13 входов 2-7 аналоговых входов A0-A3
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT); 
  
}

// бесконечный цикл
void loop() {
  unsigned char i;
  
   if (Serial.available() > 0) {
          // считывание входящего байта
      inByte = Serial.read();
      
      if(inByte < 128)
      {
        PORTB = inByte; // обновление цифровых выходов 8-13
      }
      if(inByte == 128) //128 = запрос на обновление
      {
        Serial.write(lowByte(analogRead(A0)));  // отправка младших битов 10-разрядного слова аналогового счета
        Serial.write(highByte(analogRead(A0))); // отправка старших битов 10-разрядного слова аналогового счета
        Serial.write(lowByte(analogRead(A1)));
        Serial.write(highByte(analogRead(A1)));
        Serial.write(lowByte(analogRead(A2)));
        Serial.write(highByte(analogRead(A2)));
        Serial.write(lowByte(analogRead(A3)));
        Serial.write(highByte(analogRead(A3)));
          // считывание 6 цифровых входов 2-7 и размещение их в байте
        for(i=0;i<6;i++){
        bitWrite(outByte, i, digitalRead(i+2)); 
        }
        Serial.write(outByte);
     }
   }
}



© digitrode.ru


Теги: Arduino



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий