Автор Тема: [Урок]Свързване на ардуино с vb.net  (Прочетена 10056 пъти)

mitko29

  • Зомбиран Роботостроител
  • *****
  • Публикации: 210
    • Профил
[Урок]Свързване на ардуино с vb.net
« -: Април 06, 2011, 06:36:44 pm »
Здравейте,тъй като от няколко дена търсих как да направя комуникация между хардуер и софтуер тези 2 дена разбрах и реших да споделя това с вас.

Ще ви трябва :
1x Arduino
1x USB Кабел
1x vb.net 2005 или 2010
1x Някакъв аналогов сензор

Преди да започнем с всички настройки и така нататъка първо си дръпнете следните неща:
dll за комуникация

Ардуино разработваща среда 0022 - Задължителна

Така след като сме разархивирали и двата архива продължаваме нататъка а имено :
1. Отваряме разработващата среда
2. Отиваме на File --> Open (или за по кратко ctr + o)
3. Отиваме в папката на разработващата среда, и отваряме папка libraries (библиотеките)
4. Отваряме папката Firmata --> Examples --> SimpleAnalogFirmata
А ето и кода за по мързеливите:
#include <Firmata.h>

byte analogPin = 0;

void analogWriteCallback(byte pin, int value)
{
    if (IS_PIN_PWM(pin)) {
        pinMode(PIN_TO_DIGITAL(pin), OUTPUT);
        analogWrite(PIN_TO_PWM(pin), value);
    }
}

void setup()
{
    Firmata.setFirmwareVersion(0, 1);
    Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
    Firmata.begin(9600); // Започваме комуникация на 9600.
}

void loop()
{
    while(Firmata.available()) { // ако съществуват стойностите продължи нататъка
        Firmata.processInput();
    }
    // Направи един Аналогов прочит за една обиколка,така че ако компютъра изпраща много аналогови съобщения ние ще забавим само първата прочетена стойност
    Firmata.sendAnalog(analogPin, analogRead(analogPin));
    analogPin = analogPin + 1;
    if (analogPin >= TOTAL_ANALOG_PINS) analogPin = 0;
}

5.След това даваме Upload бутона и качваме на микроконтролера.
6.Отваряме Visual Basic Studio --> И започваме нов проект(лека подсказка тук не оставяйте името на проекта WindowsApplication1 а го сменете на нещо което вие решите,няма да навлизам в подробности защо е лошо да се оставя така просто го приемете от практическа гледна точка.  ;) )
7.Oтидете на ToolBox от лявата страна и дайте дясното копче и изберете от списъка --> Chose Item --> Browse и отивате там където разерхевирахте firmata dll и избирате всяко от тях --> натискате OK.
8.Добавете следните компоненти:
1x Label
2x Text Boxes
2x Buttons
1x Timer
1x FirmataVB
9. Нека да настрой компонента FirmataVB:
Отиваме на Propertiеs и променяме полетата така:
Baud --> 9600
BoardType --> OTHER (винаги независимо дали имате някоя от изброените контролери)
COMPortName --> Тука пишете към кой ком порт ви е свързан контролера.


10. След като сме подредили всички останали елементи натискаме двапъти върху button1 който трябва да изпълвява следното свойство TextBox1.Text = "Connect"
Кодът за бутон1 :
       If Button1.Text = "Connect" Then ' Проверяваме дали бутона има това свойство
            FirmataVB1.Connect(TextBox1.Text, CInt(TextBox2.Text)) ' задаваме параметрите FirmataVB1.Connect(COM8, CInt(9600))
            FirmataVB1.QueryVersion() 'това предполагам е ясно
        Else
            FirmataVB1.Disconnect() ' ако условието не е изпълнено затваряме порта.
        End If


Кодът за бутон2 :
FirmataVB1.Disconnect() 'затваря порта

11. Нека сега извадим информацията,която ардуино ни праща :

В таймера слагаме следното :

Label1.Text = FirmataVB1.AnalogRead(0) ' прочитне на информацията от пин-а (в случея A0) ако се загледате в кода който качихме по горе на ардуино ще разберете,как се изважда инфомацията като може да четете от всеки аналогов пин който искате.
        System.Threading.Thread.Sleep(100) 'малко забавяне предпазване от overfloat


12. Е сега остана само да тестваме дали всичко се е получило:
свържете един потенциометър на пиновете на ардуино и вижте резултата - очаквам коментари ,предложения.
По този начин може да си напишете игра която да използва външни сензори само чакам да ми дойде мухата в главата и ще направя нещо.  :clap:
Димитър Иванов, гр. Бургас, 17г.
skype: eeeeee5612