Arduino. Передача строки через COM-порт

Для передачи строки через RS232 на arduino, нужно воспользоваться вот таким не хитрым кодом, я хотел написать его сам, но зачем изобретать велосипед коли за меня его уже изобрели, правда я из него повыкидывал немного  ненужного.

char inData[20]; // Кол-во символов
char inChar=-1;
byte index = 0;
int ledPin = 13; //Выходной контакт

void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);

}

char Comp(char* This){

while(Serial.available() > 0)
{
if(index < 19)
{
inChar = Serial.read(); // Считываем символы
inData[index] = inChar; // Храним в массиве
index++; // Увеличиваем индекс на 1
inData[index] = '\0'; // Null в конец строки
}
}

if(strcmp(inData,This)  == 0){
for(int i=0;i<19;i++){
inData[i]=0;
}
index=0;
return(0);

}
else{
return(1);

}
}

void loop()
{
if(Comp("on")==0){
digitalWrite(ledPin, HIGH); //Включить светодиод
}
if(Comp("off")==0){
digitalWrite(ledPin, LOW); // Выключить светодиод
}
delay(100);
}

 

После того как вы посылаете on через COM-порт на arduino загорается светодиод на 13 выходе, если off естественно он выключается.

Теги: , ,

Дата: 25 декабря 2011

Автор: ignusius

Комментарии: 4

Комментарии: 4

  1. А если ввести что-то другое то алгоритм перестаёт работать и реагировать на команды.

  2. как решить эту проблему?помогите если не трудно?

  3. Вот так:
    void loop()
    {
    if(Comp("on")==0){
    digitalWrite(ledPin, HIGH); //Включить светодиод
    Serial.println("ON");
    }
    else if(Comp("off")==0){
    digitalWrite(ledPin, LOW); // Выключить светодиод
    Serial.println("OFF");
    }
    else {index = 0;}
    delay(100);
    }

Оставить комментарий

*

Комментарий:

Ваш e-mail не будет опубликован.
Обязательные поля помечены *

Разрешенные HTML теги:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>