Difference between revisions of "Управление на релета с Arduino платформа."
(→Връзки) |
|||
(14 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Цел на проекта == | == Цел на проекта == | ||
− | Запознаване с възможностите на [www.arduino.cc/ Arduino] платформа. | + | Запознаване с възможностите на [http://www.arduino.cc/ Arduino] платформа. |
== Формализация на задачата == | == Формализация на задачата == | ||
Управление на група релета през сериен порт (емулиран от Ардуино USB контролера). | Управление на група релета през сериен порт (емулиран от Ардуино USB контролера). | ||
− | За целта ще бъде разработен алгоритъм следящ постъпващите данни на серийния порт на ардуино платформата. При съответна дума ще бъде | + | За целта ще бъде разработен алгоритъм следящ постъпващите данни на серийния порт на ардуино платформата. При съответна дума ще бъде променяно състоянието на релетата. |
− | [[Image:Arduino_reley.jpg]] | + | [[Image:Arduino_reley.jpg|thumb|600px|none|center]] |
− | + | == Разработване на програмата == | |
− | + | ||
− | + | === Алгоритъм === | |
− | + | Алгоритъмът на работа на програмата е реализиран на базата на 0 и 255. Когато даден пин бъде зареден със стойност 255 той се изключва, а при стойност 0 пина се включва. Arduino платформата следи състояние на серийния порт, при пристигане на стойност се, тя се сравнява заложени стойности и се изпълнява даденото действие. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | === Arduino Source code === | |
− | + | <code><pre> | |
− | + | /* Автор: Момчил Мандраджиев | |
− | + | * Заглавие: Управление на релета с Arduino | |
+ | */ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
int message = 0; | int message = 0; | ||
+ | // Инициализацията даден пин да отговаря | ||
+ | // на дадено име от нас за по лесно използване в програмата. | ||
+ | // Всеки пин може да заема стойности от 0 до 255. | ||
int relay_1 = 2; | int relay_1 = 2; | ||
int relay_2 = 3; | int relay_2 = 3; | ||
Line 42: | Line 33: | ||
int relay_7 = 8; | int relay_7 = 8; | ||
int relay_8 = 9; | int relay_8 = 9; | ||
+ | //Състояние на порта | ||
int a = 0; | int a = 0; | ||
int b = 0; | int b = 0; | ||
Line 51: | Line 43: | ||
int h = 0; | int h = 0; | ||
− | + | //Инициализация | |
void setup() | void setup() | ||
{ | { | ||
Line 73: | Line 65: | ||
} | } | ||
+ | //Основен цикъл | ||
void loop() | void loop() | ||
{ | { | ||
Line 155: | Line 148: | ||
} | } | ||
} | } | ||
+ | </pre></code> | ||
+ | |||
+ | ==Графичен Интерфейс== | ||
+ | Допълнително към настоящата реализация е разработен графичен интерфейс за управление. За разработката се ползва MS Visual Studio C#. | ||
+ | [[Image:csharp.png|none]] | ||
+ | |||
+ | ==Връзки== | ||
+ | #[http://ilianko.com/files/arduino_knijka_za_programirane_v1.pdf Ардуино книжка за програмиране] | ||
+ | #[http://ilianko.com/files/zapoznanstvo_s_arduino_v2.pdf Запознанство с ардуино] | ||
+ | #http://robotev.com | ||
+ | #Официален сайт на Arduino, http://www.arduino.cc/ | ||
+ | #Български форум на Arduino, http://www.arduino.cc/playground/Bulgarian/Nachalo | ||
+ | #Официален сайт на ATMEL ATMEGA328, http://www.atmel.com/devices/atmega328.aspx | ||
+ | #Официален сайт на Microsoft Visual Studio 2010 – C#, http://msdn.microsoft.com/en-us/vstudio/hh341490.aspx | ||
+ | #Емулация на ардуино http://www.virtualbreadboard.com/ |
Latest revision as of 09:35, 6 February 2013
Contents
Цел на проекта
Запознаване с възможностите на Arduino платформа.
Формализация на задачата
Управление на група релета през сериен порт (емулиран от Ардуино USB контролера).
За целта ще бъде разработен алгоритъм следящ постъпващите данни на серийния порт на ардуино платформата. При съответна дума ще бъде променяно състоянието на релетата.
Разработване на програмата
Алгоритъм
Алгоритъмът на работа на програмата е реализиран на базата на 0 и 255. Когато даден пин бъде зареден със стойност 255 той се изключва, а при стойност 0 пина се включва. Arduino платформата следи състояние на серийния порт, при пристигане на стойност се, тя се сравнява заложени стойности и се изпълнява даденото действие.
Arduino Source code
/* Автор: Момчил Мандраджиев
* Заглавие: Управление на релета с Arduino
*/
int message = 0;
// Инициализацията даден пин да отговаря
// на дадено име от нас за по лесно използване в програмата.
// Всеки пин може да заема стойности от 0 до 255.
int relay_1 = 2;
int relay_2 = 3;
int relay_3 = 4;
int relay_4 = 5;
int relay_5 = 6;
int relay_6 = 7;
int relay_7 = 8;
int relay_8 = 9;
//Състояние на порта
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
int g = 0;
int h = 0;
//Инициализация
void setup()
{
Serial.begin(9600);
pinMode(relay_1, OUTPUT);
pinMode(relay_2, OUTPUT);
pinMode(relay_3, OUTPUT);
pinMode(relay_4, OUTPUT);
pinMode(relay_5, OUTPUT);
pinMode(relay_6, OUTPUT);
pinMode(relay_7, OUTPUT);
pinMode(relay_8, OUTPUT);
analogWrite(relay_1, 255);
analogWrite(relay_2, 255);
analogWrite(relay_3, 255);
analogWrite(relay_4, 255);
analogWrite(relay_5, 255);
analogWrite(relay_6, 255);
analogWrite(relay_7, 255);
analogWrite(relay_8, 255);
}
//Основен цикъл
void loop()
{
if (Serial.available() > 0)
{
message = Serial.read();
switch (message)
{
case 'a': analogWrite(relay_1, 255);
a = 0;
break;
case 'A': analogWrite(relay_1, 0);
a = 1;
break;
case 'R': if (a == 0)Serial.println("0");
if (a == 1)Serial.println("1");
break;
case 'b': analogWrite(relay_2, 255);
b = 0;
break;
case 'B': analogWrite(relay_2, 0);
b = 1;
break;
case 'S': if (b == 0)Serial.println("0");
if (b == 1)Serial.println("1");
break;
case 'c': analogWrite(relay_3, 255);
c = 0;
break;
case 'C': analogWrite(relay_3, 0);
c = 1;
break;
case 'T': if (c == 0)Serial.println("0");
if (c == 1)Serial.println("1");
break;
case 'd': analogWrite(relay_4, 255);
d = 0;
break;
case 'D': analogWrite(relay_4, 0);
d = 1;
break;
case 'U': if (d == 0)Serial.println("0");
if (d == 1)Serial.println("1");
break;
case 'e': analogWrite(relay_5, 255);
e = 0;
break;
case 'E': analogWrite(relay_5, 0);
e = 1;
break;
case 'V': if (e == 0)Serial.println("0");
if (e == 1)Serial.println("1");
break;
case 'f': analogWrite(relay_5, 255);
f = 0;
break;
case 'F': analogWrite(relay_5, 0);
f = 1;
break;
case 'X': if (d == 0)Serial.println("0");
if (d == 1)Serial.println("1");
break;
case 'g': analogWrite(relay_7, 255);
g = 0;
break;
case 'G': analogWrite(relay_7, 0);
g = 1;
break;
case 'Y': if (g == 0)Serial.println("0");
if (g == 1)Serial.println("1");
break;
case 'h': analogWrite(relay_8, 255);
h = 0;
break;
case 'H': analogWrite(relay_8, 0);
h = 1;
break;
case 'Z': if (h == 0)Serial.println("0");
if (h == 1)Serial.println("1");
break;
}
}
}
Графичен Интерфейс
Допълнително към настоящата реализация е разработен графичен интерфейс за управление. За разработката се ползва MS Visual Studio C#.
Връзки
- Ардуино книжка за програмиране
- Запознанство с ардуино
- http://robotev.com
- Официален сайт на Arduino, http://www.arduino.cc/
- Български форум на Arduino, http://www.arduino.cc/playground/Bulgarian/Nachalo
- Официален сайт на ATMEL ATMEGA328, http://www.atmel.com/devices/atmega328.aspx
- Официален сайт на Microsoft Visual Studio 2010 – C#, http://msdn.microsoft.com/en-us/vstudio/hh341490.aspx
- Емулация на ардуино http://www.virtualbreadboard.com/