Управляем линиями ввода/вывода Arduino с компьютера
Линии ввода/вывода Arduino предоставляют большие возможности для управления различными внешними устройствами. К тому же их достаточно легко программировать через среду разработки Arduino IDE.
Но бывают случаи, когда внешними устройствами нужно управлять с компьютера, и тогда Arduino становится отличным вариантом в качестве промежуточного звена между внешним устройством и ПК.
Приложение 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);
}
}
}