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

 

Управляем линиями ввода/вывода 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




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

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

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