2013-10-04 2 views
1

Я пытаюсь контролировать Arduino от NodeJS.Управление Arduino от NodeJS

Я уже пробовал Duino, я понял, что устройство готово, и отладчик показывает, что команды были отправлены succssesfuly в Arduino, но ничего не происходит.

Я также попытался Джонни Пять, это показывает, что устройство подключено (на COM8), Но on ready событие никогда не увольняют.

Помогите пожалуйста! Спасибо ..

ответ

3

Я, возможно, помогу вам быть, вы должны быть немного более конкретными о том, что вы действительно хотите сделать?

Вы хотите прочитать данные? Вы хотите дистанционно управлять им?

EDIT: Я также использовать узел для управления Arduino, но я не использую Дуино, ни Джонни пять, потому что не вписывается в мой проект.

Вместо этого я сделал свой собственный протокол связи между моим компьютером и моим роботом.

На Arduino код прост. Он проверяет, доступен ли серийный номер, и если да, читает и сохраняет буфер. Использование switch или if/else я тогда выбрать действие, я хочу, чтобы мой робот для выполнения (двигаться вперед, двигаться назад, мерцание привело и т.д.)

Связь производится путем отправки bytes и не читаемых действий человека. Итак, первое, что вам нужно сделать, это представить небольшой интерфейс между ними. Bytes полезны, потому что на стороне Arduino вам не понадобится конвертация, и они отлично работают с switch, в то время как строки не имеют значения.

На Arduino стороне, вы будете иметь что-то вроде этого: (обратите внимание, что вам нужно объявить DATA_HEADER где-то)

void readCommands(){ 
    while(Serial.available() > 0){ 

     // Read first byte of stream. 
     uint8_t numberOfActions; 
     uint8_t recievedByte = Serial.read(); 

     // If first byte is equal to dataHeader, lets do 
     if(recievedByte == DATA_HEADER){ 
      delay(10); 

      // Get the number of actions to execute 
      numberOfActions = Serial.read(); 

      delay(10); 

      // Execute each actions 
      for (uint8_t i = 0 ; i < numberOfActions ; i++){ 

       // Get action type 
       actionType = Serial.read(); 

       if(actionType == 0x01){ 
        // do you first action 
       } 
       else if(actionType == 0x02{ 
        // do your second action 
       } 
       else if(actionType == 0x03){ 
        // do your third action 
       } 
      } 
     } 
    } 
} 

На стороне узла, вы будете иметь что-то вроде этого: (проверьте serialport github для получения дополнительной информации)

var dataHeader = 0x0f, //beginning of the data stream, very useful if you intend to send a batch of actions 
myFirstAction = 0x01, 
mySecondAction = 0x02, 
myThirdAction = 0x03; 

sendCmdToArduino = function() { 
    sp.write(Buffer([dataHeader])); 

    sp.write(Buffer([0x03])); // this is the number of actions for the Arduino code 

    sp.write(Buffer([myFirstAction])); 
    sp.write(Buffer([mySecondAction])); 
    sp.write(Buffer([myThirdAction])); 
} 

Надеется, что это помогает!

+0

Я просто пытаюсь заставить привести мигать или даже уйти или на .. просто что-нибудь .. – HasanAboShally

+0

помогите пожалуйста .. спасибо :) – HasanAboShally

Смежные вопросы