Здравейте,тъй като от няколко дена търсих как да направя комуникация между хардуер и софтуер тези 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: