Difference between revisions of "Управление на релета с Arduino платформа."

From Ilianko
Line 5: Line 5:
 
Управление на група релета през сериен порт (емулиран от Ардуино USB контролера).
 
Управление на група релета през сериен порт (емулиран от Ардуино USB контролера).
  
За целта ще бъде разработен алгоритъм следящ постъпващите данни на серийния порт на ардуино платформата. При съответна дума ще бъде променянно състоянието на релетата.
+
За целта ще бъде разработен алгоритъм следящ постъпващите данни на серийния порт на ардуино платформата. При съответна дума ще бъде променяно състоянието на релетата.
  
 
[[Image:Arduino_reley.jpg|thumb|600px|none|center]]
 
[[Image:Arduino_reley.jpg|thumb|600px|none|center]]
  
  
1. Разработване на програма
+
== Разработване на програмата ==
1.1.  Инициализация
+
 
В началото предстои инициализация на пиновете на микроконтролера. Това се реализира, чрез кода от програмата:
+
=== Алгоритъм ===
int message = 0;
+
Алгоритъмът на работа на програмата е реализиран на базата на 0 и 255. Когато даден пин бъде зареден със стойност 255 той се изключва, а при стойност 0 пина се включва.  Arduino платформата следи състояние на серийния порт, при пристигане на стойност се, тя се сравнява заложени стойности и се изпълнява даденото действие.
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;
 
  
По този начин е направена инициализацията даден пин да отговаря на дадено име от нас за по лесно използване в програмата. Всеки пин може да заема стойности от 0 до 255.
+
=== Arduino Source code ===
1.1.
+
/* Автор:
1.2.  Алгоритъм
 
Алгоритъма на работа на програмата е реализиран на базата на 0 и 255. Когато даден пин бъде зареден със стойност 255 той се изключва при стойност 0 пина се включва. За да може да се зареждат пиновете със стойности е използван серийния порт. Специален софтуер предава стойност  по серийния порт, Arduino платформата я прочита и я сравнява с неговите заложени стойности и изпълнява даденото действие.
 
  
1.
 
1.1.
 
1.2.
 
1.3.  Arduino Source code
 
int message = 0;
 
 
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 30:
 
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 40:
 
int h = 0;
 
int h = 0;
  
 
+
//Инициализация
 
void setup()  
 
void setup()  
 
{   
 
{   
Line 73: Line 62:
 
}
 
}
  
 +
//Основен цикъл
 
void loop()
 
void loop()
 
{     
 
{     

Revision as of 07:55, 30 October 2012

Цел на проекта

Запознаване с възможностите на [www.arduino.cc/ Arduino] платформа.

Формализация на задачата

Управление на група релета през сериен порт (емулиран от Ардуино USB контролера).

За целта ще бъде разработен алгоритъм следящ постъпващите данни на серийния порт на ардуино платформата. При съответна дума ще бъде променяно състоянието на релетата.

Error creating thumbnail: File with dimensions greater than 12.5 MP


Разработване на програмата

Алгоритъм

Алгоритъмът на работа на програмата е реализиран на базата на 0 и 255. Когато даден пин бъде зареден със стойност 255 той се изключва, а при стойност 0 пина се включва. Arduino платформата следи състояние на серийния порт, при пристигане на стойност се, тя се сравнява заложени стойности и се изпълнява даденото действие.

Arduino Source code

/* Автор:

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;
               }

} }